trackerific 0.3.5 → 0.4.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.
- data/Gemfile +1 -1
- data/README.rdoc +37 -13
- data/VERSION +1 -1
- data/doc/OptionsHelper.html +287 -0
- data/doc/Trackerific.html +588 -35
- data/doc/Trackerific/Configuration.html +354 -0
- data/doc/Trackerific/Details.html +1 -1
- data/doc/Trackerific/Error.html +1 -1
- data/doc/Trackerific/Event.html +1 -1
- data/doc/Trackerific/FedEx.html +52 -35
- data/doc/Trackerific/{Base.html → Service.html} +54 -49
- data/doc/Trackerific/UPS.html +48 -31
- data/doc/Trackerific/USPS.html +51 -34
- data/doc/_index.html +35 -4
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +42 -15
- data/doc/index.html +42 -15
- data/doc/method_list.html +83 -19
- data/doc/top-level-namespace.html +2 -2
- data/lib/helpers/options_helper.rb +20 -0
- data/lib/trackerific.rb +52 -18
- data/lib/trackerific/configuration.rb +49 -0
- data/lib/trackerific/service.rb +68 -0
- data/lib/trackerific/services/fedex.rb +18 -16
- data/lib/trackerific/services/ups.rb +16 -14
- data/lib/trackerific/services/usps.rb +17 -15
- data/spec/lib/trackerific/configuration_spec.rb +9 -0
- data/spec/lib/trackerific/details_spec.rb +12 -9
- data/spec/lib/trackerific/error_spec.rb +6 -2
- data/spec/lib/trackerific/event_spec.rb +21 -8
- data/spec/lib/trackerific/service_spec.rb +34 -0
- data/spec/lib/trackerific/services/fedex_spec.rb +23 -9
- data/spec/lib/trackerific/services/ups_spec.rb +23 -8
- data/spec/lib/trackerific/services/usps_spec.rb +22 -8
- data/spec/lib/trackerific_spec.rb +29 -7
- data/spec/spec_helper.rb +1 -0
- data/spec/support/fixtures.rb +16 -10
- data/spec/support/trackerific.rb +2 -2
- data/trackerific.gemspec +13 -8
- metadata +30 -25
- data/lib/trackerific/base.rb +0 -70
- data/spec/lib/trackerific/base_spec.rb +0 -34
@@ -1,20 +1,33 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Trackerific::Event do
|
4
|
-
|
4
|
+
|
5
|
+
before do
|
5
6
|
@date = Time.now
|
6
|
-
@
|
7
|
+
@description = "description"
|
8
|
+
@location = "location"
|
9
|
+
@event = Trackerific::Event.new(@date, @description, @location)
|
10
|
+
end
|
11
|
+
|
12
|
+
describe :date do
|
13
|
+
subject { @event.date }
|
14
|
+
it { should be @date }
|
7
15
|
end
|
8
16
|
|
9
|
-
describe
|
10
|
-
|
17
|
+
describe :description do
|
18
|
+
subject { @event.description }
|
19
|
+
it { should be @description }
|
11
20
|
end
|
12
21
|
|
13
|
-
describe
|
14
|
-
|
22
|
+
describe :location do
|
23
|
+
subject { @event.location }
|
24
|
+
it { should be @location }
|
15
25
|
end
|
16
26
|
|
17
|
-
describe
|
18
|
-
|
27
|
+
describe :to_s do
|
28
|
+
before { @regex = /(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (0[1-9]|[1-2][0-9]|3[01]) \d{2}:\d{2} (am|pm).*/ }
|
29
|
+
subject { @event.to_s }
|
30
|
+
it("should be in format mmm dd hh:mm am/pm.*") { should =~ @regex }
|
19
31
|
end
|
32
|
+
|
20
33
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class TestServiceClass < Trackerific::Service
|
4
|
+
def self.required_options
|
5
|
+
[:required, :also_required]
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
describe Trackerific::Service do
|
10
|
+
|
11
|
+
context "with a new Trackerific::Service class that has required options" do
|
12
|
+
|
13
|
+
context "has all the required options" do
|
14
|
+
it "should be able to create a new instance" do
|
15
|
+
t = TestServiceClass.new(:required => true, :also_required => :yup)
|
16
|
+
t.should be_a TestServiceClass
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "is missing some required options" do
|
21
|
+
it "should raise an ArgumentError" do
|
22
|
+
lambda { TestServiceClass.new() }.should raise_error(ArgumentError)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context "has an invalid option" do
|
27
|
+
it "should raise an ArgumentError" do
|
28
|
+
lambda { TestServiceClass.new(:unknown => :argument ) }.should raise_error(ArgumentError)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -13,9 +13,8 @@ describe "Trackerific::FedEx" do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
describe :package_id_matchers do
|
16
|
-
|
17
|
-
|
18
|
-
end
|
16
|
+
subject { Trackerific::FedEx.package_id_matchers }
|
17
|
+
it("should be an Array of Regexp") { should each { |m| m.should be_a Regexp } }
|
19
18
|
end
|
20
19
|
|
21
20
|
describe :track_package do
|
@@ -25,25 +24,40 @@ describe "Trackerific::FedEx" do
|
|
25
24
|
end
|
26
25
|
|
27
26
|
context "with a successful response from the server" do
|
28
|
-
|
27
|
+
|
28
|
+
before(:all) do
|
29
29
|
FakeWeb.register_uri(:post, FEDEX_TRACK_URL, :body => load_fixture(:fedex_success_response))
|
30
|
+
end
|
31
|
+
|
32
|
+
before(:each) do
|
30
33
|
@tracking = @fedex.track_package(@package_id)
|
31
34
|
end
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
+
|
36
|
+
subject { @tracking }
|
37
|
+
it("should return a Trackerific::Details") { should be_a Trackerific::Details }
|
38
|
+
|
39
|
+
describe "events.length" do
|
40
|
+
subject { @tracking.events.length }
|
41
|
+
it { should >= 1}
|
35
42
|
end
|
36
|
-
|
37
|
-
|
43
|
+
|
44
|
+
describe :summary do
|
45
|
+
subject { @tracking.summary }
|
46
|
+
it { should_not be_empty }
|
38
47
|
end
|
48
|
+
|
39
49
|
end
|
40
50
|
|
41
51
|
context "with an error response from the server" do
|
52
|
+
|
42
53
|
before(:all) do
|
43
54
|
FakeWeb.register_uri(:post, FEDEX_TRACK_URL, :body => load_fixture(:fedex_error_response))
|
44
55
|
end
|
56
|
+
|
45
57
|
specify { lambda { @fedex.track_package("invalid package id") }.should raise_error(Trackerific::Error) }
|
58
|
+
|
46
59
|
end
|
60
|
+
|
47
61
|
end
|
48
62
|
|
49
63
|
end
|
@@ -14,9 +14,8 @@ describe "Trackerific::UPS" do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
describe :package_id_matchers do
|
17
|
-
|
18
|
-
|
19
|
-
end
|
17
|
+
subject { Trackerific::UPS.package_id_matchers }
|
18
|
+
it("should be an Array of Regexp") { should each { |m| m.should be_a Regexp } }
|
20
19
|
end
|
21
20
|
|
22
21
|
describe :track_package do
|
@@ -26,24 +25,40 @@ describe "Trackerific::UPS" do
|
|
26
25
|
end
|
27
26
|
|
28
27
|
context "with a successful response from the server" do
|
28
|
+
|
29
29
|
before(:all) do
|
30
30
|
FakeWeb.register_uri(:post, UPS_TRACK_URL, :body => load_fixture(:ups_success_response))
|
31
|
+
end
|
32
|
+
|
33
|
+
before(:each) do
|
31
34
|
@tracking = @ups.track_package(@package_id)
|
32
35
|
end
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
+
|
37
|
+
subject { @tracking }
|
38
|
+
it("should return a Trackerific::Details") { should be_a Trackerific::Details }
|
39
|
+
|
40
|
+
describe "events.length" do
|
41
|
+
subject { @tracking.events.length }
|
42
|
+
it { should >= 1 }
|
36
43
|
end
|
37
|
-
|
38
|
-
|
44
|
+
|
45
|
+
describe :summary do
|
46
|
+
subject { @tracking.summary }
|
47
|
+
it { should_not be_empty }
|
39
48
|
end
|
49
|
+
|
40
50
|
end
|
41
51
|
|
42
52
|
context "with an error response from the server" do
|
53
|
+
|
43
54
|
before(:all) do
|
44
55
|
FakeWeb.register_uri(:post, UPS_TRACK_URL, :body => load_fixture(:ups_error_response))
|
45
56
|
end
|
57
|
+
|
46
58
|
specify { lambda { @ups.track_package("invalid package id") }.should raise_error(Trackerific::Error) }
|
59
|
+
|
47
60
|
end
|
61
|
+
|
48
62
|
end
|
63
|
+
|
49
64
|
end
|
@@ -12,36 +12,50 @@ describe Trackerific::USPS do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
describe :package_id_matchers do
|
15
|
-
|
16
|
-
|
17
|
-
end
|
15
|
+
subject { Trackerific::UPS.package_id_matchers }
|
16
|
+
it("should be an Array of Regexp") { should each { |m| m.should be_a Regexp } }
|
18
17
|
end
|
19
18
|
|
20
19
|
describe :track_package do
|
20
|
+
|
21
21
|
before(:all) do
|
22
22
|
@package_id = 'EJ958083578US'
|
23
23
|
@usps = Trackerific::USPS.new :user_id => '123USERID4567'
|
24
24
|
end
|
25
25
|
|
26
26
|
context "with a successful response from the server" do
|
27
|
+
|
27
28
|
before(:all) do
|
28
29
|
FakeWeb.register_uri(:get, USPS_TRACK_URL, :body => load_fixture(:usps_success_response))
|
30
|
+
end
|
31
|
+
|
32
|
+
before(:each) do
|
29
33
|
@tracking = @usps.track_package(@package_id)
|
30
34
|
end
|
31
|
-
|
32
|
-
|
33
|
-
|
35
|
+
|
36
|
+
subject { @tracking }
|
37
|
+
it("should return a Trackerific::Details") { should be_a Trackerific::Details }
|
38
|
+
|
39
|
+
describe "events.length" do
|
40
|
+
subject { @tracking.events.length }
|
41
|
+
it { should >= 1 }
|
34
42
|
end
|
35
|
-
|
36
|
-
|
43
|
+
|
44
|
+
describe :summary do
|
45
|
+
subject { @tracking.summary }
|
46
|
+
it { should_not be_empty }
|
37
47
|
end
|
48
|
+
|
38
49
|
end
|
39
50
|
|
40
51
|
context "with an error response from the server" do
|
52
|
+
|
41
53
|
before(:all) do
|
42
54
|
FakeWeb.register_uri(:get, USPS_TRACK_URL, :body => load_fixture(:usps_error_response))
|
43
55
|
end
|
56
|
+
|
44
57
|
specify { lambda { @usps.track_package(@package_id) }.should raise_error(Trackerific::Error) }
|
58
|
+
|
45
59
|
end
|
46
60
|
end
|
47
61
|
|
@@ -1,25 +1,47 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe Trackerific do
|
4
4
|
include Trackerific
|
5
5
|
|
6
|
-
describe
|
7
|
-
|
6
|
+
describe :services do
|
7
|
+
subject { Trackerific.services }
|
8
|
+
it("should be an Array of Symbols") { should each { |m| m.should be_a Symbol } }
|
9
|
+
end
|
10
|
+
|
11
|
+
describe :service_get do
|
12
|
+
|
13
|
+
context "with a valid service symbol" do
|
14
|
+
subject { Trackerific.service_get(:fedex).superclass }
|
15
|
+
it("should be a descendant of Trackerific::Service "){ should be Trackerific::Service }
|
16
|
+
end
|
17
|
+
|
18
|
+
context "with an invalid service symbol" do
|
19
|
+
subject { Trackerific.service_get :ksjdfklsjdf }
|
20
|
+
it { should be_nil }
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
describe :tracking_service do
|
8
26
|
|
9
27
|
context "when given a UPS tracking number" do
|
10
|
-
|
28
|
+
subject { tracking_service "1Z12345E0291980793" }
|
29
|
+
it { should be Trackerific::UPS}
|
11
30
|
end
|
12
31
|
|
13
32
|
context "when given a USPS tracking number" do
|
14
|
-
|
33
|
+
subject { tracking_service "EJ958083578US" }
|
34
|
+
it { should be Trackerific::USPS }
|
15
35
|
end
|
16
36
|
|
17
37
|
context "when given a FedEx tracking number" do
|
18
|
-
|
38
|
+
subject { tracking_service "183689015000001" }
|
39
|
+
it { should be Trackerific::FedEx }
|
19
40
|
end
|
20
41
|
|
21
42
|
context "when given an invalid tracking number" do
|
22
|
-
|
43
|
+
subject { tracking_service "invalid tracking number" }
|
44
|
+
it { should be_nil }
|
23
45
|
end
|
24
46
|
|
25
47
|
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/support/fixtures.rb
CHANGED
@@ -1,14 +1,20 @@
|
|
1
|
+
# Provides easy access to XML fixtures
|
1
2
|
module Fixtures
|
2
|
-
|
3
|
+
# Gets the path to the fixtures
|
4
|
+
# @return [String]
|
5
|
+
# @api private
|
6
|
+
def fixture_path
|
7
|
+
File.join(File.dirname(__FILE__), "..", "fixtures")
|
8
|
+
end
|
9
|
+
# Loads a fixture
|
10
|
+
# @param [Symbol] name the fixture to load
|
11
|
+
# @param [Symbol] ext the exention of the fixture. defaults to :xml
|
12
|
+
# @example Load ups_success_response.xml
|
13
|
+
# response = load_fixture :ups_success_response
|
14
|
+
# @return [String] the contents of the file
|
15
|
+
# @api private
|
3
16
|
def load_fixture(name, ext = :xml)
|
4
|
-
|
5
|
-
|
6
|
-
f = File.open(file_name, 'r')
|
7
|
-
data = "";
|
8
|
-
f.lines.each { |line| data += line }
|
9
|
-
f.close
|
10
|
-
return data
|
11
|
-
|
17
|
+
file_name = File.join(fixture_path, "#{name.to_s}.#{ext.to_s}")
|
18
|
+
File.read(file_name)
|
12
19
|
end
|
13
|
-
|
14
20
|
end
|
data/spec/support/trackerific.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# Provides a Rails application environment to use when running the specs.
|
2
|
-
|
3
1
|
require 'rails'
|
4
2
|
|
5
3
|
require "action_controller/railtie"
|
@@ -7,12 +5,14 @@ require "action_mailer/railtie"
|
|
7
5
|
require "active_resource/railtie"
|
8
6
|
|
9
7
|
module Trackerific
|
8
|
+
# Provides a Rails application environment to use when running the specs
|
10
9
|
class Application < Rails::Application
|
11
10
|
config.encoding = 'utf-8'
|
12
11
|
end
|
13
12
|
|
14
13
|
Application.configure do
|
15
14
|
config.active_support.deprecation = :stderr
|
15
|
+
config.logger = Logger.new(STDOUT)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
data/trackerific.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{trackerific}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Travis Haynes"]
|
12
|
-
s.date = %q{2011-06-
|
12
|
+
s.date = %q{2011-06-15}
|
13
13
|
s.description = %q{Trackerific provides USPS, FedEx and UPS package tracking to Rails.}
|
14
14
|
s.email = %q{travis.j.haynes@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -24,12 +24,14 @@ Gem::Specification.new do |s|
|
|
24
24
|
"README.rdoc",
|
25
25
|
"Rakefile",
|
26
26
|
"VERSION",
|
27
|
+
"doc/OptionsHelper.html",
|
27
28
|
"doc/Trackerific.html",
|
28
|
-
"doc/Trackerific/
|
29
|
+
"doc/Trackerific/Configuration.html",
|
29
30
|
"doc/Trackerific/Details.html",
|
30
31
|
"doc/Trackerific/Error.html",
|
31
32
|
"doc/Trackerific/Event.html",
|
32
33
|
"doc/Trackerific/FedEx.html",
|
34
|
+
"doc/Trackerific/Service.html",
|
33
35
|
"doc/Trackerific/UPS.html",
|
34
36
|
"doc/Trackerific/USPS.html",
|
35
37
|
"doc/_index.html",
|
@@ -46,11 +48,13 @@ Gem::Specification.new do |s|
|
|
46
48
|
"doc/js/jquery.js",
|
47
49
|
"doc/method_list.html",
|
48
50
|
"doc/top-level-namespace.html",
|
51
|
+
"lib/helpers/options_helper.rb",
|
49
52
|
"lib/trackerific.rb",
|
50
|
-
"lib/trackerific/
|
53
|
+
"lib/trackerific/configuration.rb",
|
51
54
|
"lib/trackerific/details.rb",
|
52
55
|
"lib/trackerific/error.rb",
|
53
56
|
"lib/trackerific/event.rb",
|
57
|
+
"lib/trackerific/service.rb",
|
54
58
|
"lib/trackerific/services/fedex.rb",
|
55
59
|
"lib/trackerific/services/ups.rb",
|
56
60
|
"lib/trackerific/services/usps.rb",
|
@@ -60,10 +64,11 @@ Gem::Specification.new do |s|
|
|
60
64
|
"spec/fixtures/ups_success_response.xml",
|
61
65
|
"spec/fixtures/usps_error_response.xml",
|
62
66
|
"spec/fixtures/usps_success_response.xml",
|
63
|
-
"spec/lib/trackerific/
|
67
|
+
"spec/lib/trackerific/configuration_spec.rb",
|
64
68
|
"spec/lib/trackerific/details_spec.rb",
|
65
69
|
"spec/lib/trackerific/error_spec.rb",
|
66
70
|
"spec/lib/trackerific/event_spec.rb",
|
71
|
+
"spec/lib/trackerific/service_spec.rb",
|
67
72
|
"spec/lib/trackerific/services/fedex_spec.rb",
|
68
73
|
"spec/lib/trackerific/services/ups_spec.rb",
|
69
74
|
"spec/lib/trackerific/services/usps_spec.rb",
|
@@ -89,20 +94,20 @@ Gem::Specification.new do |s|
|
|
89
94
|
s.add_runtime_dependency(%q<builder>, [">= 2.1.2"])
|
90
95
|
s.add_development_dependency(%q<bundler>, [">= 1.0.13"])
|
91
96
|
s.add_development_dependency(%q<jeweler>, [">= 1.5.2"])
|
97
|
+
s.add_development_dependency(%q<yardstick>, [">= 0.4.0"])
|
92
98
|
s.add_development_dependency(%q<rspec-rails>, [">= 2.6.1"])
|
93
99
|
s.add_development_dependency(%q<rspec_multi_matchers>, [">= 1.1.0"])
|
94
100
|
s.add_development_dependency(%q<ruby-debug19>, [">= 0.11.6"])
|
95
|
-
s.add_development_dependency(%q<yardstick>, [">= 0.4.0"])
|
96
101
|
else
|
97
102
|
s.add_dependency(%q<rails>, [">= 3.0.0"])
|
98
103
|
s.add_dependency(%q<httparty>, [">= 0.7.7"])
|
99
104
|
s.add_dependency(%q<builder>, [">= 2.1.2"])
|
100
105
|
s.add_dependency(%q<bundler>, [">= 1.0.13"])
|
101
106
|
s.add_dependency(%q<jeweler>, [">= 1.5.2"])
|
107
|
+
s.add_dependency(%q<yardstick>, [">= 0.4.0"])
|
102
108
|
s.add_dependency(%q<rspec-rails>, [">= 2.6.1"])
|
103
109
|
s.add_dependency(%q<rspec_multi_matchers>, [">= 1.1.0"])
|
104
110
|
s.add_dependency(%q<ruby-debug19>, [">= 0.11.6"])
|
105
|
-
s.add_dependency(%q<yardstick>, [">= 0.4.0"])
|
106
111
|
end
|
107
112
|
else
|
108
113
|
s.add_dependency(%q<rails>, [">= 3.0.0"])
|
@@ -110,10 +115,10 @@ Gem::Specification.new do |s|
|
|
110
115
|
s.add_dependency(%q<builder>, [">= 2.1.2"])
|
111
116
|
s.add_dependency(%q<bundler>, [">= 1.0.13"])
|
112
117
|
s.add_dependency(%q<jeweler>, [">= 1.5.2"])
|
118
|
+
s.add_dependency(%q<yardstick>, [">= 0.4.0"])
|
113
119
|
s.add_dependency(%q<rspec-rails>, [">= 2.6.1"])
|
114
120
|
s.add_dependency(%q<rspec_multi_matchers>, [">= 1.1.0"])
|
115
121
|
s.add_dependency(%q<ruby-debug19>, [">= 0.11.6"])
|
116
|
-
s.add_dependency(%q<yardstick>, [">= 0.4.0"])
|
117
122
|
end
|
118
123
|
end
|
119
124
|
|