state_machine 0.9.2 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
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