From 519310ac5f9b207756a4d07e78d1aab41b539f53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorsten=20B=C3=B6ttger?= Date: Tue, 4 Mar 2014 23:43:41 +0100 Subject: [PATCH] tmp --- .../persistence/active_record_persistence.rb | 1 + spec/models/validator.rb | 22 ++++++++++++++++++- .../active_record_persistence_spec.rb | 8 ++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/lib/aasm/persistence/active_record_persistence.rb b/lib/aasm/persistence/active_record_persistence.rb index 70cbf74..c5220cf 100644 --- a/lib/aasm/persistence/active_record_persistence.rb +++ b/lib/aasm/persistence/active_record_persistence.rb @@ -138,6 +138,7 @@ module AASM end def aasm_fire_event(name, options, *args, &block) + puts "------- aasm_fire_event" success = self.class.transaction(:requires_new => requires_new?) do super end diff --git a/spec/models/validator.rb b/spec/models/validator.rb index 3c82695..96cc63a 100644 --- a/spec/models/validator.rb +++ b/spec/models/validator.rb @@ -3,7 +3,7 @@ require 'active_record' class Validator < ActiveRecord::Base include AASM aasm :column => :status do - state :sleeping, :initial => true + state :sleeping, :after_commit => :yawn, :initial => true state :running, :after_commit => :change_name! state :failed, :after_enter => :fail, :after_commit => :change_name! event :run do @@ -23,7 +23,27 @@ class Validator < ActiveRecord::Base save! end + def yawn + # well, yawn + end + def fail raise StandardError.new('failed on purpose') end end + + aasm do + state :sleeping, :initial => true + state :running + state :failed, :after_enter => :fail + + event :run, :after_commit => :change_name! do + transitions :to => :running, :from => :sleeping + end + event :sleep, :after_commit => :yawn do + transitions :to => :sleeping, :from => :running + end + event :fail do + transitions :to => :failed, :from => [:sleeping, :running] + end + end diff --git a/spec/unit/persistence/active_record_persistence_spec.rb b/spec/unit/persistence/active_record_persistence_spec.rb index 83de287..6421c0b 100644 --- a/spec/unit/persistence/active_record_persistence_spec.rb +++ b/spec/unit/persistence/active_record_persistence_spec.rb @@ -203,6 +203,13 @@ describe 'transitions with persistence' do end describe "after_commit callback" do + it "should fire :after_commit on initial create" do + validator = Validator.new(:name => "name") + expect(validator).to receive(:yawn).once + validator.save! + expect(validator).to be_sleeping + end + it "should fire :after_commit if transaction was successful" do validator = Validator.create(:name => 'name') expect(validator).to be_sleeping @@ -216,7 +223,6 @@ describe 'transitions with persistence' do expect { validator.fail! }.to raise_error(StandardError, 'failed on purpose') expect(validator.name).to eq("name") end - end end end