aasm 2.3.1 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,43 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler'
3
- begin
4
- Bundler.setup(:default, :development)
5
- rescue Bundler::BundlerError => e
6
- $stderr.puts e.message
7
- $stderr.puts "Run `bundle install` to install missing gems"
8
- exit e.status_code
9
- end
10
-
11
- require 'ostruct'
12
- require 'rubygems'
13
-
14
- begin
15
- gem 'minitest'
16
- rescue Gem::LoadError
17
- puts 'minitest gem not found'
18
- end
19
-
20
- begin
21
- require 'minitest/autorun'
22
- puts 'using minitest'
23
- rescue LoadError
24
- require 'test/unit'
25
- puts 'using test/unit'
26
- end
27
-
28
- require 'rr'
29
- require 'shoulda'
30
-
31
- class Test::Unit::TestCase
32
- include RR::Adapters::TestUnit
33
- end
34
-
35
- begin
36
- require 'ruby-debug'; Debugger.settings[:autoeval] = true; debugger; rubys_debugger = 'annoying'
37
- require 'ruby-debug/completion'
38
- rescue LoadError
39
- end
40
-
41
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
42
- $LOAD_PATH.unshift(File.dirname(__FILE__))
43
- require 'aasm'
File without changes
@@ -1,54 +0,0 @@
1
- require 'test_helper'
2
-
3
- class EventTest < Test::Unit::TestCase
4
- def new_event
5
- @event = AASM::SupportingClasses::Event.new(@name, {:success => @success}) do
6
- transitions :to => :closed, :from => [:open, :received]
7
- end
8
- end
9
-
10
- context 'event' do
11
- setup do
12
- @name = :close_order
13
- @success = :success_callback
14
- end
15
-
16
- should 'set the name' do
17
- assert_equal @name, new_event.name
18
- end
19
-
20
- should 'set the success option' do
21
- assert_equal @success, new_event.success
22
- end
23
-
24
- should 'create StateTransitions' do
25
- mock(AASM::SupportingClasses::StateTransition).new({:to => :closed, :from => :open})
26
- mock(AASM::SupportingClasses::StateTransition).new({:to => :closed, :from => :received})
27
- new_event
28
- end
29
-
30
- context 'when firing' do
31
- should 'raise an AASM::InvalidTransition error if the transitions are empty' do
32
- event = AASM::SupportingClasses::Event.new(:event)
33
-
34
- obj = OpenStruct.new
35
- obj.aasm_current_state = :open
36
-
37
- assert_raise AASM::InvalidTransition do
38
- event.fire(obj)
39
- end
40
- end
41
-
42
- should 'return the state of the first matching transition it finds' do
43
- event = AASM::SupportingClasses::Event.new(:event) do
44
- transitions :to => :closed, :from => [:open, :received]
45
- end
46
-
47
- obj = OpenStruct.new
48
- obj.aasm_current_state = :open
49
-
50
- assert_equal :closed, event.fire(obj)
51
- end
52
- end
53
- end
54
- end
@@ -1,37 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
-
3
- class StateMachineTest < Test::Unit::TestCase
4
-
5
- context "state machines" do
6
-
7
- should "be created without memory leak" do
8
- assert_equal 1, AASM::StateMachine.instance_variable_get("@machines").size # AuthMachine
9
- assert_number_of_objects AASM::SupportingClasses::State, 5 # AuthMachine
10
- assert_number_of_objects AASM::SupportingClasses::Event, 11 # AuthMachine
11
- assert_number_of_objects AASM::SupportingClasses::StateTransition, 19 # AuthMachine
12
-
13
- load File.expand_path(File.dirname(__FILE__) + '/../models/process.rb')
14
- assert_equal 2, AASM::StateMachine.instance_variable_get("@machines").size # AuthMachine + Process
15
- assert_number_of_objects Models::Process, 0
16
- assert_number_of_objects AASM::SupportingClasses::State, 8 # AuthMachine + Process
17
- assert_number_of_objects AASM::SupportingClasses::Event, 13 # AuthMachine + Process
18
- assert_number_of_objects AASM::SupportingClasses::StateTransition, 21 # AuthMachine + Process
19
-
20
- Models.send(:remove_const, "Process") if Models.const_defined?("Process")
21
- load File.expand_path(File.dirname(__FILE__) + '/../models/process.rb')
22
- assert_equal 2, AASM::StateMachine.instance_variable_get("@machines").size # AuthMachine + Process
23
- assert_number_of_objects AASM::SupportingClasses::State, 8 # AuthMachine + Process
24
- assert_number_of_objects AASM::SupportingClasses::Event, 13 # AuthMachine + Process
25
- assert_number_of_objects AASM::SupportingClasses::StateTransition, 21 # AuthMachine + Process
26
- end
27
-
28
- end
29
-
30
- private
31
-
32
- def assert_number_of_objects(clazz, num)
33
- count = ObjectSpace.each_object(clazz) {}
34
- assert_equal num, count, "#{num} expected, but we had #{count} #{clazz}"
35
- end
36
-
37
- end
@@ -1,69 +0,0 @@
1
- require 'test_helper'
2
-
3
- class StateTest < Test::Unit::TestCase
4
- def new_state(options={})
5
- AASM::SupportingClasses::State.new(@name, @options.merge(options))
6
- end
7
-
8
- context 'state' do
9
- setup do
10
- @name = :astate
11
- @options = { :crazy_custom_key => 'key' }
12
- end
13
-
14
- should 'set the name' do
15
- assert_equal :astate, new_state.name
16
- end
17
-
18
- should 'set the display_name from name' do
19
- assert_equal "Astate", new_state.display_name
20
- end
21
-
22
- should 'set the display_name from options' do
23
- assert_equal "A State", new_state(:display => "A State").display_name
24
- end
25
-
26
- should 'set the options and expose them as options' do
27
- assert_equal @options, new_state.options
28
- end
29
-
30
- should 'equal a symbol of the same name' do
31
- assert_equal new_state, :astate
32
- end
33
-
34
- should 'equal a state of the same name' do
35
- assert_equal new_state, new_state
36
- end
37
-
38
- should 'send a message to the record for an action if the action is present as a symbol' do
39
- state = new_state(:entering => :foo)
40
- mock(record = Object.new).foo
41
- state.call_action(:entering, record)
42
- end
43
-
44
- should 'send a message to the record for an action if the action is present as a string' do
45
- state = new_state(:entering => 'foo')
46
- mock(record = Object.new).foo
47
- state.call_action(:entering, record)
48
- end
49
-
50
- should 'call a proc with the record as its argument for an action if the action is present as a proc' do
51
- state = new_state(:entering => Proc.new {|r| r.foobar})
52
- mock(record = Object.new).foobar
53
- state.call_action(:entering, record)
54
- end
55
-
56
- should 'send a message to the record for each action if the action is present as an array' do
57
- state = new_state(:entering => [:a, :b, 'c', lambda {|r| r.foobar}])
58
-
59
- record = Object.new
60
- mock(record).a
61
- mock(record).b
62
- mock(record).c
63
- mock(record).foobar
64
-
65
- state.call_action(:entering, record)
66
- end
67
-
68
- end
69
- end
@@ -1,75 +0,0 @@
1
- require 'test_helper'
2
-
3
- class StateTransitionTest < Test::Unit::TestCase
4
- context 'state transition' do
5
- setup do
6
- @opts = {:from => 'foo', :to => 'bar', :guard => 'g'}
7
- @st = AASM::SupportingClasses::StateTransition.new(@opts)
8
- end
9
-
10
- should 'set from, to, and opts attr readers' do
11
- assert_equal @opts[:from], @st.from
12
- assert_equal @opts[:to], @st.to
13
- assert_equal @opts, @st.options
14
- end
15
-
16
- should 'pass equality check if from and to are the same' do
17
- obj = OpenStruct.new
18
- obj.from = @opts[:from]
19
- obj.to = @opts[:to]
20
-
21
- assert_equal @st, obj
22
- end
23
-
24
- should 'fail equality check if from is not the same' do
25
- obj = OpenStruct.new
26
- obj.from = 'blah'
27
- obj.to = @opts[:to]
28
-
29
- assert_not_equal @st, obj
30
- end
31
-
32
- should 'fail equality check if to is not the same' do
33
- obj = OpenStruct.new
34
- obj.from = @opts[:from]
35
- obj.to = 'blah'
36
-
37
- assert_not_equal @st, obj
38
- end
39
-
40
- context 'when performing guard checks' do
41
- should 'return true if there is no guard' do
42
- opts = {:from => 'foo', :to => 'bar'}
43
- st = AASM::SupportingClasses::StateTransition.new(opts)
44
- assert st.perform(nil)
45
- end
46
-
47
- should 'call the method on the object if guard is a symbol' do
48
- opts = {:from => 'foo', :to => 'bar', :guard => :test_guard}
49
- st = AASM::SupportingClasses::StateTransition.new(opts)
50
-
51
- mock(obj = Object.new).test_guard
52
-
53
- st.perform(obj)
54
- end
55
-
56
- should 'call the method on the object if guard is a string' do
57
- opts = {:from => 'foo', :to => 'bar', :guard => 'test_guard'}
58
- st = AASM::SupportingClasses::StateTransition.new(opts)
59
-
60
- mock(obj = Object.new).test_guard
61
-
62
- st.perform(obj)
63
- end
64
-
65
- should 'call the proc passing the object if guard is a proc' do
66
- opts = {:from => 'foo', :to => 'bar', :guard => Proc.new {|o| o.test_guard}}
67
- st = AASM::SupportingClasses::StateTransition.new(opts)
68
-
69
- mock(obj = Object.new).test_guard
70
-
71
- st.perform(obj)
72
- end
73
- end
74
- end
75
- end