class ActiveRecordTest::MachineWithInternationalizationTest
Public Instance Methods
setup()
click to toggle source
# File test/unit/integrations/active_record_test.rb, line 1969 def setup I18n.backend = I18n::Backend::Simple.new # Initialize the backend StateMachine::Machine.new(new_model) I18n.backend.translate(:en, 'activerecord.errors.messages.invalid_transition', :event => 'ignite', :value => 'idling') @model = new_model end
test_should_add_locale_to_beginning_of_load_path()
click to toggle source
# File test/unit/integrations/active_record_test.rb, line 2125 def test_should_add_locale_to_beginning_of_load_path @original_load_path = I18n.load_path I18n.backend = I18n::Backend::Simple.new app_locale = File.dirname(__FILE__) + '/../../files/en.yml' default_locale = File.dirname(__FILE__) + '/../../../lib/state_machine/integrations/active_record/locale.rb' I18n.load_path = [app_locale] StateMachine::Machine.new(@model) assert_equal [default_locale, app_locale].map {|path| File.expand_path(path)}, I18n.load_path.map {|path| File.expand_path(path)} ensure I18n.load_path = @original_load_path end
test_should_allow_customized_error_key()
click to toggle source
# File test/unit/integrations/active_record_test.rb, line 1994 def test_should_allow_customized_error_key I18n.backend.store_translations(:en, { :activerecord => {:errors => {:messages => {:bad_transition => "cannot #{interpolation_key('event')}"}}} }) machine = StateMachine::Machine.new(@model, :messages => {:invalid_transition => :bad_transition}) machine.state :parked, :idling record = @model.new(:state => 'idling') machine.invalidate(record, :state, :invalid_transition, [[:event, 'ignite']]) assert_equal ['State cannot ignite'], record.errors.full_messages end
test_should_allow_customized_error_string()
click to toggle source
# File test/unit/integrations/active_record_test.rb, line 2008 def test_should_allow_customized_error_string machine = StateMachine::Machine.new(@model, :messages => {:invalid_transition => "cannot #{interpolation_key('event')}"}) machine.state :parked, :idling record = @model.new(:state => 'idling') machine.invalidate(record, :state, :invalid_transition, [[:event, 'ignite']]) assert_equal ['State cannot ignite'], record.errors.full_messages end
test_should_allow_customized_event_key_scoped_to_class()
click to toggle source
# File test/unit/integrations/active_record_test.rb, line 2083 def test_should_allow_customized_event_key_scoped_to_class I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:'active_record_test/foo' => {:events => {:park => 'stop'}}}} }) machine = StateMachine::Machine.new(@model) machine.event :park assert_equal 'stop', machine.event(:park).human_name end
test_should_allow_customized_event_key_scoped_to_class_and_machine()
click to toggle source
# File test/unit/integrations/active_record_test.rb, line 2072 def test_should_allow_customized_event_key_scoped_to_class_and_machine I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:'active_record_test/foo' => {:state => {:events => {:park => 'stop'}}}}} }) machine = StateMachine::Machine.new(@model) machine.event :park assert_equal 'stop', machine.event(:park).human_name end
test_should_allow_customized_event_key_scoped_to_machine()
click to toggle source
# File test/unit/integrations/active_record_test.rb, line 2094 def test_should_allow_customized_event_key_scoped_to_machine I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:state => {:events => {:park => 'stop'}}}} }) machine = StateMachine::Machine.new(@model) machine.event :park assert_equal 'stop', machine.event(:park).human_name end
test_should_allow_customized_event_key_unscoped()
click to toggle source
# File test/unit/integrations/active_record_test.rb, line 2105 def test_should_allow_customized_event_key_unscoped I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:events => {:park => 'stop'}}} }) machine = StateMachine::Machine.new(@model) machine.event :park assert_equal 'stop', machine.event(:park).human_name end
test_should_allow_customized_state_key_scoped_to_class()
click to toggle source
# File test/unit/integrations/active_record_test.rb, line 2029 def test_should_allow_customized_state_key_scoped_to_class I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:'active_record_test/foo' => {:states => {:parked => 'shutdown'}}}} }) machine = StateMachine::Machine.new(@model) machine.state :parked assert_equal 'shutdown', machine.state(:parked).human_name end
test_should_allow_customized_state_key_scoped_to_class_and_machine()
click to toggle source
# File test/unit/integrations/active_record_test.rb, line 2018 def test_should_allow_customized_state_key_scoped_to_class_and_machine I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:'active_record_test/foo' => {:state => {:states => {:parked => 'shutdown'}}}}} }) machine = StateMachine::Machine.new(@model) machine.state :parked assert_equal 'shutdown', machine.state(:parked).human_name end
test_should_allow_customized_state_key_scoped_to_machine()
click to toggle source
# File test/unit/integrations/active_record_test.rb, line 2040 def test_should_allow_customized_state_key_scoped_to_machine I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:state => {:states => {:parked => 'shutdown'}}}} }) machine = StateMachine::Machine.new(@model) machine.state :parked assert_equal 'shutdown', machine.state(:parked).human_name end
test_should_allow_customized_state_key_unscoped()
click to toggle source
# File test/unit/integrations/active_record_test.rb, line 2051 def test_should_allow_customized_state_key_unscoped I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:states => {:parked => 'shutdown'}}} }) machine = StateMachine::Machine.new(@model) machine.state :parked assert_equal 'shutdown', machine.state(:parked).human_name end
test_should_only_add_locale_once_in_load_path()
click to toggle source
# File test/unit/integrations/active_record_test.rb, line 2116 def test_should_only_add_locale_once_in_load_path assert_equal 1, I18n.load_path.select {|path| path =~ %r{active_record/locale\.rb$}}.length # Create another ActiveRecord model that will triger the i18n feature new_model assert_equal 1, I18n.load_path.select {|path| path =~ %r{active_record/locale\.rb$}}.length end
test_should_prefer_other_locales_first()
click to toggle source
# File test/unit/integrations/active_record_test.rb, line 2140 def test_should_prefer_other_locales_first @original_load_path = I18n.load_path I18n.backend = I18n::Backend::Simple.new I18n.load_path = [File.dirname(__FILE__) + '/../../files/en.yml'] machine = StateMachine::Machine.new(@model) machine.state :parked, :idling machine.event :ignite record = @model.new(:state => 'idling') machine.invalidate(record, :state, :invalid_transition, [[:event, 'ignite']]) assert_equal ['State cannot transition'], record.errors.full_messages ensure I18n.load_path = @original_load_path end
test_should_support_nil_state_key()
click to toggle source
# File test/unit/integrations/active_record_test.rb, line 2062 def test_should_support_nil_state_key I18n.backend.store_translations(:en, { :activerecord => {:state_machines => {:states => {:nil => 'empty'}}} }) machine = StateMachine::Machine.new(@model) assert_equal 'empty', machine.state(nil).human_name end
test_should_use_defaults()
click to toggle source
# File test/unit/integrations/active_record_test.rb, line 1979 def test_should_use_defaults I18n.backend.store_translations(:en, { :activerecord => {:errors => {:messages => {:invalid_transition => "cannot #{interpolation_key('event')}"}}} }) machine = StateMachine::Machine.new(@model) machine.state :parked, :idling machine.event :ignite record = @model.new(:state => 'idling') machine.invalidate(record, :state, :invalid_transition, [[:event, 'ignite']]) assert_equal ['State cannot ignite'], record.errors.full_messages end