trackerific 0.6.2 → 0.7.0

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 (50) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.rspec +1 -2
  4. data/Gemfile +3 -22
  5. data/Gemfile.lock +33 -107
  6. data/README.rdoc +35 -61
  7. data/Rakefile +10 -36
  8. data/lib/trackerific/configuration.rb +3 -46
  9. data/lib/trackerific/details.rb +2 -71
  10. data/lib/trackerific/event.rb +5 -49
  11. data/lib/trackerific/services/base.rb +45 -0
  12. data/lib/trackerific/services/fedex.rb +75 -85
  13. data/lib/trackerific/services/mock_service.rb +43 -54
  14. data/lib/trackerific/services/ups.rb +94 -103
  15. data/lib/trackerific/services/usps.rb +182 -186
  16. data/lib/trackerific/services.rb +41 -0
  17. data/lib/trackerific/version.rb +3 -0
  18. data/lib/trackerific.rb +30 -73
  19. data/spec/fixtures/{fedex_error_response.xml → fedex/error.xml} +0 -0
  20. data/spec/fixtures/{fedex_success_response.xml → fedex/success.xml} +0 -0
  21. data/spec/fixtures/{ups_error_response.xml → ups/error.xml} +0 -0
  22. data/spec/fixtures/{ups_success_response.xml → ups/success.xml} +0 -0
  23. data/spec/fixtures/{usps_city_state_lookup_response.xml → usps/city_state_lookup.xml} +0 -0
  24. data/spec/fixtures/{usps_error_response.xml → usps/error.xml} +0 -0
  25. data/spec/fixtures/{usps_success_response.xml → usps/success.xml} +0 -0
  26. data/spec/lib/trackerific/configuration_spec.rb +8 -39
  27. data/spec/lib/trackerific/details_spec.rb +13 -78
  28. data/spec/lib/trackerific/error_spec.rb +1 -5
  29. data/spec/lib/trackerific/event_spec.rb +14 -43
  30. data/spec/lib/trackerific/services/base_spec.rb +13 -0
  31. data/spec/lib/trackerific/services/fedex_spec.rb +59 -62
  32. data/spec/lib/trackerific/services/mock_service_spec.rb +33 -46
  33. data/spec/lib/trackerific/services/ups_spec.rb +46 -66
  34. data/spec/lib/trackerific/services/usps_spec.rb +80 -94
  35. data/spec/lib/trackerific/services_spec.rb +37 -0
  36. data/spec/lib/trackerific/version_spec.rb +5 -0
  37. data/spec/lib/trackerific_spec.rb +15 -53
  38. data/spec/spec_helper.rb +2 -9
  39. data/spec/support/fixtures.rb +4 -18
  40. data/spec/support/test_services.rb +23 -0
  41. data/trackerific.gemspec +24 -102
  42. metadata +151 -185
  43. data/VERSION +0 -1
  44. data/changelog +0 -9
  45. data/examples/custom_service_spec.rb +0 -44
  46. data/lib/helpers/options_helper.rb +0 -23
  47. data/lib/trackerific/service.rb +0 -100
  48. data/spec/lib/helpers/options_helper_spec.rb +0 -82
  49. data/spec/lib/trackerific/service_spec.rb +0 -44
  50. data/spec/support/trackerific.rb +0 -21
metadata CHANGED
@@ -1,241 +1,207 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: trackerific
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 6
8
- - 2
9
- version: 0.6.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.0
10
5
  platform: ruby
11
- authors:
6
+ authors:
12
7
  - Travis Haynes
13
8
  autorequire:
14
9
  bindir: bin
15
10
  cert_chain: []
16
-
17
- date: 2011-06-27 00:00:00 -07:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: rails
22
- requirement: &id001 !ruby/object:Gem::Requirement
23
- none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 3
29
- - 0
30
- - 0
31
- version: 3.0.0
32
- type: :runtime
33
- prerelease: false
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
11
+ date: 2013-10-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
36
14
  name: httparty
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- segments:
43
- - 0
44
- - 7
45
- - 7
46
- version: 0.7.7
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 0.12.0
47
20
  type: :runtime
48
21
  prerelease: false
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 0.12.0
27
+ - !ruby/object:Gem::Dependency
51
28
  name: builder
52
- requirement: &id003 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- segments:
58
- - 2
59
- - 1
60
- - 2
61
- version: 2.1.2
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 3.2.2
62
34
  type: :runtime
63
35
  prerelease: false
64
- version_requirements: *id003
65
- - !ruby/object:Gem::Dependency
66
- name: bundler
67
- requirement: &id004 !ruby/object:Gem::Requirement
68
- none: false
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- segments:
73
- - 1
74
- - 0
75
- - 13
76
- version: 1.0.13
77
- type: :development
78
- prerelease: false
79
- version_requirements: *id004
80
- - !ruby/object:Gem::Dependency
81
- name: jeweler
82
- requirement: &id005 !ruby/object:Gem::Requirement
83
- none: false
84
- requirements:
85
- - - ">="
86
- - !ruby/object:Gem::Version
87
- segments:
88
- - 1
89
- - 5
90
- - 2
91
- version: 1.5.2
92
- type: :development
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 3.2.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
93
49
  prerelease: false
94
- version_requirements: *id005
95
- - !ruby/object:Gem::Dependency
96
- name: yardstick
97
- requirement: &id006 !ruby/object:Gem::Requirement
98
- none: false
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- segments:
103
- - 0
104
- - 4
105
- - 0
106
- version: 0.4.0
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.3.5
107
62
  type: :development
108
63
  prerelease: false
109
- version_requirements: *id006
110
- - !ruby/object:Gem::Dependency
111
- name: rspec-rails
112
- requirement: &id007 !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- segments:
118
- - 2
119
- - 6
120
- - 1
121
- version: 2.6.1
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: 1.3.5
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
122
76
  type: :development
123
77
  prerelease: false
124
- version_requirements: *id007
125
- - !ruby/object:Gem::Dependency
126
- name: rspec_multi_matchers
127
- requirement: &id008 !ruby/object:Gem::Requirement
128
- none: false
129
- requirements:
130
- - - ">="
131
- - !ruby/object:Gem::Version
132
- segments:
133
- - 1
134
- - 1
135
- - 0
136
- version: 1.1.0
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 2.6.0
137
90
  type: :development
138
91
  prerelease: false
139
- version_requirements: *id008
140
- - !ruby/object:Gem::Dependency
141
- name: ruby-debug19
142
- requirement: &id009 !ruby/object:Gem::Requirement
143
- none: false
144
- requirements:
145
- - - ">="
146
- - !ruby/object:Gem::Version
147
- segments:
148
- - 0
149
- - 11
150
- - 6
151
- version: 0.11.6
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 2.6.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: fakeweb
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: 1.3.0
152
104
  type: :development
153
105
  prerelease: false
154
- version_requirements: *id009
155
- description: Package tracking made easy for Rails. Currently supported services include FedEx, UPS, and USPS.
156
- email: travis.j.haynes@gmail.com
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 1.3.0
111
+ description: Package tracking made easy. Currently supported services include FedEx,
112
+ UPS, and USPS.
113
+ email:
114
+ - travis.j.haynes@gmail.com
157
115
  executables: []
158
-
159
116
  extensions: []
160
-
161
- extra_rdoc_files:
162
- - LICENSE.txt
163
- - README.rdoc
164
- files:
117
+ extra_rdoc_files: []
118
+ files:
119
+ - .gitignore
165
120
  - .rspec
166
121
  - Gemfile
167
122
  - Gemfile.lock
168
123
  - LICENSE.txt
169
124
  - README.rdoc
170
125
  - Rakefile
171
- - VERSION
172
- - changelog
173
- - examples/custom_service_spec.rb
174
- - lib/helpers/options_helper.rb
175
126
  - lib/trackerific.rb
176
127
  - lib/trackerific/configuration.rb
177
128
  - lib/trackerific/details.rb
178
129
  - lib/trackerific/error.rb
179
130
  - lib/trackerific/event.rb
180
- - lib/trackerific/service.rb
131
+ - lib/trackerific/services.rb
132
+ - lib/trackerific/services/base.rb
181
133
  - lib/trackerific/services/fedex.rb
182
134
  - lib/trackerific/services/mock_service.rb
183
135
  - lib/trackerific/services/ups.rb
184
136
  - lib/trackerific/services/usps.rb
185
- - spec/fixtures/fedex_error_response.xml
186
- - spec/fixtures/fedex_success_response.xml
187
- - spec/fixtures/ups_error_response.xml
188
- - spec/fixtures/ups_success_response.xml
189
- - spec/fixtures/usps_city_state_lookup_response.xml
190
- - spec/fixtures/usps_error_response.xml
191
- - spec/fixtures/usps_success_response.xml
192
- - spec/lib/helpers/options_helper_spec.rb
137
+ - lib/trackerific/version.rb
138
+ - spec/fixtures/fedex/error.xml
139
+ - spec/fixtures/fedex/success.xml
140
+ - spec/fixtures/ups/error.xml
141
+ - spec/fixtures/ups/success.xml
142
+ - spec/fixtures/usps/city_state_lookup.xml
143
+ - spec/fixtures/usps/error.xml
144
+ - spec/fixtures/usps/success.xml
193
145
  - spec/lib/trackerific/configuration_spec.rb
194
146
  - spec/lib/trackerific/details_spec.rb
195
147
  - spec/lib/trackerific/error_spec.rb
196
148
  - spec/lib/trackerific/event_spec.rb
197
- - spec/lib/trackerific/service_spec.rb
149
+ - spec/lib/trackerific/services/base_spec.rb
198
150
  - spec/lib/trackerific/services/fedex_spec.rb
199
151
  - spec/lib/trackerific/services/mock_service_spec.rb
200
152
  - spec/lib/trackerific/services/ups_spec.rb
201
153
  - spec/lib/trackerific/services/usps_spec.rb
154
+ - spec/lib/trackerific/services_spec.rb
155
+ - spec/lib/trackerific/version_spec.rb
202
156
  - spec/lib/trackerific_spec.rb
203
157
  - spec/spec_helper.rb
204
158
  - spec/support/fixtures.rb
205
- - spec/support/trackerific.rb
159
+ - spec/support/test_services.rb
206
160
  - trackerific.gemspec
207
- has_rdoc: true
208
- homepage: http://github.com/travishaynes/trackerific
209
- licenses:
161
+ homepage: ''
162
+ licenses:
210
163
  - MIT
164
+ metadata: {}
211
165
  post_install_message:
212
166
  rdoc_options: []
213
-
214
- require_paths:
167
+ require_paths:
215
168
  - lib
216
- required_ruby_version: !ruby/object:Gem::Requirement
217
- none: false
218
- requirements:
219
- - - ">="
220
- - !ruby/object:Gem::Version
221
- hash: -1352465954365462278
222
- segments:
223
- - 0
224
- version: "0"
225
- required_rubygems_version: !ruby/object:Gem::Requirement
226
- none: false
227
- requirements:
228
- - - ">="
229
- - !ruby/object:Gem::Version
230
- segments:
231
- - 0
232
- version: "0"
169
+ required_ruby_version: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ required_rubygems_version: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - '>='
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
233
179
  requirements: []
234
-
235
- rubyforge_project: trackerific
236
- rubygems_version: 1.3.7
180
+ rubyforge_project:
181
+ rubygems_version: 2.0.3
237
182
  signing_key:
238
- specification_version: 3
239
- summary: Trackerific provides package tracking to Rails.
240
- test_files: []
241
-
183
+ specification_version: 4
184
+ summary: Package tracking made easy.
185
+ test_files:
186
+ - spec/fixtures/fedex/error.xml
187
+ - spec/fixtures/fedex/success.xml
188
+ - spec/fixtures/ups/error.xml
189
+ - spec/fixtures/ups/success.xml
190
+ - spec/fixtures/usps/city_state_lookup.xml
191
+ - spec/fixtures/usps/error.xml
192
+ - spec/fixtures/usps/success.xml
193
+ - spec/lib/trackerific/configuration_spec.rb
194
+ - spec/lib/trackerific/details_spec.rb
195
+ - spec/lib/trackerific/error_spec.rb
196
+ - spec/lib/trackerific/event_spec.rb
197
+ - spec/lib/trackerific/services/base_spec.rb
198
+ - spec/lib/trackerific/services/fedex_spec.rb
199
+ - spec/lib/trackerific/services/mock_service_spec.rb
200
+ - spec/lib/trackerific/services/ups_spec.rb
201
+ - spec/lib/trackerific/services/usps_spec.rb
202
+ - spec/lib/trackerific/services_spec.rb
203
+ - spec/lib/trackerific/version_spec.rb
204
+ - spec/lib/trackerific_spec.rb
205
+ - spec/spec_helper.rb
206
+ - spec/support/fixtures.rb
207
+ - spec/support/test_services.rb
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.6.2
data/changelog DELETED
@@ -1,9 +0,0 @@
1
- Mon Jun 27 2011 - Travis Haynes <travis.j.haynes@gmail.com>
2
-
3
- * Added support for USPS City / State API for looking up a city and state by
4
- its zipcode.
5
- * Renamed required_options to required_parameters. (Makes much more sense.)
6
- * Added a lot more specs for more code coverage.
7
- * Changed the way that Details and Events are initialized. Using options
8
- instead of parameters.
9
- * Removed doc folder from git, since it is automatically generated with yard
@@ -1,44 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Trackerific::CustomService do
4
- specify("it should descend from Trackerific::Service") {
5
- Trackerific::CustomService.superclass.should be Trackerific::Service
6
- }
7
- describe :track_package do
8
- before do
9
- @valid_package_id = 'valid package id'
10
- @invalid_package_id = 'invalid package id'
11
- @service = Trackerific::CustomService.new :required => 'option'
12
- end
13
- context "with a successful response from the server" do
14
- before(:each) do
15
- @tracking = @service.track_package(@valid_package_id)
16
- end
17
- subject { @tracking }
18
- it("should return a Trackerific::Details") { should be_a Trackerific::Details }
19
- describe :summary do
20
- subject { @tracking.summary }
21
- it { should_not be_empty }
22
- end
23
- end
24
- context "with an error response from the server" do
25
- specify { lambda { @service.track_package(@invalid_package_id) }.should raise_error(Trackerific::Error) }
26
- end
27
- end
28
- describe :required_options do
29
- subject { Trackerific::CustomService.required_options }
30
- it { should include(:required) }
31
- end
32
- describe :valid_options do
33
- it "should include required_options" do
34
- valid = Trackerific::CustomService.valid_options
35
- Trackerific::CustomService.required_options.each do |opt|
36
- valid.should include opt
37
- end
38
- end
39
- end
40
- describe :package_id_matchers do
41
- subject { Trackerific::CustomService.package_id_matchers }
42
- it("should be an Array of Regexp") { should each { |m| m.should be_a Regexp } }
43
- end
44
- end
@@ -1,23 +0,0 @@
1
- # Helper for validating required options
2
- module OptionsHelper
3
- # Validates a list of options against a list of required options
4
- # @param [Array] options list of options to validate
5
- # @param [Array] required list of required options
6
- # @param [Array] valid list of additional valid options
7
- # @return true
8
- # @raise [ArgumentError] if the options do not pass validation
9
- # @api private
10
- def validate_options(options, required = [], valid = [])
11
- options = {} if options.nil?
12
- required = {} if required.nil?
13
- # make sure all the required options exist
14
- required.each do |k|
15
- raise ArgumentError.new("Missing required parameter: #{k}") unless options.has_key?(k)
16
- end
17
- # make sure no invalid options exist
18
- options.each do |k, v|
19
- raise ArgumentError.new("Invalid parameter: #{k}") unless required.include?(k) || valid.include?(k)
20
- end
21
- true
22
- end
23
- end
@@ -1,100 +0,0 @@
1
- module Trackerific
2
- # Base class for Trackerific services
3
- class Service
4
- include OptionsHelper
5
-
6
- # Creates a new instance of Trackerific::Service
7
- # @api private
8
- def initialize(options = {})
9
- validate_options options, self.class.required_parameters, self.class.valid_options
10
- @options = options
11
- end
12
-
13
- # Gets the tracking information for the package from the server
14
- # @param [String] package_id the package identifier
15
- # @return [Trackerific::Details] the tracking details
16
- # @example Override this method in your custom tracking service to implement tracking
17
- # module Trackerific
18
- # class MyTrackingService < Trackerific::Service
19
- # def track_package
20
- # # your tracking code here
21
- # Trackerific::Details.new(
22
- # "summary of tracking events",
23
- # [Trackerific::Event.new(Time.now, "summary", "location")]
24
- # )
25
- # end
26
- # end
27
- # end
28
- # @api semipublic
29
- def track_package(package_id)
30
- @package_id = package_id
31
- end
32
-
33
- class << self
34
-
35
- # An Array of Regexp that matches valid package identifiers for your service
36
- # @example Override this method in your custom tracking service
37
- # module Trackerific
38
- # class MyTrackingService < Service
39
- # def self.package_id_matchers
40
- # [ /^.Z/, /^[HK].{10}$/ ] # matchers for UPS package identifiers
41
- # end
42
- # end
43
- # end
44
- # @return [Array, Regexp] an array of regular expressions
45
- # @api semipublic
46
- def package_id_matchers
47
- nil
48
- end
49
-
50
- # An array of options that are required to create a new instance of this class
51
- # @return [Array] the required parameters
52
- # @example Override this method in your custom tracking service to enforce some options
53
- # module Trackerific
54
- # class MyTrackingService < Service
55
- # def self.required_parameters
56
- # [:all, :these, :are, :required]
57
- # end
58
- # end
59
- # end
60
- # @api semipublic
61
- def required_parameters
62
- []
63
- end
64
-
65
- # An array of valid options used for creating this class
66
- # @return [Array] the valid options
67
- # @example Override this method in your custom tracking service to add options
68
- # module Trackerific
69
- # class MyTrackingService < Service
70
- # def self.valid_options
71
- # # NOTE: make sure to include the required parameters in this list!
72
- # required_parameters + [:some, :more, :options]
73
- # end
74
- # end
75
- # end
76
- # @api semipublic
77
- def valid_options
78
- required_parameters + []
79
- end
80
-
81
- # Provides a humanized string that provides the name of the service
82
- # @return [String] the service name
83
- # @note This defaults to using the class name.
84
- # @example Override this method in your custom tracking service to provide a name
85
- # module Trackerific
86
- # class MyTrackingService < Service
87
- # def self.service_name
88
- # "my custom tracking service"
89
- # end
90
- # end
91
- # end
92
- # @api public
93
- def service_name
94
- self.to_s.split("::")[1]
95
- end
96
-
97
- end
98
-
99
- end
100
- end
@@ -1,82 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe OptionsHelper do
4
- include OptionsHelper
5
-
6
- describe :validate_options do
7
-
8
- context "with all required parameters" do
9
- before do
10
- @required = [:hello, :world]
11
- @options = {:hello => true, :world => true}
12
- end
13
- subject { validate_options(@options, @required) }
14
- it { should be true }
15
- end
16
-
17
- context "with missing required parameters" do
18
- before do
19
- @required = [:hello, :world]
20
- @options = {:hello => true}
21
- end
22
- specify { lambda { validate_options(@options, @required) }.should raise_error(ArgumentError) }
23
- end
24
-
25
- context "with no required parameters" do
26
- before do
27
- @required = []
28
- @options = {}
29
- end
30
- subject { validate_options(@options, @required) }
31
- it { should be true }
32
- end
33
-
34
- context "when required is nil" do
35
- before do
36
- @required = nil
37
- @options = {}
38
- end
39
- subject { validate_options(@options, @required) }
40
- it { should be true }
41
- end
42
-
43
- context "when options is nil" do
44
- before do
45
- @required = []
46
- @options = nil
47
- end
48
- subject { validate_options(@options, @required) }
49
- it { should be true }
50
- end
51
-
52
- context "when required and options are nil" do
53
- before do
54
- @required = nil
55
- @options = nil
56
- end
57
- subject { validate_options(@options, @required) }
58
- it { should be true }
59
- end
60
-
61
- context "with valid options" do
62
- before do
63
- @required = nil
64
- @options = {:valid => true}
65
- @valid = [:valid]
66
- end
67
- subject { validate_options(@options, @required, @valid) }
68
- it { should be true }
69
- end
70
-
71
- context "with invalid options" do
72
- before do
73
- @required = nil
74
- @options = {:invalid => true}
75
- @valid = [:valid]
76
- end
77
- subject { validate_options(@options, @required, @valid) }
78
- specify { lambda { validate_options(@options, @required) }.should raise_error(ArgumentError) }
79
- end
80
- end
81
-
82
- end