From 4c16813c92eb61f79b2cba9e1ccf8358db8fa04b Mon Sep 17 00:00:00 2001 From: Philipp Fischbeck Date: Mon, 29 Dec 2014 20:28:33 +0100 Subject: [PATCH] Add check whether problem has a translation --- app/controllers/problems_controller.rb | 3 +++ app/models/problem.rb | 5 +++++ app/views/problems/index.html.erb | 9 ++++++++- app/views/problems/untranslated.html.erb | 1 + db/seeds.rb | 4 +++- test/controllers/problems_controller_test.rb | 5 +++++ test/fixtures/problems.yml | 4 ++++ test/models/problem_test.rb | 15 ++++++++++++--- 8 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 app/views/problems/untranslated.html.erb diff --git a/app/controllers/problems_controller.rb b/app/controllers/problems_controller.rb index b341960..4cd4dab 100644 --- a/app/controllers/problems_controller.rb +++ b/app/controllers/problems_controller.rb @@ -6,6 +6,9 @@ class ProblemsController < ApplicationController end def show + unless @problem.is_translated? + render action: "untranslated" + end end private diff --git a/app/models/problem.rb b/app/models/problem.rb index 1405074..a1adcd9 100644 --- a/app/models/problem.rb +++ b/app/models/problem.rb @@ -5,4 +5,9 @@ class Problem < ActiveRecord::Base has_many :translations, inverse_of: :problem self.per_page = 50 + + def is_translated? + !!self.translation + end + end diff --git a/app/views/problems/index.html.erb b/app/views/problems/index.html.erb index 6aa7ecf..48632e2 100644 --- a/app/views/problems/index.html.erb +++ b/app/views/problems/index.html.erb @@ -13,7 +13,14 @@ <% @problems.each do |problem| %> <%= problem.id %> - <%= link_to problem.title, problem %> + + <% if problem.is_translated? %> + <%= link_to problem.title, problem %> + <% else %> + Dieses Problem wurde noch nicht übersetzt. + <% end %> + + <% end %> diff --git a/app/views/problems/untranslated.html.erb b/app/views/problems/untranslated.html.erb new file mode 100644 index 0000000..3f6dcd5 --- /dev/null +++ b/app/views/problems/untranslated.html.erb @@ -0,0 +1 @@ +Dieses Problem wurde noch nicht übersetzt. \ No newline at end of file diff --git a/db/seeds.rb b/db/seeds.rb index ed60ace..9e7aaf9 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -9,7 +9,7 @@ Translation.delete_all Problem.delete_all -for i in 1..103 do +for i in 1..10 do translation = Translation.create( problem_id: i, title: "Problem Nummer #{i}", @@ -17,3 +17,5 @@ for i in 1..103 do ) Problem.create(id: i, translation: translation) end + +Problem.create(id: 11) \ No newline at end of file diff --git a/test/controllers/problems_controller_test.rb b/test/controllers/problems_controller_test.rb index 57a7e39..7f202d3 100644 --- a/test/controllers/problems_controller_test.rb +++ b/test/controllers/problems_controller_test.rb @@ -11,4 +11,9 @@ class ProblemsControllerTest < ActionController::TestCase assert_response :success end + test "should get untranslated problem" do + get :show, id: 3 + assert_response :success + end + end diff --git a/test/fixtures/problems.yml b/test/fixtures/problems.yml index 1914f9b..95b9482 100644 --- a/test/fixtures/problems.yml +++ b/test/fixtures/problems.yml @@ -7,3 +7,7 @@ one: two: id: 2 translation_id: <%= ActiveRecord::FixtureSet.identify(:translation_two) %> + +three: + id: 3 + diff --git a/test/models/problem_test.rb b/test/models/problem_test.rb index 2b9ec4e..0888bd7 100644 --- a/test/models/problem_test.rb +++ b/test/models/problem_test.rb @@ -1,7 +1,16 @@ require 'test_helper' class ProblemTest < ActiveSupport::TestCase - # test "the truth" do - # assert true - # end + test "should save correct problem" do + problem = Problem.new + assert problem.save + end + + test "is_translated? should return false for missing translation" do + assert_not problems(:three).is_translated? + end + + test "is_translated? should return true for existing translation" do + assert problems(:one).is_translated? + end end