From fbb958cb419c932476993f61800ad9586020f8bc Mon Sep 17 00:00:00 2001 From: Philipp Fischbeck Date: Wed, 10 Dec 2014 10:44:10 +0100 Subject: [PATCH] Add presence and uniqueness validations for problem --- app/models/problem.rb | 2 ++ test/controllers/problems_controller_test.rb | 8 ++++-- test/fixtures/problems.yml | 8 +++--- test/models/problem_test.rb | 28 +++++++++++++++++--- 4 files changed, 37 insertions(+), 9 deletions(-) diff --git a/app/models/problem.rb b/app/models/problem.rb index 3a3c932..73e9c39 100644 --- a/app/models/problem.rb +++ b/app/models/problem.rb @@ -1,2 +1,4 @@ class Problem < ActiveRecord::Base + validates :title, :content, presence: true + validates :title, uniqueness: true end diff --git a/test/controllers/problems_controller_test.rb b/test/controllers/problems_controller_test.rb index 32d172d..64d1f2a 100644 --- a/test/controllers/problems_controller_test.rb +++ b/test/controllers/problems_controller_test.rb @@ -3,6 +3,10 @@ require 'test_helper' class ProblemsControllerTest < ActionController::TestCase setup do @problem = problems(:one) + @update = { + title: 'New title', + content: 'This is the new content' + } end test "should get index" do @@ -18,7 +22,7 @@ class ProblemsControllerTest < ActionController::TestCase test "should create problem" do assert_difference('Problem.count') do - post :create, problem: { content: @problem.content, title: @problem.title } + post :create, problem: @update end assert_redirected_to problem_path(assigns(:problem)) @@ -35,7 +39,7 @@ class ProblemsControllerTest < ActionController::TestCase end test "should update problem" do - patch :update, id: @problem, problem: { content: @problem.content, title: @problem.title } + patch :update, id: @problem, problem: @update assert_redirected_to problem_path(assigns(:problem)) end diff --git a/test/fixtures/problems.yml b/test/fixtures/problems.yml index 19db450..0e8e4a7 100644 --- a/test/fixtures/problems.yml +++ b/test/fixtures/problems.yml @@ -1,9 +1,9 @@ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html one: - title: MyString - content: MyText + title: First title + content: The content of the problem two: - title: MyString - content: MyText + title: Second title + content: The content of the second problem diff --git a/test/models/problem_test.rb b/test/models/problem_test.rb index 2b9ec4e..53aa0a1 100644 --- a/test/models/problem_test.rb +++ b/test/models/problem_test.rb @@ -1,7 +1,29 @@ require 'test_helper' class ProblemTest < ActiveSupport::TestCase - # test "the truth" do - # assert true - # end + test "should not save problem without title" do + problem = Problem.new(content: 'This is some content') + assert_not problem.save + end + + test "should not save problem without content" do + problem = Problem.new(title: 'Problem title') + assert_not problem.save + end + + test "should not save problem with duplicate title" do + problem = Problem.new( + title: problems(:one).title, + content: 'This is some content' + ) + assert_not problem.save + end + + test "should save correct problem" do + problem = Problem.new( + title: 'A unique title', + content: 'Some content' + ) + assert problem.save + end end