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.
- checksums.yaml +7 -0
- data/.gitignore +8 -0
- data/.rspec +1 -2
- data/Gemfile +3 -22
- data/Gemfile.lock +33 -107
- data/README.rdoc +35 -61
- data/Rakefile +10 -36
- data/lib/trackerific/configuration.rb +3 -46
- data/lib/trackerific/details.rb +2 -71
- data/lib/trackerific/event.rb +5 -49
- data/lib/trackerific/services/base.rb +45 -0
- data/lib/trackerific/services/fedex.rb +75 -85
- data/lib/trackerific/services/mock_service.rb +43 -54
- data/lib/trackerific/services/ups.rb +94 -103
- data/lib/trackerific/services/usps.rb +182 -186
- data/lib/trackerific/services.rb +41 -0
- data/lib/trackerific/version.rb +3 -0
- data/lib/trackerific.rb +30 -73
- data/spec/fixtures/{fedex_error_response.xml → fedex/error.xml} +0 -0
- data/spec/fixtures/{fedex_success_response.xml → fedex/success.xml} +0 -0
- data/spec/fixtures/{ups_error_response.xml → ups/error.xml} +0 -0
- data/spec/fixtures/{ups_success_response.xml → ups/success.xml} +0 -0
- data/spec/fixtures/{usps_city_state_lookup_response.xml → usps/city_state_lookup.xml} +0 -0
- data/spec/fixtures/{usps_error_response.xml → usps/error.xml} +0 -0
- data/spec/fixtures/{usps_success_response.xml → usps/success.xml} +0 -0
- data/spec/lib/trackerific/configuration_spec.rb +8 -39
- data/spec/lib/trackerific/details_spec.rb +13 -78
- data/spec/lib/trackerific/error_spec.rb +1 -5
- data/spec/lib/trackerific/event_spec.rb +14 -43
- data/spec/lib/trackerific/services/base_spec.rb +13 -0
- data/spec/lib/trackerific/services/fedex_spec.rb +59 -62
- data/spec/lib/trackerific/services/mock_service_spec.rb +33 -46
- data/spec/lib/trackerific/services/ups_spec.rb +46 -66
- data/spec/lib/trackerific/services/usps_spec.rb +80 -94
- data/spec/lib/trackerific/services_spec.rb +37 -0
- data/spec/lib/trackerific/version_spec.rb +5 -0
- data/spec/lib/trackerific_spec.rb +15 -53
- data/spec/spec_helper.rb +2 -9
- data/spec/support/fixtures.rb +4 -18
- data/spec/support/test_services.rb +23 -0
- data/trackerific.gemspec +24 -102
- metadata +151 -185
- data/VERSION +0 -1
- data/changelog +0 -9
- data/examples/custom_service_spec.rb +0 -44
- data/lib/helpers/options_helper.rb +0 -23
- data/lib/trackerific/service.rb +0 -100
- data/spec/lib/helpers/options_helper_spec.rb +0 -82
- data/spec/lib/trackerific/service_spec.rb +0 -44
- 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
|
-
|
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
|
-
|
18
|
-
|
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:
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
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:
|
50
|
-
|
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:
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
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:
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
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:
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
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:
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
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:
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
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:
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
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:
|
155
|
-
|
156
|
-
|
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
|
-
|
162
|
-
-
|
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/
|
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
|
-
-
|
186
|
-
- spec/fixtures/
|
187
|
-
- spec/fixtures/
|
188
|
-
- spec/fixtures/
|
189
|
-
- spec/fixtures/
|
190
|
-
- spec/fixtures/
|
191
|
-
- spec/fixtures/
|
192
|
-
- spec/
|
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/
|
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/
|
159
|
+
- spec/support/test_services.rb
|
206
160
|
- trackerific.gemspec
|
207
|
-
|
208
|
-
|
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
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
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
|
-
|
236
|
-
rubygems_version: 1.3.7
|
180
|
+
rubyforge_project:
|
181
|
+
rubygems_version: 2.0.3
|
237
182
|
signing_key:
|
238
|
-
specification_version:
|
239
|
-
summary:
|
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
|
data/lib/trackerific/service.rb
DELETED
@@ -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
|