2013-04-24 12:57:06 +02:00
|
|
|
require 'spec_helper'
|
2015-05-15 22:32:40 +12:00
|
|
|
|
2017-02-10 23:03:19 +11:00
|
|
|
if defined?(ActiveRecord)
|
|
|
|
require 'models/default_state.rb'
|
|
|
|
require 'models/provided_state.rb'
|
|
|
|
require 'models/active_record/persisted_state.rb'
|
|
|
|
require 'models/active_record/provided_and_persisted_state.rb'
|
2013-04-24 12:57:06 +02:00
|
|
|
|
2017-02-10 23:03:19 +11:00
|
|
|
load_schema
|
2013-04-24 12:57:06 +02:00
|
|
|
|
2017-02-10 23:03:19 +11:00
|
|
|
describe "reading the current state" do
|
|
|
|
it "uses the AASM default" do
|
|
|
|
expect(DefaultState.new.aasm.current_state).to eql :alpha
|
|
|
|
end
|
2013-04-24 12:57:06 +02:00
|
|
|
|
2017-02-10 23:03:19 +11:00
|
|
|
it "uses the provided method" do
|
|
|
|
expect(ProvidedState.new.aasm.current_state).to eql :beta
|
|
|
|
end
|
2016-02-18 15:01:52 +08:00
|
|
|
|
|
|
|
it "uses the persistence storage" do
|
2017-02-10 23:03:19 +11:00
|
|
|
expect(PersistedState.new.aasm.current_state).to eql :alpha
|
|
|
|
end
|
2016-02-18 15:01:52 +08:00
|
|
|
|
2017-02-10 23:03:19 +11:00
|
|
|
it "uses the provided method even if persisted" do
|
|
|
|
expect(ProvidedAndPersistedState.new.aasm.current_state).to eql :gamma
|
|
|
|
end
|
|
|
|
|
|
|
|
context "after dup" do
|
|
|
|
it "uses the persistence storage" do
|
|
|
|
source = PersistedState.create!
|
|
|
|
copy = source.dup
|
|
|
|
copy.save!
|
2016-02-18 15:01:52 +08:00
|
|
|
|
2017-02-10 23:03:19 +11:00
|
|
|
copy.release!
|
2016-02-18 15:01:52 +08:00
|
|
|
|
2017-02-10 23:03:19 +11:00
|
|
|
expect(source.aasm_state).to eql 'alpha'
|
|
|
|
expect(source.aasm.current_state).to eql :alpha
|
2016-02-18 15:01:52 +08:00
|
|
|
|
2017-02-10 23:03:19 +11:00
|
|
|
source2 = PersistedState.find(source.id)
|
|
|
|
expect(source2.reload.aasm_state).to eql 'alpha'
|
|
|
|
expect(source2.aasm.current_state).to eql :alpha
|
|
|
|
|
|
|
|
expect(copy.aasm_state).to eql 'beta'
|
|
|
|
expect(copy.aasm.current_state).to eql :beta
|
|
|
|
end
|
2016-02-18 15:01:52 +08:00
|
|
|
end
|
|
|
|
end
|
2013-04-24 13:51:21 +02:00
|
|
|
|
2017-02-10 23:03:19 +11:00
|
|
|
describe "writing and persisting the current state" do
|
|
|
|
it "uses the AASM default" do
|
|
|
|
o = DefaultState.new
|
|
|
|
o.release!
|
|
|
|
expect(o.persisted_store).to be_nil
|
|
|
|
end
|
2013-04-24 13:51:21 +02:00
|
|
|
|
2017-02-10 23:03:19 +11:00
|
|
|
it "uses the provided method" do
|
|
|
|
o = ProvidedState.new
|
|
|
|
o.release!
|
|
|
|
expect(o.persisted_store).to eql :beta
|
|
|
|
end
|
2013-04-24 13:51:21 +02:00
|
|
|
|
2017-02-10 23:03:19 +11:00
|
|
|
it "uses the persistence storage" do
|
|
|
|
o = PersistedState.new
|
|
|
|
o.release!
|
|
|
|
expect(o.persisted_store).to be_nil
|
|
|
|
end
|
2013-04-24 13:51:21 +02:00
|
|
|
|
2017-02-10 23:03:19 +11:00
|
|
|
it "uses the provided method even if persisted" do
|
|
|
|
o = ProvidedAndPersistedState.new
|
|
|
|
o.release!
|
|
|
|
expect(o.persisted_store).to eql :beta
|
|
|
|
end
|
2013-04-24 14:19:02 +02:00
|
|
|
end
|
|
|
|
|
2017-02-10 23:03:19 +11:00
|
|
|
describe "writing the current state without persisting it" do
|
|
|
|
it "uses the AASM default" do
|
|
|
|
o = DefaultState.new
|
|
|
|
o.release
|
|
|
|
expect(o.transient_store).to be_nil
|
|
|
|
end
|
2013-04-24 14:19:02 +02:00
|
|
|
|
2017-02-10 23:03:19 +11:00
|
|
|
it "uses the provided method" do
|
|
|
|
o = ProvidedState.new
|
|
|
|
o.release
|
|
|
|
expect(o.transient_store).to eql :beta
|
|
|
|
end
|
2013-04-24 14:19:02 +02:00
|
|
|
|
2017-02-10 23:03:19 +11:00
|
|
|
it "uses the persistence storage" do
|
|
|
|
o = PersistedState.new
|
|
|
|
o.release
|
|
|
|
expect(o.transient_store).to be_nil
|
|
|
|
end
|
2013-04-24 14:19:02 +02:00
|
|
|
|
2017-02-10 23:03:19 +11:00
|
|
|
it "uses the provided method even if persisted" do
|
|
|
|
o = ProvidedAndPersistedState.new
|
|
|
|
o.release
|
|
|
|
expect(o.transient_store).to eql :beta
|
|
|
|
end
|
2013-04-24 13:51:21 +02:00
|
|
|
end
|
|
|
|
end
|