trackerific 0.6.2 → 0.7.0

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