diff --git a/spec/en.yml b/spec/en.yml new file mode 100644 index 0000000..5a1a6e5 --- /dev/null +++ b/spec/en.yml @@ -0,0 +1,10 @@ +en: + activerecord: + events: + i18n_test_model: + close: "Let's close it!" + + attributes: + i18n_test_model: + aasm_state: + open: "It's opened now!" diff --git a/spec/unit/i18n_spec.rb b/spec/unit/i18n_spec.rb new file mode 100644 index 0000000..2ac43d3 --- /dev/null +++ b/spec/unit/i18n_spec.rb @@ -0,0 +1,59 @@ +require 'spec_helper' +require 'active_record' +require 'logger' +require 'i18n' + +ActiveRecord::Base.logger = Logger.new(STDERR) + +class Connection +end + +class I18nTestModel < ActiveRecord::Base + include AASM + + attr_accessor :aasm_state + + aasm_initial_state :open + aasm_state :opened + aasm_state :closed + + aasm_event :close + aasm_event :open +end + +describe AASM::I18n do + before(:all) do + I18n.load_path << 'spec/en.yml' + I18n.default_locale = :en + end + + after(:all) { I18n.load_path.clear } + + before do + connection = mock(Connection, :columns => []) + I18nTestModel.stub!(:connection).and_return(connection) + end + + let (:foo_opened) { I18nTestModel.new } + let (:foo_closed) { I18nTestModel.new.tap {|x| x.aasm_state = :closed } } + + context '.human_state' do + it 'should return translated state value' do + foo_opened.human_state.should == "It's opened now!" + end + + it 'should return humanized value if not localized' do + foo_closed.human_state.should == "Closed" + end + end + + context '.human_event_name' do + it 'should return translated event name' do + I18nTestModel.human_event_name(:close).should == "Let's close it!" + end + + it 'should return humanized event name' do + I18nTestModel.human_event_name(:open).should == "Open" + end + end +end