]> git.openstreetmap.org Git - rails.git/blob - vendor/plugins/globalize2/test/model/active_record/sti_translated_test.rb
14d7d0f95b80e993c5ae19c6b43dbe934d97cebb
[rails.git] / vendor / plugins / globalize2 / test / model / active_record / sti_translated_test.rb
1 require File.join( File.dirname(__FILE__), '..', '..', 'test_helper' )
2 require 'active_record'
3 require 'globalize/model/active_record'
4
5 # Hook up model translation
6 ActiveRecord::Base.send(:include, Globalize::Model::ActiveRecord::Translated)
7
8 # Load Post model
9 require File.join( File.dirname(__FILE__), '..', '..', 'data', 'post' )
10
11 class StiTranslatedTest < ActiveSupport::TestCase
12   def setup
13     I18n.locale = :'en-US'
14     I18n.fallbacks.clear 
15     reset_db! File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'data', 'schema.rb'))
16   end
17   
18   def teardown
19     I18n.fallbacks.clear 
20   end
21
22   test "works with simple dynamic finders" do
23     foo = Child.create :content => 'foo'
24     Child.create :content => 'bar'
25     child = Child.find_by_content('foo')
26     assert_equal foo, child
27   end
28
29   test 'change attribute on globalized model' do
30     child = Child.create :content => 'foo'
31     assert_equal [], child.changed
32     child.content = 'bar'
33     assert_equal [ 'content' ], child.changed
34     child.content = 'baz'
35     assert_member 'content', child.changed
36   end
37   
38   test 'change attribute on globalized model after locale switching' do
39     child = Child.create :content => 'foo'
40     assert_equal [], child.changed
41     child.content = 'bar'
42     I18n.locale = :de
43     assert_equal [ 'content' ], child.changed
44   end
45
46   test 'fallbacks with lots of locale switching' do
47     I18n.fallbacks.map :'de-DE' => [ :'en-US' ]
48     child = Child.create :content => 'foo'
49     
50     I18n.locale = :'de-DE'
51     assert_equal 'foo', child.content
52     
53     I18n.locale = :'en-US'
54     child.update_attribute :content, 'bar'
55     
56     I18n.locale = :'de-DE'
57     assert_equal 'bar', child.content
58   end
59   
60   test "saves all locales, even after locale switching" do
61     child = Child.new :content => 'foo'
62     I18n.locale = 'de-DE'
63     child.content = 'bar'
64     I18n.locale = 'he-IL'
65     child.content = 'baz'
66     child.save
67     I18n.locale = 'en-US'
68     child = Child.first
69     assert_equal 'foo', child.content 
70     I18n.locale = 'de-DE'
71     assert_equal 'bar', child.content 
72     I18n.locale = 'he-IL'
73     assert_equal 'baz', child.content 
74   end    
75 end