state_pattern 1.3.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. data/README.rdoc +17 -41
  2. data/Rakefile +0 -1
  3. data/examples/rails_2_3_8_button_example/app/models/button/off.rb +1 -1
  4. data/examples/rails_2_3_8_button_example/app/models/button/on.rb +1 -1
  5. data/examples/rails_3_button_example/app/models/button/off.rb +1 -1
  6. data/examples/rails_3_button_example/app/models/button/on.rb +1 -1
  7. data/examples/rails_3_button_example/app/views/buttons/_form.html.erb +21 -0
  8. data/examples/rails_3_button_example/app/views/buttons/edit.html.erb +6 -0
  9. data/examples/rails_3_button_example/app/views/buttons/index.html.erb +23 -0
  10. data/examples/rails_3_button_example/app/views/buttons/new.html.erb +5 -0
  11. data/examples/rails_3_button_example/config/environments/production.rb +49 -0
  12. data/examples/rails_3_button_example/config/environments/test.rb +35 -0
  13. data/examples/rails_3_button_example/public/javascripts/controls.js +965 -0
  14. data/examples/rails_3_button_example/public/javascripts/dragdrop.js +974 -0
  15. data/examples/rails_3_button_example/public/javascripts/effects.js +1123 -0
  16. data/examples/rails_3_button_example/public/robots.txt +5 -0
  17. data/lib/state_pattern.rb +10 -78
  18. data/lib/state_pattern/active_record.rb +2 -2
  19. data/lib/state_pattern/state.rb +8 -4
  20. data/rails/init.rb +0 -1
  21. data/test/hook_test.rb +6 -7
  22. data/test/state_pattern/active_record/active_record_test.rb +2 -3
  23. data/test/state_pattern/active_record/test_helper.rb +2 -1
  24. data/test/state_pattern_test.rb +12 -11
  25. data/test/test_class_creation_helper.rb +0 -11
  26. metadata +24 -9
  27. data/lib/state_pattern/invalid_transition_exception.rb +0 -14
  28. data/test/querying_test.rb +0 -87
  29. data/test/transition_validations_test.rb +0 -55
@@ -1,14 +0,0 @@
1
- module StatePattern
2
- class InvalidTransitionException < RuntimeError
3
- attr_reader :from_module, :to_module, :event
4
- def initialize(from_module, to_module, event)
5
- @from_module = from_module
6
- @to_module = to_module
7
- @event = event
8
- end
9
-
10
- def message
11
- "Event #@event cannot transition from #@from_module to #@to_module"
12
- end
13
- end
14
- end
@@ -1,87 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Querying
4
- class StateBaseBase < StatePattern::State
5
- def common_event
6
- end
7
- end
8
-
9
- class StateBase < StateBaseBase
10
- def another_common_event
11
- end
12
- end
13
-
14
- class On < StateBase
15
- def press
16
- transition_to(Off)
17
- end
18
-
19
- def one_event
20
- end
21
-
22
- def another_event
23
- end
24
-
25
- def enter
26
- end
27
-
28
- def exit
29
- end
30
- private
31
- def not_an_event
32
- end
33
- end
34
-
35
- class Off < StateBase
36
- def press
37
- transition_to(On)
38
- end
39
-
40
- def one_event
41
- end
42
-
43
- def another_event
44
- end
45
- end
46
-
47
- class Button
48
- include StatePattern
49
- set_initial_state On
50
- valid_transitions [On, :press] => Off, [Off, :press] => On
51
- end
52
- end
53
-
54
- Expectations do
55
- expect %w(Querying::Off Querying::On) do
56
- Querying::Button.state_classes.map{|c| c.name}.sort
57
- end
58
-
59
- expect ["another_common_event", "another_event", "common_event", "one_event", "press"] do
60
- Querying::Button.state_methods.map{|s| s.to_s}.sort
61
- end
62
-
63
- expect [:press] do
64
- Querying::Button.state_events
65
- end
66
-
67
- expect true do
68
- Querying::Button.new.on?
69
- end
70
-
71
- expect false do
72
- Querying::Button.new.off?
73
- end
74
-
75
- expect false do
76
- button = Querying::Button.new
77
- button.press
78
- button.on?
79
- end
80
-
81
- expect true do
82
- button = Querying::Button.new
83
- button.press
84
- button.off?
85
- end
86
- end
87
-
@@ -1,55 +0,0 @@
1
- require 'test_helper'
2
-
3
- Expectations do
4
- expect "up" do
5
- with_test_class("Switch", :states => ["Up", "Down", "Middle"], :initial_state => "Middle",
6
- :transitions => {["Up", :push_down] => "Middle",
7
- ["Down", :push_up] => "Middle",
8
- ["Middle", :push_up] => "Up",
9
- ["Middle", :push_down] => "Down"}) do
10
- switch = Switch.new
11
- switch.push_up
12
- end
13
- end
14
-
15
- expect "up" do
16
- with_test_class("Switch", :states => ["Up", "Down", "Middle"], :initial_state => "Middle",
17
- :transitions => {["Up", :push_down] => "Middle",
18
- ["Down", :push_up] => "Middle",
19
- ["Middle", :push_up] => "Up",
20
- ["Middle", :push_down] => "Down"},
21
- :valid_transitions => {["Up", :push_down] => "Middle",
22
- ["Down", :push_up] => "Middle",
23
- ["Middle", :push_up] => "Up",
24
- ["Middle", :push_down] => "Down"}) do
25
- switch = Switch.new
26
- switch.push_up
27
- end
28
- end
29
-
30
- expect StatePattern::InvalidTransitionException do
31
- with_test_class("Switch", :states => ["Up", "Down", "Middle"], :initial_state => "Middle",
32
- :transitions => {["Up", :push_down] => "Middle",
33
- ["Down", :push_up] => "Middle",
34
- ["Middle", :push_up] => "Up",
35
- ["Middle", :push_down] => "Down"},
36
- :valid_transitions => {["Up", :push_down] => "Middle",
37
- ["Down", :push_up] => "Middle",
38
- ["Middle", :push_down] => "Down"}) do
39
- switch = Switch.new
40
- switch.push_up
41
- end
42
- end
43
-
44
- expect StatePattern::InvalidTransitionException do
45
- with_test_class("Switch", :states => ["Up", "Down", "Middle"], :initial_state => "Middle",
46
- :transitions => {["Up", :push_down] => "Middle",
47
- ["Down", :push_up] => "Middle",
48
- ["Middle", :push_up] => "Up",
49
- ["Middle", :push_down] => "Down"},
50
- :valid_transitions => {"Up" => "Middle", "Down" => "Middle", "Middle" => "Down"}) do
51
- switch = Switch.new
52
- switch.push_up
53
- end
54
- end
55
- end