state_machine 0.9.2 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. data/CHANGELOG.rdoc +10 -0
  2. data/README.rdoc +8 -0
  3. data/Rakefile +1 -1
  4. data/examples/merb-rest/view_edit.html.erb +2 -2
  5. data/examples/merb-rest/view_index.html.erb +2 -2
  6. data/examples/merb-rest/view_show.html.erb +2 -2
  7. data/examples/rails-rest/view_edit.html.erb +2 -2
  8. data/examples/rails-rest/view_index.html.erb +2 -2
  9. data/examples/rails-rest/view_show.html.erb +2 -2
  10. data/lib/state_machine.rb +34 -0
  11. data/lib/state_machine/event.rb +17 -2
  12. data/lib/state_machine/event_collection.rb +1 -1
  13. data/lib/state_machine/integrations/active_model.rb +39 -15
  14. data/lib/state_machine/integrations/active_model/locale.rb +2 -2
  15. data/lib/state_machine/integrations/active_record.rb +15 -3
  16. data/lib/state_machine/integrations/active_record/locale.rb +16 -0
  17. data/lib/state_machine/integrations/mongo_mapper.rb +16 -2
  18. data/lib/state_machine/machine.rb +53 -10
  19. data/lib/state_machine/machine_collection.rb +1 -1
  20. data/lib/state_machine/state.rb +12 -1
  21. data/lib/state_machine/transition.rb +50 -34
  22. data/test/files/en.yml +9 -0
  23. data/test/{classes → files}/switch.rb +0 -0
  24. data/test/functional/state_machine_test.rb +9 -0
  25. data/test/unit/event_collection_test.rb +5 -7
  26. data/test/unit/event_test.rb +51 -0
  27. data/test/unit/integrations/active_model_test.rb +80 -33
  28. data/test/unit/integrations/active_record_test.rb +89 -30
  29. data/test/unit/integrations/data_mapper_test.rb +25 -1
  30. data/test/unit/integrations/mongo_mapper_test.rb +40 -7
  31. data/test/unit/integrations/sequel_test.rb +25 -1
  32. data/test/unit/machine_collection_test.rb +1 -1
  33. data/test/unit/machine_test.rb +123 -4
  34. data/test/unit/state_test.rb +53 -0
  35. data/test/unit/transition_test.rb +20 -0
  36. metadata +4 -3
@@ -18,6 +18,10 @@ class StateByDefaultTest < Test::Unit::TestCase
18
18
  assert_equal :parked, @state.name
19
19
  end
20
20
 
21
+ def test_should_have_a_human_name
22
+ assert_equal 'parked', @state.human_name
23
+ end
24
+
21
25
  def test_should_use_stringify_the_name_as_the_value
22
26
  assert_equal 'parked', @state.value
23
27
  end
@@ -69,6 +73,11 @@ class StateTest < Test::Unit::TestCase
69
73
  assert_equal matcher, @state.matcher
70
74
  end
71
75
 
76
+ def test_should_allow_changing_human_name
77
+ @state.human_name = 'stopped'
78
+ assert_equal 'stopped', @state.human_name
79
+ end
80
+
72
81
  def test_should_use_pretty_inspect
73
82
  assert_equal '#<StateMachine::State name=:parked value="parked" initial=false context=[]>', @state.inspect
74
83
  end
@@ -89,6 +98,10 @@ class StateWithoutNameTest < Test::Unit::TestCase
89
98
  assert_nil @state.qualified_name
90
99
  end
91
100
 
101
+ def test_should_have_an_empty_human_name
102
+ assert_equal 'nil', @state.human_name
103
+ end
104
+
92
105
  def test_should_have_a_nil_value
93
106
  assert_nil @state.value
94
107
  end
@@ -119,6 +132,10 @@ class StateWithNameTest < Test::Unit::TestCase
119
132
  assert_equal :parked, @state.name
120
133
  end
121
134
 
135
+ def test_should_have_a_human_name
136
+ assert_equal 'parked', @state.human_name
137
+ end
138
+
122
139
  def test_should_use_stringify_the_name_as_the_value
123
140
  assert_equal 'parked', @state.value
124
141
  end
@@ -323,6 +340,42 @@ class StateWithMatcherTest < Test::Unit::TestCase
323
340
  end
324
341
  end
325
342
 
343
+ class StateWithHumanNameTest < Test::Unit::TestCase
344
+ def setup
345
+ @klass = Class.new
346
+ @machine = StateMachine::Machine.new(@klass)
347
+ @state = StateMachine::State.new(@machine, :parked, :human_name => 'stopped')
348
+ end
349
+
350
+ def test_should_use_custom_human_name
351
+ assert_equal 'stopped', @state.human_name
352
+ end
353
+ end
354
+
355
+ class StateWithDynamicHumanNameTest < Test::Unit::TestCase
356
+ def setup
357
+ @klass = Class.new
358
+ @machine = StateMachine::Machine.new(@klass)
359
+ @state = StateMachine::State.new(@machine, :parked, :human_name => lambda {|state, object| ['stopped', object]})
360
+ end
361
+
362
+ def test_should_use_custom_human_name
363
+ human_name, klass = @state.human_name
364
+ assert_equal 'stopped', human_name
365
+ assert_equal @klass, klass
366
+ end
367
+
368
+ def test_should_allow_custom_class_to_be_passed_through
369
+ human_name, klass = @state.human_name(1)
370
+ assert_equal 'stopped', human_name
371
+ assert_equal 1, klass
372
+ end
373
+
374
+ def test_should_not_cache_value
375
+ assert_not_same @state.human_name, @state.human_name
376
+ end
377
+ end
378
+
326
379
  class StateInitialTest < Test::Unit::TestCase
327
380
  def setup
328
381
  @machine = StateMachine::Machine.new(Class.new)
@@ -29,6 +29,10 @@ class TransitionTest < Test::Unit::TestCase
29
29
  assert_equal :ignite, @transition.qualified_event
30
30
  end
31
31
 
32
+ def test_should_have_a_human_event
33
+ assert_equal 'ignite', @transition.human_event
34
+ end
35
+
32
36
  def test_should_have_a_from_value
33
37
  assert_equal 'parked', @transition.from
34
38
  end
@@ -41,6 +45,10 @@ class TransitionTest < Test::Unit::TestCase
41
45
  assert_equal :parked, @transition.qualified_from_name
42
46
  end
43
47
 
48
+ def test_should_have_a_human_from_name
49
+ assert_equal 'parked', @transition.human_from_name
50
+ end
51
+
44
52
  def test_should_have_a_to_value
45
53
  assert_equal 'idling', @transition.to
46
54
  end
@@ -53,6 +61,10 @@ class TransitionTest < Test::Unit::TestCase
53
61
  assert_equal :idling, @transition.qualified_to_name
54
62
  end
55
63
 
64
+ def test_should_have_a_human_to_name
65
+ assert_equal 'idling', @transition.human_to_name
66
+ end
67
+
56
68
  def test_should_have_an_attribute
57
69
  assert_equal :state, @transition.attribute
58
70
  end
@@ -192,6 +204,10 @@ class TransitionWithNamespaceTest < Test::Unit::TestCase
192
204
  assert_equal :alarm_off, @transition.qualified_from_name
193
205
  end
194
206
 
207
+ def test_should_have_a_human_from_name
208
+ assert_equal 'off', @transition.human_from_name
209
+ end
210
+
195
211
  def test_should_have_a_to_name
196
212
  assert_equal :active, @transition.to_name
197
213
  end
@@ -199,6 +215,10 @@ class TransitionWithNamespaceTest < Test::Unit::TestCase
199
215
  def test_should_have_a_qualified_to_name
200
216
  assert_equal :alarm_active, @transition.qualified_to_name
201
217
  end
218
+
219
+ def test_should_have_a_human_to_name
220
+ assert_equal 'active', @transition.human_to_name
221
+ end
202
222
  end
203
223
 
204
224
  class TransitionWithCustomMachineAttributeTest < Test::Unit::TestCase
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: state_machine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.9.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Pfeifer
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-05-24 00:00:00 -04:00
12
+ date: 2010-06-27 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -76,7 +76,8 @@ files:
76
76
  - lib/state_machine/node_collection.rb
77
77
  - lib/state_machine/extensions.rb
78
78
  - lib/state_machine/initializers.rb
79
- - test/classes/switch.rb
79
+ - test/files/en.yml
80
+ - test/files/switch.rb
80
81
  - test/unit/callback_test.rb
81
82
  - test/unit/transition_test.rb
82
83
  - test/unit/machine_test.rb