Continuing work on subjects and users views and controllers
This commit is contained in:
parent
f30855eb74
commit
dceca868a9
20 changed files with 151 additions and 39 deletions
29
.idea/Debats.iml
generated
29
.idea/Debats.iml
generated
|
|
@ -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
2
.idea/dataSources.ids
generated
|
|
@ -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
2
.idea/dataSources.xml
generated
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -6,3 +6,9 @@ img.subject-main-image {
|
|||
p.subject-presentation-text {
|
||||
|
||||
}
|
||||
|
||||
div.subjects-index {
|
||||
img.subject-main-image {
|
||||
clear: both;
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
8
app/views/subjects/index.html.erb
Normal file
8
app/views/subjects/index.html.erb
Normal 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>
|
||||
|
|
@ -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>
|
||||
4
app/views/subjects/show.html.erb
Normal file
4
app/views/subjects/show.html.erb
Normal 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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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' %>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
13
test/fixtures/subjects.yml
vendored
13
test/fixtures/subjects.yml
vendored
|
|
@ -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.
|
||||
22
test/integration/users_signup_test.rb
Normal file
22
test/integration/users_signup_test.rb
Normal 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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue