Continuing work on subjects and users views and controllers

This commit is contained in:
Jalil Arfaoui 2015-03-06 17:32:16 +00:00
parent f30855eb74
commit dceca868a9
20 changed files with 151 additions and 39 deletions

29
.idea/Debats.iml generated
View file

@ -96,6 +96,35 @@
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="LAUNCH_JS" VALUE="false" />
<method />
</configuration>
<configuration default="false" name="All tests in test: Debats" type="TestUnitRunConfigurationType" factoryName="Test::Unit/Shoulda/Minitest" temporary="true">
<predefined_log_file id="RUBY_TESTUNIT" enabled="true" />
<module name="Debats" />
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) -Itest" />
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
<envs>
<env name="RAILS_ENV" value="test" />
<env name="JRUBY_OPTS" value="-X+O" />
</envs>
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="true" />
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov" />
<EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="$MODULE_DIR$/test" />
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/{*_test,test_*}.rb" />
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_METHOD_NAME" VALUE="" />
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="ALL_IN_FOLDER" />
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_OPTIONS" VALUE="" />
<RunnerSettings RunnerId="RubyRunner" />
<ConfigurationWrapper RunnerId="RubyRunner" />
<method />
</configuration>
</component>
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">

2
.idea/dataSources.ids generated
View file

@ -26,6 +26,7 @@
<column name="email" sqlType="VARCHAR" precision="2000000000" scale="10" nullable="true" jdbcType="12"/>
<column name="created_at" sqlType="DATETIME" precision="2000000000" scale="10" nullable="false" jdbcType="12"/>
<column name="updated_at" sqlType="DATETIME" precision="2000000000" scale="10" nullable="false" jdbcType="12"/>
<column name="password_digest" sqlType="VARCHAR" precision="2000000000" scale="10" nullable="true" jdbcType="12"/>
<primary-key columns="id"/>
<index name="index_users_on_email" unique="true" columns="email"/>
</table>
@ -56,6 +57,7 @@
<column name="email" sqlType="VARCHAR" precision="2000000000" scale="10" nullable="true" jdbcType="12"/>
<column name="created_at" sqlType="DATETIME" precision="2000000000" scale="10" nullable="false" jdbcType="12"/>
<column name="updated_at" sqlType="DATETIME" precision="2000000000" scale="10" nullable="false" jdbcType="12"/>
<column name="password_digest" sqlType="VARCHAR" precision="2000000000" scale="10" nullable="true" jdbcType="12"/>
<primary-key columns="id"/>
<index name="index_users_on_email" unique="true" columns="email"/>
</table>

2
.idea/dataSources.xml generated
View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" hash="3653772214">
<component name="DataSourceManagerImpl" format="xml" hash="2374273889">
<data-source source="LOCAL" name="Rails Debats: development" uuid="eae3b6fc-333e-490e-9432-e94dda0ad0f3">
<driver-ref>sqlite.xerial</driver-ref>
<synchronize>true</synchronize>

View file

@ -5,4 +5,10 @@ img.subject-main-image {
p.subject-presentation-text {
}
div.subjects-index {
img.subject-main-image {
clear: both;
}
}

View file

@ -1,7 +1,30 @@
class SubjectsController < ApplicationController
def new
def index
@subjects = Subject.all
end
def view
def show
@subject = Subject.find(params[:id])
end
def new
@subject = Subject.new
end
def create
@subject = Subject.new(subject_params)
if @subject.save
flash[:success] = "Sujet \"#{@subject.title}\" créé ! "
redirect_to @subject
else
render "new"
end
end
private
def subject_params
params.require(:subject).permit(:title, :presentation)
end
end

View file

@ -1,9 +1,5 @@
class UsersController < ApplicationController
def index
end
def show
@user = User.find(params[:id])
end
@ -15,7 +11,8 @@ class UsersController < ApplicationController
def create
@user = User.new(user_params)
if @user.save
# Handle success
flash[:success] = "Bienvenue #{@user.name} ! "
redirect_to @user
else
render "new"
end

View file

@ -3,7 +3,8 @@ class Subject < ActiveRecord::Base
## NAME VALIDATION
validates :title,
presence: true,
length: {maximum: 50}
length: {maximum: 50},
uniqueness: {case_sensitive: false}
## PRESENTATION VALIDATION
validates :presentation,

View file

@ -1,12 +1,12 @@
<header class="navbar navbar-fixed-top navbar-inverse">
<div class="container">
<%= link_to "Debats", root_path, id:"logo" %>
<%= link_to "Débats", root_path, id:"logo" %>
<nav>
<ul class="nav navbar-nav navbar-right">
<li><%= link_to "À propos", a_propos_path %></li>
<li><%= link_to "Sujets", '#' %></li>
<li><%= link_to "Sujets", subjects_path %></li>
<li><%= link_to "Positions", '#' %></li>
<li><%= link_to "Ecrire", '#' %></li>
<li><%= link_to "Ecrire", new_subject_path %></li>
</ul>
</nav>
</div>

View file

@ -10,6 +10,10 @@
<body>
<%= render 'layouts/header' %>
<div class="container">
<!-- Flash Messages -->
<% flash.each do |message_type, message| %>
<div class="alert alert-<%= message_type %>"><%= message %></div>
<% end %>
<div class="main-content">
<%= yield %>
</div>

View file

@ -1,10 +1,10 @@
<% if @user.errors.any? %>
<% if @form_errors.any? %>
<div id="error_explanation">
<div class="alert alert-danger">
Il y a <%= pluralize(@user.errors.count, "erreur") %>
Il y a <%= pluralize(@form_errors.count, "erreur") %>
</div>
<ul>
<% @user.errors.full_messages.each do |msg| %>
<% @form_errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>

View file

@ -11,6 +11,3 @@ Pourquoi Débats.fr ?
<%= link_to "Créer un compte", new_user_path, class: "btn btn-lg btn-primary" %>
</p>
</div>
<p>
Dernier sujet : <%= link_to "L'euthanasie", subjects_view_path %>
</p>

View file

@ -0,0 +1,8 @@
<% provide(:title, "Sujets") %>
<div class="subjects-index" >
<% @subjects.each do |subject| %>
<%= image_tag("subjects/l-euthanasie.png", class:"subject-main-image", alt:"L'euthanasie") %>
<h2 class="subject-title"><%= link_to subject.title, subject %></h2>
<p class="subject-presentation-text"><%= subject.presentation %></p>
<% end %>
</div>

View file

@ -1,2 +1,19 @@
<h1>Subjects#new</h1>
<p>Find me in app/views/subjects/new.html.erb</p>
<% provide(:title, "Nouveau sujet") %>
<h1>Nouveau sujet</h1>
<p>Vous êtes sur la voie du débat.</p>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for(@subject) do |f| %>
<% @form_errors = @subject.errors %>
<%= render "shared/error_messages" %>
<%= f.label :title, "Titre" %>
<%= f.text_field :title, class: 'form-control' %>
<%= f.label :presentation, "Presentation"%>
<%= f.text_area :presentation, class: 'form-control' %>
<%= f.submit "Créer ce sujet", class: "btn btn-primary" %>
<% end %>
</div>
</div>

View file

@ -0,0 +1,4 @@
<% provide(:title, @subject.title ) %>
<h1><%= @subject.title %></h1>
<%= image_tag("subjects/l-euthanasie.png", class:"subject-main-image", alt:"#{@subject.title}") %>
<p class="subject-presentation-text"><%= @subject.presentation %></p>

View file

@ -1,8 +0,0 @@
<% provide(:title, "L'euthanasie") %>
<h1>L'euthanasie</h1>
<%= image_tag("subjects/l-euthanasie.png", class:"subject-main-image", alt:"L'euthanasie") %>
<p class="subject-presentation-text">La majorité des États ne reconnaît pas ou interdit l'euthanasie active
et les autres formes d'aide à la fin de vie, mais dans beaucoup
d'entre eux, notamment en Europe et en Amérique du Nord, il existe
une tolérance implicite ou explicite à l'encontre de ces pratiques,
pour autant qu'elles se déroulent dans un cadre réglementé.</p>

View file

@ -5,6 +5,7 @@
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for(@user) do |f| %>
<% @form_errors = @user.errors %>
<%= render "shared/error_messages" %>
<%= f.label :name, "Nom" %>
<%= f.text_field :name, class: 'form-control' %>

View file

@ -6,13 +6,8 @@ class SubjectsControllerTest < ActionController::TestCase
assert_response :success
end
test "should get view" do
get :view
assert_response :success
end
test "should get list" do
get :list
get :index
assert_response :success
end

View file

@ -1,9 +1,14 @@
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
title: MyString
presentation: MyString
title: L'euthanasie
presentation: La majorité des États ne reconnaît pas ou interdit l'euthanasie active et les autres formes d'aide à la fin de vie, mais dans beaucoup d'entre eux, notamment en Europe et en Amérique du Nord, il existe une tolérance implicite ou explicite à l'encontre de ces pratiques,
pour autant qu'elles se déroulent dans un cadre réglementé.
two:
title: MyString
presentation: MyString
title: La dette européenne
presentation: L'approche communautaire est une approche globale qui va intégrer l'ensemble des administrations publiques et interdit tout transfert entre les administrations publiques.
three:
title: « Je suis Charlie »
presentation: Après seulement quelques minutes, le slogan se répand très rapidement sur les blogs et réseaux sociaux, notamment via Twitter et Facebook ou dans les principaux journaux français comme Le Monde, Libération. Twitter France annonce en fin de journée le 8 janvier 2015 que 3,4 millions de messages de solidarité #JeSuisCharlie ont été publiés dans le monde.

View file

@ -0,0 +1,22 @@
require 'test_helper'
class UsersSignupTest < ActionDispatch::IntegrationTest
test "invalid user should not be created" do
get new_user_path
assert_no_difference "User.count" do
post users_path, user: {name: "", email: "user@invalid", password: "pwd", password_confirmation: "pw"}
end
assert_template "users/new"
end
test "valid user should be created" do
get new_user_path
assert_difference "User.count" do
post_via_redirect users_path, user: {name: "John Doe", email: "john@doe.com", password: "123456789", password_confirmation: "123456789"}
end
assert_response :success
assert_template "users/show"
end
end

View file

@ -3,7 +3,7 @@ require 'test_helper'
class SubjectTest < ActiveSupport::TestCase
def setup
@subject = Subject.new(title: "L'euthanasie", presentation: "Long text here")
@subject = Subject.new(title: "Nouveau sujet", presentation: "Long text here")
end
test "should be valid" do
@ -25,4 +25,13 @@ class SubjectTest < ActiveSupport::TestCase
assert_not @subject.valid?
end
test "title should be unique" do
dup_subject = @subject.dup
dup_subject.title = @subject.title.upcase
@subject.title.downcase!
@subject.save
assert_not dup_subject.valid?
end
end