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" /> <RAILS_SERVER_CONFIG_SETTINGS_ID NAME="LAUNCH_JS" VALUE="false" />
<method /> <method />
</configuration> </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>
<component name="NewModuleRootManager"> <component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$"> <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="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="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="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"/> <primary-key columns="id"/>
<index name="index_users_on_email" unique="true" columns="email"/> <index name="index_users_on_email" unique="true" columns="email"/>
</table> </table>
@ -56,6 +57,7 @@
<column name="email" sqlType="VARCHAR" precision="2000000000" scale="10" nullable="true" jdbcType="12"/> <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="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="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"/> <primary-key columns="id"/>
<index name="index_users_on_email" unique="true" columns="email"/> <index name="index_users_on_email" unique="true" columns="email"/>
</table> </table>

2
.idea/dataSources.xml generated
View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <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"> <data-source source="LOCAL" name="Rails Debats: development" uuid="eae3b6fc-333e-490e-9432-e94dda0ad0f3">
<driver-ref>sqlite.xerial</driver-ref> <driver-ref>sqlite.xerial</driver-ref>
<synchronize>true</synchronize> <synchronize>true</synchronize>

View file

@ -6,3 +6,9 @@ img.subject-main-image {
p.subject-presentation-text { p.subject-presentation-text {
} }
div.subjects-index {
img.subject-main-image {
clear: both;
}
}

View file

@ -1,7 +1,30 @@
class SubjectsController < ApplicationController class SubjectsController < ApplicationController
def new
def index
@subjects = Subject.all
end 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
end end

View file

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

View file

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

View file

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

View file

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

View file

@ -1,10 +1,10 @@
<% if @user.errors.any? %> <% if @form_errors.any? %>
<div id="error_explanation"> <div id="error_explanation">
<div class="alert alert-danger"> <div class="alert alert-danger">
Il y a <%= pluralize(@user.errors.count, "erreur") %> Il y a <%= pluralize(@form_errors.count, "erreur") %>
</div> </div>
<ul> <ul>
<% @user.errors.full_messages.each do |msg| %> <% @form_errors.full_messages.each do |msg| %>
<li><%= msg %></li> <li><%= msg %></li>
<% end %> <% end %>
</ul> </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" %> <%= link_to "Créer un compte", new_user_path, class: "btn btn-lg btn-primary" %>
</p> </p>
</div> </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> <% provide(:title, "Nouveau sujet") %>
<p>Find me in app/views/subjects/new.html.erb</p> <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="row">
<div class="col-md-6 col-md-offset-3"> <div class="col-md-6 col-md-offset-3">
<%= form_for(@user) do |f| %> <%= form_for(@user) do |f| %>
<% @form_errors = @user.errors %>
<%= render "shared/error_messages" %> <%= render "shared/error_messages" %>
<%= f.label :name, "Nom" %> <%= f.label :name, "Nom" %>
<%= f.text_field :name, class: 'form-control' %> <%= f.text_field :name, class: 'form-control' %>

View file

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

View file

@ -1,9 +1,14 @@
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one: one:
title: MyString title: L'euthanasie
presentation: MyString 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: two:
title: MyString title: La dette européenne
presentation: MyString 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 class SubjectTest < ActiveSupport::TestCase
def setup def setup
@subject = Subject.new(title: "L'euthanasie", presentation: "Long text here") @subject = Subject.new(title: "Nouveau sujet", presentation: "Long text here")
end end
test "should be valid" do test "should be valid" do
@ -25,4 +25,13 @@ class SubjectTest < ActiveSupport::TestCase
assert_not @subject.valid? assert_not @subject.valid?
end 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 end