Convert the languages fixtures to a factory
authorAndy Allan <git@gravitystorm.co.uk>
Wed, 26 Oct 2016 12:14:52 +0000 (13:14 +0100)
committerAndy Allan <git@gravitystorm.co.uk>
Wed, 26 Oct 2016 12:14:52 +0000 (13:14 +0100)
For some tests, the existance of an 'en' language is assumed by
the database structure (not null default 'en'::character varying) so
this can be created in a setup block.

test/controllers/diary_entry_controller_test.rb
test/factories/languages.rb [new file with mode: 0644]
test/fixtures/languages.yml [deleted file]
test/models/diary_comment_test.rb
test/models/diary_entry_test.rb
test/models/language_test.rb
test/models/user_test.rb

index 6ab40e1..6e76646 100644 (file)
@@ -1,10 +1,15 @@
 require "test_helper"
 
 class DiaryEntryControllerTest < ActionController::TestCase
-  fixtures :users, :user_roles, :languages
+  fixtures :users, :user_roles
 
   include ActionView::Helpers::NumberHelper
 
+  def setup
+    # Create the default language for diary entries
+    create(:language, :code => "en")
+  end
+
   ##
   # test all routes which lead to this controller
   def test_routes
@@ -162,6 +167,7 @@ class DiaryEntryControllerTest < ActionController::TestCase
     assert_equal new_language_code, UserPreference.where(:user_id => users(:normal_user).id, :k => "diary.default_language").first.v
 
     new_language_code = "de"
+    create(:language, :code => new_language_code)
 
     # Now try creating a diary entry in a different language
     assert_difference "DiaryEntry.count", 1 do
@@ -472,6 +478,8 @@ class DiaryEntryControllerTest < ActionController::TestCase
   end
 
   def test_list_language
+    create(:language, :code => "de")
+    create(:language, :code => "sl")
     diary_entry_en = create(:diary_entry, :language_code => "en")
     diary_entry_en2 = create(:diary_entry, :language_code => "en")
     diary_entry_de = create(:diary_entry, :language_code => "de")
@@ -490,6 +498,7 @@ class DiaryEntryControllerTest < ActionController::TestCase
   end
 
   def test_rss
+    create(:language, :code => "de")
     create(:diary_entry, :language_code => "en")
     create(:diary_entry, :language_code => "en")
     create(:diary_entry, :language_code => "de")
@@ -506,6 +515,7 @@ class DiaryEntryControllerTest < ActionController::TestCase
   end
 
   def test_rss_language
+    create(:language, :code => "de")
     create(:diary_entry, :language_code => "en")
     create(:diary_entry, :language_code => "en")
     create(:diary_entry, :language_code => "de")
@@ -521,6 +531,7 @@ class DiaryEntryControllerTest < ActionController::TestCase
   #  end
 
   def test_rss_language_with_no_entries
+    create(:language, :code => "sl")
     create(:diary_entry, :language_code => "en")
 
     get :rss, :language => "sl", :format => :rss
diff --git a/test/factories/languages.rb b/test/factories/languages.rb
new file mode 100644 (file)
index 0000000..0887c91
--- /dev/null
@@ -0,0 +1,7 @@
+FactoryGirl.define do
+  factory :language do
+    code "en"
+    english_name "English"
+    native_name "English"
+  end
+end
diff --git a/test/fixtures/languages.yml b/test/fixtures/languages.yml
deleted file mode 100644 (file)
index 7f4a18a..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
-
-en:
-  code: en
-  english_name: English
-  native_name: English
-
-de:
-  code: de
-  english_name: German
-  native_name: Deutsch
-
-sl:
-  code: sl
-  english_name: Slovenian
-  native_name: slovenščina
index aeb054a..162cfa8 100644 (file)
@@ -1,7 +1,12 @@
 require "test_helper"
 
 class DiaryCommentTest < ActiveSupport::TestCase
-  fixtures :users, :languages
+  fixtures :users
+
+  def setup
+    # Create the default language for diary entries
+    create(:language, :code => "en")
+  end
 
   test "body must be present" do
     comment = build(:diary_comment, :body => "")
index 958ca40..6c9a754 100644 (file)
@@ -1,7 +1,12 @@
 require "test_helper"
 
 class DiaryEntryTest < ActiveSupport::TestCase
-  fixtures :users, :languages
+  fixtures :users
+
+  def setup
+    # Create the default language for diary entries
+    create(:language, :code => "en")
+  end
 
   def test_diary_entry_validations
     diary_entry_valid({})
index cb4c8c6..9b2ef72 100644 (file)
@@ -2,20 +2,13 @@
 require "test_helper"
 
 class LanguageTest < ActiveSupport::TestCase
-  fixtures :languages
-
-  def test_language_count
-    assert_equal 3, Language.count
-  end
-
   def test_name
-    assert_equal "English (English)", languages(:en).name
-    assert_equal "German (Deutsch)", languages(:de).name
-    assert_equal "Slovenian (slovenščina)", languages(:sl).name
+    create(:language, :code => "sl", :english_name => "Slovenian", :native_name => "slovenščina")
+    assert_equal "Slovenian (slovenščina)", Language.find("sl").name
   end
 
   def test_load
-    assert_equal 3, Language.count
+    assert_equal 0, Language.count
     assert_raise ActiveRecord::RecordNotFound do
       Language.find("zh")
     end
index 275e95d..d480849 100644 (file)
@@ -5,7 +5,7 @@ class UserTest < ActiveSupport::TestCase
   include Rails::Dom::Testing::Assertions::SelectorAssertions
 
   api_fixtures
-  fixtures :languages, :user_roles
+  fixtures :user_roles
 
   def test_invalid_with_empty_attributes
     user = User.new
@@ -191,6 +191,10 @@ class UserTest < ActiveSupport::TestCase
   end
 
   def test_languages
+    create(:language, :code => "en")
+    create(:language, :code => "de")
+    create(:language, :code => "sl")
+
     user = users(:normal_user)
     assert_equal ["en"], user.languages
     user.languages = %w(de fr en)