state_objects 0.0.7 → 0.0.8
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.
- data/.gitignore +1 -0
- data/CHANGELOG.md +3 -0
- data/DOTrvmrc +21 -0
- data/README.md +4 -0
- data/Rakefile +9 -0
- data/lib/state_objects/base.rb +5 -1
- data/lib/state_objects/model_additions.rb +1 -1
- data/lib/state_objects/version.rb +1 -1
- data/state_objects.gemspec +3 -3
- data/test/{state_objects_methods_test.rb → methods_test.rb} +1 -1
- data/test/{state_objects_exeptions_test.rb → missing_event_ex_test.rb} +6 -6
- data/test/state_object_values_class_test.rb +29 -0
- data/test/state_object_values_test.rb +38 -0
- metadata +11 -6
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
data/DOTrvmrc
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
ruby_string="ruby-1.9.3-p194"
|
4
|
+
gemset_name="state-objects"
|
5
|
+
|
6
|
+
if rvm list strings | grep -q "${ruby_string}" ; then
|
7
|
+
|
8
|
+
# Load or create the specified environment
|
9
|
+
if [[ -d "${rvm_path:-$HOME/.rvm}/environments" \
|
10
|
+
&& -s "${rvm_path:-$HOME/.rvm}/environments/${ruby_string}@${gemset_name}" ]] ; then
|
11
|
+
\. "${rvm_path:-$HOME/.rvm}/environments/${ruby_string}@${gemset_name}"
|
12
|
+
else
|
13
|
+
rvm --create "${ruby_string}@${gemset_name}"
|
14
|
+
fi
|
15
|
+
|
16
|
+
else
|
17
|
+
|
18
|
+
# Notify the user to install the desired interpreter before proceeding.
|
19
|
+
echo "${ruby_string} was not found, please run 'rvm install ${ruby_string}' and then cd back into the project directory."
|
20
|
+
|
21
|
+
fi
|
data/README.md
CHANGED
@@ -120,6 +120,7 @@ adds the following INSTANCE METHODS to WalkLight
|
|
120
120
|
|
121
121
|
### Example #4: adding scope with _occurs
|
122
122
|
It's now easy to add scopes with using _occurs, which will generate your where statement for you.
|
123
|
+
|
123
124
|
scope :red, where(WalkLight.color_state_red_occurs ) # => "(color_state ='R')"
|
124
125
|
scope :green, where(WalkLight.color_state_green_occurs ) # => "(color_state ='G')"
|
125
126
|
|
@@ -130,3 +131,6 @@ It's now easy to add scopes with using _occurs, which will generate your where s
|
|
130
131
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
131
132
|
4. Push to the branch (`git push origin my-new-feature`)
|
132
133
|
5. Create new Pull Request
|
134
|
+
|
135
|
+
## Thanks To
|
136
|
+
* Scott Baron - for helping with the unit tests.
|
data/Rakefile
CHANGED
data/lib/state_objects/base.rb
CHANGED
@@ -5,7 +5,11 @@ module StateObjects
|
|
5
5
|
@model = model
|
6
6
|
end
|
7
7
|
|
8
|
-
def self.state_object_values(*opts) # :nodoc:
|
8
|
+
def self.state_object_values(*opts) # :nodoc:
|
9
|
+
unless opts.size == 3
|
10
|
+
raise @model.to_s + "#state_object_values Must have 3 arguments: symbol, db_value, label. For Example: state_object_values :red,'R','Dont Walk'"
|
11
|
+
end
|
12
|
+
|
9
13
|
class_eval <<-EOF
|
10
14
|
def self.symbol
|
11
15
|
'#{opts[0]}'.to_sym
|
@@ -69,7 +69,7 @@ module StateObjects
|
|
69
69
|
opts.each do |option_klass|
|
70
70
|
[:symbol, :label, :db_value].each do |required_method|
|
71
71
|
unless option_klass.respond_to?(required_method)
|
72
|
-
raise "Invalid State class ["+ option_klass.to_s + "]. Must implement a class method named: ##{required_method}.
|
72
|
+
raise "Invalid State class ["+ option_klass.to_s + "]. Must implement a class method named: ##{required_method}. Use #state_object_values to setup StateObject"
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
data/state_objects.gemspec
CHANGED
@@ -20,8 +20,8 @@ Gem::Specification.new do |gem|
|
|
20
20
|
|
21
21
|
# gem.add_development_dependency "supermodel" # TODO
|
22
22
|
# gem.add_development_dependency "activerecord"
|
23
|
-
gem.add_development_dependency
|
24
|
-
gem.add_development_dependency
|
25
|
-
gem.add_runtime_dependency
|
23
|
+
gem.add_development_dependency 'supermodel'
|
24
|
+
gem.add_development_dependency 'rspec-given'
|
25
|
+
gem.add_runtime_dependency 'activerecord'
|
26
26
|
|
27
27
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
## ruby -Itest -Ilib test/
|
1
|
+
## ruby -Itest -Ilib test/missing_event_ex_test.rb
|
2
2
|
require 'test_helper'
|
3
3
|
|
4
4
|
#
|
@@ -9,7 +9,7 @@ class LightGreenState < StateObjects::Base
|
|
9
9
|
state_object_values :green, 'G', 'Walk'
|
10
10
|
end
|
11
11
|
|
12
|
-
class
|
12
|
+
class MissingEventExModelUnderTest < SuperModel::Base
|
13
13
|
extend StateObjects::ModelAdditions
|
14
14
|
state_objects :color_state,
|
15
15
|
LightGreenState
|
@@ -27,15 +27,15 @@ class ModelUnderTest < SuperModel::Base
|
|
27
27
|
|
28
28
|
end
|
29
29
|
|
30
|
-
class
|
30
|
+
class MissingEventExTest < Test::Unit::TestCase
|
31
31
|
def setup
|
32
|
-
@model =
|
32
|
+
@model = MissingEventExModelUnderTest
|
33
33
|
end
|
34
34
|
|
35
35
|
def test_exception_missing_event
|
36
|
-
assert_equal RuntimeError,
|
36
|
+
assert_equal RuntimeError, MissingEventExModelUnderTest.exception_missing_event.class
|
37
37
|
assert_equal "Invalid state class LightGreenState must implement #missing_event",
|
38
|
-
|
38
|
+
MissingEventExModelUnderTest.exception_missing_event.message
|
39
39
|
end
|
40
40
|
|
41
41
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
## ruby -Itest -Ilib test/state_object_values_class_test.rb
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class StateObjectUnderTest < StateObjects::Base
|
5
|
+
|
6
|
+
begin
|
7
|
+
state_object_values :green, 'G'
|
8
|
+
rescue RuntimeError => ex
|
9
|
+
@@ex_incomplete_values = ex
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.ex_incomplete_values
|
13
|
+
@@ex_incomplete_values
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
class StateObjectValuesClassTest < Test::Unit::TestCase
|
19
|
+
def setup
|
20
|
+
@model = StateObjectUnderTest
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_ex_incomplete_values
|
24
|
+
assert_equal RuntimeError, StateObjectUnderTest.ex_incomplete_values.class
|
25
|
+
assert_equal "#state_object_values Must have 3 arguments: symbol, db_value, label. For Example: state_object_values :red,'R','Dont Walk'",
|
26
|
+
StateObjectUnderTest.ex_incomplete_values.message
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
## ruby -Itest -Ilib test/state_object_values_test.rb
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
#
|
5
|
+
# test bad data and exceptions
|
6
|
+
#
|
7
|
+
|
8
|
+
class NoStateObjectValues < StateObjects::Base
|
9
|
+
end
|
10
|
+
|
11
|
+
class ModelUnderTest < SuperModel::Base
|
12
|
+
extend StateObjects::ModelAdditions
|
13
|
+
|
14
|
+
begin
|
15
|
+
state_objects :no_state,
|
16
|
+
NoStateObjectValues
|
17
|
+
rescue RuntimeError => ex
|
18
|
+
@@ex_no_state_values = ex
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.ex_no_state_values
|
22
|
+
@@ex_no_state_values
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
class StateObjectValuesTest < Test::Unit::TestCase
|
28
|
+
def setup
|
29
|
+
@model = ModelUnderTest
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_no_state_values
|
33
|
+
assert_equal RuntimeError, ModelUnderTest.ex_no_state_values.class
|
34
|
+
assert_equal "Invalid State class [NoStateObjectValues]. Must implement a class method named: #symbol. Use #state_object_values to setup StateObject",
|
35
|
+
ModelUnderTest.ex_no_state_values.message
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: state_objects
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: supermodel
|
@@ -70,6 +70,7 @@ extra_rdoc_files: []
|
|
70
70
|
files:
|
71
71
|
- .gitignore
|
72
72
|
- CHANGELOG.md
|
73
|
+
- DOTrvmrc
|
73
74
|
- Gemfile
|
74
75
|
- LICENSE.txt
|
75
76
|
- README.md
|
@@ -79,8 +80,10 @@ files:
|
|
79
80
|
- lib/state_objects/model_additions.rb
|
80
81
|
- lib/state_objects/version.rb
|
81
82
|
- state_objects.gemspec
|
82
|
-
- test/
|
83
|
-
- test/
|
83
|
+
- test/methods_test.rb
|
84
|
+
- test/missing_event_ex_test.rb
|
85
|
+
- test/state_object_values_class_test.rb
|
86
|
+
- test/state_object_values_test.rb
|
84
87
|
- test/test_helper.rb
|
85
88
|
homepage: https://github.com/mwindholtz/state_objects
|
86
89
|
licenses: []
|
@@ -107,6 +110,8 @@ signing_key:
|
|
107
110
|
specification_version: 3
|
108
111
|
summary: ! '''State'' Design Pattern from the Gang of Four book'
|
109
112
|
test_files:
|
110
|
-
- test/
|
111
|
-
- test/
|
113
|
+
- test/methods_test.rb
|
114
|
+
- test/missing_event_ex_test.rb
|
115
|
+
- test/state_object_values_class_test.rb
|
116
|
+
- test/state_object_values_test.rb
|
112
117
|
- test/test_helper.rb
|