Refs [#206] Initialize aasm state after initialize for mongoid

This commit is contained in:
Shweta 2015-02-22 16:43:01 +05:30
parent d43c6a98a0
commit 1c37b50871
3 changed files with 7 additions and 13 deletions

View File

@ -35,11 +35,9 @@ module AASM
base.extend AASM::Persistence::MongoidPersistence::ClassMethods
base.send(:include, AASM::Persistence::MongoidPersistence::InstanceMethods)
# Mongoid's Validatable gem dependency goes not have a before_validation_on_xxx hook yet.
# base.before_validation_on_create :aasm_ensure_initial_state
base.before_validation :aasm_ensure_initial_state
# ensure initial aasm state even when validations are skipped
base.before_create :aasm_ensure_initial_state
base.after_initialize do
aasm_ensure_initial_state
end
end
module ClassMethods

View File

@ -6,7 +6,7 @@ class SimpleNewDslMongoid
aasm :column => :status
aasm do
state :unknown_scope
state :unknown_scope, :initial => true
state :new
end
end

View File

@ -133,15 +133,11 @@ describe 'mongoid' do
describe "instance methods" do
let(:simple) {SimpleNewDslMongoid.new}
it "should call aasm_ensure_initial_state on validation before create" do
expect(simple).to receive(:aasm_ensure_initial_state).and_return(true)
simple.valid?
it "should initialize the aasm state on instantiation" do
expect(SimpleNewDslMongoid.new.status).to eql 'unknown_scope'
expect(SimpleNewDslMongoid.new.aasm.current_state).to eql :unknown_scope
end
it "should call aasm_ensure_initial_state before create, even if skipping validations" do
expect(simple).to receive(:aasm_ensure_initial_state).and_return(true)
simple.save(:validate => false)
end
end
rescue LoadError