lob 4.3.0 → 5.4.6
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 +4 -4
- data/.github/workflows/forked_tests_job.yml +36 -0
- data/.github/workflows/run_tests_job.yml +32 -0
- data/.github/workflows/update_gem.yml +27 -0
- data/.gitignore +1 -0
- data/CHANGELOG.md +47 -0
- data/README.md +16 -85
- data/examples/README.md +95 -9
- data/examples/cards.rb +51 -0
- data/examples/checks.rb +4 -3
- data/examples/csv_checks/create_checks.rb +3 -2
- data/examples/csv_letters/create_letters.rb +3 -2
- data/examples/csv_letters/letter_template.html +1 -1
- data/examples/csv_postcards/create_postcards.rb +3 -2
- data/examples/csv_postcards/input.csv +7 -7
- data/examples/csv_postcards/postcard_back.html +1 -1
- data/examples/csv_verify/verify.rb +3 -2
- data/examples/letters.rb +4 -3
- data/examples/list_postcards_metadata.rb +94 -0
- data/examples/postcards.rb +6 -5
- data/examples/postcards_idempotent.rb +92 -0
- data/examples/postcards_intl.rb +87 -0
- data/examples/postcards_remote.rb +87 -0
- data/examples/postcards_send_date.rb +97 -0
- data/examples/postcards_template.rb +98 -0
- data/examples/self_mailers.rb +38 -0
- data/lib/lob/client.rb +33 -8
- data/lib/lob/resources/bulk_intl_verifications.rb +27 -0
- data/lib/lob/resources/bulk_us_verifications.rb +28 -0
- data/lib/lob/resources/card.rb +46 -0
- data/lib/lob/resources/{area.rb → group.rb} +2 -4
- data/lib/lob/resources/groups_member.rb +66 -0
- data/lib/lob/resources/resource_base.rb +20 -9
- data/lib/lob/resources/self_mailer.rb +14 -0
- data/lib/lob/resources/us_reverse_geocode_lookups.rb +26 -0
- data/lib/lob/version.rb +1 -1
- data/lob.gemspec +7 -7
- data/spec/lob/resources/bulk_intl_verifications_spec.rb +39 -0
- data/spec/lob/resources/bulk_us_verifications_spec.rb +51 -0
- data/spec/lob/resources/card_spec.rb +145 -0
- data/spec/lob/resources/check_spec.rb +21 -0
- data/spec/lob/resources/group_spec.rb +50 -0
- data/spec/lob/resources/intl_verifications_spec.rb +4 -7
- data/spec/lob/resources/letter_spec.rb +24 -4
- data/spec/lob/resources/member_spec.rb +65 -0
- data/spec/lob/resources/postcard_spec.rb +30 -5
- data/spec/lob/resources/resource_base_spec.rb +4 -16
- data/spec/lob/resources/self_mailer_spec.rb +177 -0
- data/spec/lob/resources/us_reverse_geocode_lookups_spec.rb +22 -0
- data/spec/samples/card.pdf +744 -0
- data/spec/samples/sfm-12x9-inside.pdf +0 -0
- data/spec/samples/sfm-12x9-outside.pdf +0 -0
- data/spec/samples/sfm-6x18-inside.pdf +0 -0
- data/spec/samples/sfm-6x18-outside.pdf +0 -0
- data/spec/spec_helper.rb +7 -5
- metadata +73 -39
- data/.travis.yml +0 -19
- data/lib/lob/resources/route.rb +0 -33
- data/spec/lob/resources/area_spec.rb +0 -59
- data/spec/lob/resources/route_spec.rb +0 -39
data/lib/lob/client.rb
CHANGED
@@ -1,12 +1,17 @@
|
|
1
1
|
require "lob/resources/address"
|
2
|
-
require "lob/resources/area"
|
3
2
|
require "lob/resources/bank_account"
|
3
|
+
require "lob/resources/bulk_intl_verifications"
|
4
|
+
require "lob/resources/bulk_us_verifications"
|
5
|
+
require "lob/resources/card"
|
4
6
|
require "lob/resources/check"
|
7
|
+
require "lob/resources/group"
|
8
|
+
require "lob/resources/groups_member"
|
5
9
|
require "lob/resources/intl_verifications"
|
6
10
|
require "lob/resources/letter"
|
7
11
|
require "lob/resources/postcard"
|
8
|
-
require "lob/resources/
|
12
|
+
require "lob/resources/self_mailer"
|
9
13
|
require "lob/resources/us_autocompletions"
|
14
|
+
require "lob/resources/us_reverse_geocode_lookups"
|
10
15
|
require "lob/resources/us_verifications"
|
11
16
|
require "lob/resources/us_zip_lookups"
|
12
17
|
|
@@ -23,10 +28,6 @@ module Lob
|
|
23
28
|
@config = config
|
24
29
|
end
|
25
30
|
|
26
|
-
def areas
|
27
|
-
Lob::Resources::Area.new(config)
|
28
|
-
end
|
29
|
-
|
30
31
|
def addresses
|
31
32
|
Lob::Resources::Address.new(config)
|
32
33
|
end
|
@@ -35,9 +36,29 @@ module Lob
|
|
35
36
|
Lob::Resources::BankAccount.new(config)
|
36
37
|
end
|
37
38
|
|
39
|
+
def bulk_intl_verifications
|
40
|
+
Lob::Resources::BulkIntlVerifications.new(config)
|
41
|
+
end
|
42
|
+
|
43
|
+
def bulk_us_verifications
|
44
|
+
Lob::Resources::BulkUSVerifications.new(config)
|
45
|
+
end
|
46
|
+
|
47
|
+
def cards
|
48
|
+
Lob::Resources::Card.new(config)
|
49
|
+
end
|
50
|
+
|
38
51
|
def checks
|
39
52
|
Lob::Resources::Check.new(config)
|
40
53
|
end
|
54
|
+
|
55
|
+
def groups
|
56
|
+
Lob::Resources::Group.new(config)
|
57
|
+
end
|
58
|
+
|
59
|
+
def groups_members
|
60
|
+
Lob::Resources::GroupsMember.new(config)
|
61
|
+
end
|
41
62
|
|
42
63
|
def intl_verifications
|
43
64
|
Lob::Resources::IntlVerifications.new(config)
|
@@ -51,14 +72,18 @@ module Lob
|
|
51
72
|
Lob::Resources::Postcard.new(config)
|
52
73
|
end
|
53
74
|
|
54
|
-
def
|
55
|
-
Lob::Resources::
|
75
|
+
def self_mailers
|
76
|
+
Lob::Resources::SelfMailer.new(config)
|
56
77
|
end
|
57
78
|
|
58
79
|
def us_autocompletions
|
59
80
|
Lob::Resources::USAutocompletions.new(config)
|
60
81
|
end
|
61
82
|
|
83
|
+
def us_reverse_geocode_lookups
|
84
|
+
Lob::Resources::USReverseGeocodeLookups.new(config)
|
85
|
+
end
|
86
|
+
|
62
87
|
def us_verifications
|
63
88
|
Lob::Resources::USVerifications.new(config)
|
64
89
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require "lob/resources/resource_base"
|
2
|
+
|
3
|
+
module Lob
|
4
|
+
module Resources
|
5
|
+
class BulkIntlVerifications < Lob::Resources::ResourceBase
|
6
|
+
|
7
|
+
undef_method :list, :find, :create, :destroy
|
8
|
+
|
9
|
+
def initialize(config)
|
10
|
+
super(config)
|
11
|
+
@endpoint = "bulk/intl_verifications"
|
12
|
+
end
|
13
|
+
|
14
|
+
def verify(body={})
|
15
|
+
body[:addresses] = body[:addresses].to_json
|
16
|
+
request = {
|
17
|
+
method: :post,
|
18
|
+
url: endpoint_url,
|
19
|
+
body: body
|
20
|
+
}
|
21
|
+
|
22
|
+
submit request
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require "lob/resources/resource_base"
|
2
|
+
|
3
|
+
module Lob
|
4
|
+
module Resources
|
5
|
+
class BulkUSVerifications < Lob::Resources::ResourceBase
|
6
|
+
|
7
|
+
undef_method :list, :find, :create, :destroy
|
8
|
+
|
9
|
+
def initialize(config)
|
10
|
+
super(config)
|
11
|
+
@endpoint = "bulk/us_verifications"
|
12
|
+
end
|
13
|
+
|
14
|
+
def verify(body={}, query={})
|
15
|
+
body[:addresses] = body[:addresses].to_json
|
16
|
+
request = {
|
17
|
+
method: :post,
|
18
|
+
url: endpoint_url,
|
19
|
+
body: body,
|
20
|
+
query: query
|
21
|
+
}
|
22
|
+
|
23
|
+
submit request
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require "lob/resources/resource_base"
|
2
|
+
|
3
|
+
module Lob
|
4
|
+
module Resources
|
5
|
+
class Card < Lob::Resources::ResourceBase
|
6
|
+
|
7
|
+
def initialize(config)
|
8
|
+
super(config)
|
9
|
+
@endpoint = "cards"
|
10
|
+
end
|
11
|
+
|
12
|
+
def update(resource_id, body={}, headers={})
|
13
|
+
request = {
|
14
|
+
method: :post,
|
15
|
+
url: resource_url(resource_id),
|
16
|
+
body: body,
|
17
|
+
headers: headers
|
18
|
+
}
|
19
|
+
|
20
|
+
submit(request)
|
21
|
+
end
|
22
|
+
|
23
|
+
def create_order(resource_id, body={}, headers={})
|
24
|
+
request = {
|
25
|
+
method: :post,
|
26
|
+
url: "#{resource_url(resource_id)}/orders",
|
27
|
+
body: body,
|
28
|
+
headers: headers
|
29
|
+
}
|
30
|
+
|
31
|
+
submit(request)
|
32
|
+
end
|
33
|
+
|
34
|
+
def list_orders(resource_id, query={})
|
35
|
+
request = {
|
36
|
+
method: :get,
|
37
|
+
url: "#{resource_url(resource_id)}/orders",
|
38
|
+
query: query
|
39
|
+
}
|
40
|
+
|
41
|
+
submit(request)
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -2,13 +2,11 @@ require "lob/resources/resource_base"
|
|
2
2
|
|
3
3
|
module Lob
|
4
4
|
module Resources
|
5
|
-
class
|
6
|
-
|
7
|
-
undef_method :destroy
|
5
|
+
class Group < Lob::Resources::ResourceBase
|
8
6
|
|
9
7
|
def initialize(config)
|
10
8
|
super(config)
|
11
|
-
@endpoint = "
|
9
|
+
@endpoint = "groups"
|
12
10
|
end
|
13
11
|
|
14
12
|
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require "rest-client"
|
2
|
+
require "json"
|
3
|
+
require "uri"
|
4
|
+
|
5
|
+
module Lob
|
6
|
+
module Resources
|
7
|
+
class GroupsMember < Lob::Resources::ResourceBase
|
8
|
+
|
9
|
+
attr_reader :config, :endpoint
|
10
|
+
|
11
|
+
def initialize(config)
|
12
|
+
super(config)
|
13
|
+
@endpoint = "members"
|
14
|
+
end
|
15
|
+
|
16
|
+
def list(group_id, query={})
|
17
|
+
request = {
|
18
|
+
method: :get,
|
19
|
+
url: endpoint_url(group_id),
|
20
|
+
query: query
|
21
|
+
}
|
22
|
+
|
23
|
+
submit request
|
24
|
+
end
|
25
|
+
|
26
|
+
def find(group_id, resource_id)
|
27
|
+
request = {
|
28
|
+
method: :get,
|
29
|
+
url: resource_url(group_id, resource_id)
|
30
|
+
}
|
31
|
+
|
32
|
+
submit request
|
33
|
+
end
|
34
|
+
|
35
|
+
def create(group_id, body={}, headers={}, query={})
|
36
|
+
request = {
|
37
|
+
method: :post,
|
38
|
+
url: endpoint_url(group_id),
|
39
|
+
body: body,
|
40
|
+
headers: headers,
|
41
|
+
query: query
|
42
|
+
}
|
43
|
+
|
44
|
+
submit request
|
45
|
+
end
|
46
|
+
|
47
|
+
def destroy(group_id, resource_id)
|
48
|
+
request = {
|
49
|
+
method: :delete,
|
50
|
+
url: resource_url(group_id, resource_id)
|
51
|
+
}
|
52
|
+
|
53
|
+
submit request
|
54
|
+
end
|
55
|
+
|
56
|
+
def endpoint_url(group_id)
|
57
|
+
"#{base_url}/groups/#{group_id}/#{endpoint}"
|
58
|
+
end
|
59
|
+
|
60
|
+
def resource_url(group_id, resource_id)
|
61
|
+
"#{endpoint_url(group_id)}/#{resource_id}"
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -19,7 +19,7 @@ module Lob
|
|
19
19
|
query: query
|
20
20
|
}
|
21
21
|
|
22
|
-
submit
|
22
|
+
submit(request)
|
23
23
|
end
|
24
24
|
|
25
25
|
def find(resource_id)
|
@@ -28,7 +28,7 @@ module Lob
|
|
28
28
|
url: resource_url(resource_id)
|
29
29
|
}
|
30
30
|
|
31
|
-
submit
|
31
|
+
submit(request)
|
32
32
|
end
|
33
33
|
|
34
34
|
def create(body={}, headers={}, query={})
|
@@ -40,7 +40,7 @@ module Lob
|
|
40
40
|
query: query
|
41
41
|
}
|
42
42
|
|
43
|
-
submit
|
43
|
+
submit(request)
|
44
44
|
end
|
45
45
|
|
46
46
|
def destroy(resource_id)
|
@@ -49,7 +49,7 @@ module Lob
|
|
49
49
|
url: resource_url(resource_id)
|
50
50
|
}
|
51
51
|
|
52
|
-
submit
|
52
|
+
submit(request)
|
53
53
|
end
|
54
54
|
|
55
55
|
private
|
@@ -72,13 +72,24 @@ module Lob
|
|
72
72
|
url = "#{url}?#{build_nested_query(query)}"
|
73
73
|
end
|
74
74
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
75
|
+
client_params = {
|
76
|
+
headers: headers,
|
77
|
+
method: method,
|
78
|
+
url: url,
|
79
|
+
}
|
80
|
+
|
81
|
+
client_params[:proxy] = config[:proxy] if config.key?(:proxy)
|
82
|
+
|
83
|
+
unless method == :delete || method == :get
|
84
|
+
if body and body[:merge_variables] and body[:merge_variables].class == Hash
|
85
|
+
body[:merge_variables] = body[:merge_variables].to_json
|
80
86
|
end
|
81
87
|
|
88
|
+
client_params[:payload] = body
|
89
|
+
end
|
90
|
+
begin
|
91
|
+
response = RestClient::Request.execute(client_params)
|
92
|
+
|
82
93
|
body = JSON.parse(response)
|
83
94
|
|
84
95
|
body.define_singleton_method(:_response) do
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "lob/resources/resource_base"
|
2
|
+
|
3
|
+
module Lob
|
4
|
+
module Resources
|
5
|
+
class USReverseGeocodeLookups < Lob::Resources::ResourceBase
|
6
|
+
|
7
|
+
undef_method :list, :find, :create, :destroy
|
8
|
+
|
9
|
+
def initialize(config)
|
10
|
+
super(config)
|
11
|
+
@endpoint = "us_reverse_geocode_lookups"
|
12
|
+
end
|
13
|
+
|
14
|
+
def lookup(body={})
|
15
|
+
request = {
|
16
|
+
method: :post,
|
17
|
+
url: endpoint_url,
|
18
|
+
body: body
|
19
|
+
}
|
20
|
+
|
21
|
+
submit request
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/lob/version.rb
CHANGED
data/lob.gemspec
CHANGED
@@ -18,14 +18,14 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "rest-client", ">= 1
|
21
|
+
spec.add_dependency "rest-client", ">= 2.0.1", "< 3.0"
|
22
22
|
|
23
|
-
spec.add_development_dependency "
|
24
|
-
spec.add_development_dependency "rake", "~> 10.4.2"
|
23
|
+
spec.add_development_dependency "rake", "~> 12.3.3"
|
25
24
|
spec.add_development_dependency "minitest", "~> 5.6.1"
|
26
25
|
spec.add_development_dependency "webmock", "~> 1.2"
|
27
|
-
spec.add_development_dependency "
|
28
|
-
spec.add_development_dependency "
|
29
|
-
spec.add_development_dependency "simplecov", "~> 0.
|
30
|
-
spec.add_development_dependency "
|
26
|
+
spec.add_development_dependency "simplecov-lcov"
|
27
|
+
spec.add_development_dependency "coveralls_reborn", "~> 0.23.1"
|
28
|
+
spec.add_development_dependency "simplecov", "~> 0.21.0"
|
29
|
+
spec.add_development_dependency "json", "~> 2.3.1"
|
30
|
+
spec.add_development_dependency "uri", "~> 0.10.1"
|
31
31
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Lob::Resources::BulkIntlVerifications do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@sample_params = {
|
7
|
+
addresses: [
|
8
|
+
{
|
9
|
+
primary_line: "123 Test St",
|
10
|
+
city: "HEARST",
|
11
|
+
state: "ONTARIO",
|
12
|
+
postal_code: "P0L1N0",
|
13
|
+
country: "CA"
|
14
|
+
},
|
15
|
+
{
|
16
|
+
primary_line: "123 Test St",
|
17
|
+
city: "HEARST",
|
18
|
+
state: "ONTARIO",
|
19
|
+
postal_code: "P0L1N0",
|
20
|
+
country: "CA"
|
21
|
+
}
|
22
|
+
]
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
subject { Lob::Client.new(api_key: API_KEY) }
|
27
|
+
|
28
|
+
describe "verify" do
|
29
|
+
it "should verify an international address" do
|
30
|
+
result = subject.bulk_intl_verifications.verify @sample_params
|
31
|
+
addresses = result["addresses"]
|
32
|
+
address = addresses.first
|
33
|
+
address["recipient"].must_equal("TEST KEYS DO NOT VERIFY ADDRESSES")
|
34
|
+
address = addresses[1]
|
35
|
+
address["recipient"].must_equal("TEST KEYS DO NOT VERIFY ADDRESSES")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Lob::Resources::BulkUSVerifications do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@sample_params = {
|
7
|
+
addresses: [
|
8
|
+
{
|
9
|
+
recipient: "LOB.COM",
|
10
|
+
primary_line: "185 BERRY ST STE 6600",
|
11
|
+
city: "SAN FRANCISCO",
|
12
|
+
state: "CA",
|
13
|
+
zip_code: "94107"
|
14
|
+
},
|
15
|
+
{
|
16
|
+
recipient: "Harry Zhou",
|
17
|
+
primary_line: "325 BERRY ST",
|
18
|
+
city: "SAN FRANCISCO",
|
19
|
+
state: "CA",
|
20
|
+
zip_code: "94107"
|
21
|
+
}
|
22
|
+
]
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
subject { Lob::Client.new(api_key: API_KEY) }
|
27
|
+
|
28
|
+
describe "verify" do
|
29
|
+
it "should verify a US address" do
|
30
|
+
result = subject.bulk_us_verifications.verify @sample_params
|
31
|
+
addresses = result["addresses"]
|
32
|
+
address = addresses.first
|
33
|
+
address["recipient"].must_equal("TEST KEYS DO NOT VERIFY ADDRESSES")
|
34
|
+
address = addresses[1]
|
35
|
+
address["recipient"].must_equal("TEST KEYS DO NOT VERIFY ADDRESSES")
|
36
|
+
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should allow 'case' in query params" do
|
41
|
+
result = subject.bulk_us_verifications.verify @sample_params, {case: "proper"}
|
42
|
+
addresses = result["addresses"]
|
43
|
+
address = addresses.first
|
44
|
+
address["recipient"].must_equal("Test Keys Do Not Verify Addresses")
|
45
|
+
address = addresses[1]
|
46
|
+
address["recipient"].must_equal("Test Keys Do Not Verify Addresses")
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,145 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Lob::Resources::Card do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@horizontal_card_url = "https://s3-us-west-2.amazonaws.com/public.lob.com/assets/card_horizontal.pdf"
|
7
|
+
@horizontal_card_front = File.new(File.expand_path("../../../samples/card.pdf", __FILE__))
|
8
|
+
@horizontal_card_back = File.new(File.expand_path("../../../samples/card.pdf", __FILE__))
|
9
|
+
|
10
|
+
@sample_card_params = {
|
11
|
+
description: "Test Card",
|
12
|
+
front: @horizontal_card_url
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
subject { Lob::Client.new(api_key: API_KEY) }
|
17
|
+
|
18
|
+
describe "list" do
|
19
|
+
it "should list cards" do
|
20
|
+
assert subject.cards.list({ include: ['total_count'] })["object"] == "list"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "create" do
|
25
|
+
it "should create a card with a front url" do
|
26
|
+
result = subject.cards.create(@sample_card_params)
|
27
|
+
|
28
|
+
result["description"].must_equal(@sample_card_params[:description])
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should create a card with front and back as urls" do
|
32
|
+
result = subject.cards.create(
|
33
|
+
@sample_card_params.merge(back: @horizontal_card_url)
|
34
|
+
)
|
35
|
+
|
36
|
+
result["description"].must_equal(@sample_card_params[:description])
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should create a card with a front PDF" do
|
40
|
+
result = subject.cards.create(
|
41
|
+
@sample_card_params.merge(front: @horizontal_card_front)
|
42
|
+
)
|
43
|
+
|
44
|
+
result["description"].must_equal(@sample_card_params[:description])
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should create a card with front and back as PDFs" do
|
48
|
+
result = subject.cards.create(
|
49
|
+
@sample_card_params.merge({
|
50
|
+
front: @horizontal_card_front,
|
51
|
+
back: @horizontal_card_back
|
52
|
+
})
|
53
|
+
)
|
54
|
+
|
55
|
+
result["description"].must_equal(@sample_card_params[:description])
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should return an error without a front" do
|
59
|
+
assert_raises Lob::InvalidRequestError do
|
60
|
+
subject.cards.create(
|
61
|
+
@sample_card_params.merge({ front: nil })
|
62
|
+
)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
describe "find" do
|
69
|
+
it "should find a card" do
|
70
|
+
new_card = subject.cards.create(
|
71
|
+
@sample_card_params.merge(front: @horizontal_card_front)
|
72
|
+
)
|
73
|
+
|
74
|
+
result = subject.cards.find(new_card["id"])
|
75
|
+
result["description"].must_equal(@sample_card_params[:description])
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
describe "update" do
|
81
|
+
it "should update a card" do
|
82
|
+
new_card = subject.cards.create(
|
83
|
+
@sample_card_params.merge(front: @horizontal_card_front)
|
84
|
+
)
|
85
|
+
|
86
|
+
result = subject.cards.update(
|
87
|
+
new_card["id"],
|
88
|
+
{ description: "Updated card description" }
|
89
|
+
)
|
90
|
+
result["description"].must_equal("Updated card description")
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
describe "destroy" do
|
96
|
+
it "should destroy a card" do
|
97
|
+
new_card = subject.cards.create(
|
98
|
+
@sample_card_params.merge(front: @horizontal_card_front)
|
99
|
+
)
|
100
|
+
|
101
|
+
result = subject.cards.destroy(new_card["id"])
|
102
|
+
result["id"].must_equal(new_card["id"])
|
103
|
+
result["deleted"].must_equal(true)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
describe "create_order" do
|
109
|
+
it "should create an order for a card" do
|
110
|
+
new_card = subject.cards.create(
|
111
|
+
@sample_card_params.merge(front: @horizontal_card_front)
|
112
|
+
)
|
113
|
+
|
114
|
+
card_order_params = {
|
115
|
+
quantity: 10001
|
116
|
+
}
|
117
|
+
|
118
|
+
result = subject.cards.create_order(new_card["id"], card_order_params)
|
119
|
+
result["card_id"].must_equal(new_card["id"])
|
120
|
+
result["quantity_ordered"].must_equal(card_order_params[:quantity])
|
121
|
+
result["object"].must_equal("card_order")
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
|
126
|
+
describe "list_orders" do
|
127
|
+
it "should list all orders for a card" do
|
128
|
+
new_card = subject.cards.create(
|
129
|
+
@sample_card_params.merge(front: @horizontal_card_front)
|
130
|
+
)
|
131
|
+
card_order_params = {
|
132
|
+
quantity: 10001
|
133
|
+
}
|
134
|
+
new_card_order = subject.cards.create_order(
|
135
|
+
new_card["id"],
|
136
|
+
card_order_params
|
137
|
+
)
|
138
|
+
|
139
|
+
result = subject.cards.list_orders(new_card["id"])
|
140
|
+
result["object"].must_equal("list")
|
141
|
+
result["count"].must_equal(1)
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
end
|
@@ -50,6 +50,27 @@ describe Lob::Resources::Check do
|
|
50
50
|
|
51
51
|
result["amount"].to_s.must_equal("2000.12")
|
52
52
|
end
|
53
|
+
|
54
|
+
it "should create a check with a merge variable conditional" do
|
55
|
+
new_address = subject.addresses.create @sample_address_params
|
56
|
+
|
57
|
+
new_bank_account = subject.bank_accounts.create(@sample_bank_account_params)
|
58
|
+
|
59
|
+
subject.bank_accounts.verify(new_bank_account["id"], amounts: [1, 2])
|
60
|
+
|
61
|
+
result = subject.checks.create(
|
62
|
+
bank_account: new_bank_account["id"],
|
63
|
+
to: new_address["id"],
|
64
|
+
from: new_address["id"],
|
65
|
+
amount: "2000.12",
|
66
|
+
attachment: "<html>{{#is_awesome}}You are awesome!{{/is_awesome}}</html>",
|
67
|
+
merge_variables: {
|
68
|
+
is_awesome: false
|
69
|
+
}
|
70
|
+
)
|
71
|
+
|
72
|
+
result["merge_variables"]["is_awesome"].must_equal(false)
|
73
|
+
end
|
53
74
|
end
|
54
75
|
|
55
76
|
|