pactas_itero 0.6.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +15 -0
- data/.rubocop.yml +765 -0
- data/CHANGELOG.md +34 -1
- data/Gemfile +3 -1
- data/README.md +3 -1
- data/Rakefile +7 -4
- data/lib/pactas_itero/api/contracts.rb +12 -0
- data/lib/pactas_itero/api/customers.rb +2 -0
- data/lib/pactas_itero/api/invoices.rb +3 -2
- data/lib/pactas_itero/api/oauth.rb +3 -2
- data/lib/pactas_itero/api/orders.rb +2 -0
- data/lib/pactas_itero/api/rated_items.rb +10 -1
- data/lib/pactas_itero/api.rb +9 -7
- data/lib/pactas_itero/client.rb +32 -26
- data/lib/pactas_itero/configurable.rb +9 -8
- data/lib/pactas_itero/default.rb +17 -18
- data/lib/pactas_itero/error.rb +45 -44
- data/lib/pactas_itero/ext/hash/camelize_keys.rb +12 -10
- data/lib/pactas_itero/response/raise_error.rb +5 -5
- data/lib/pactas_itero/version.rb +3 -1
- data/lib/pactas_itero.rb +5 -3
- metadata +16 -83
- data/Gemfile.lock +0 -92
- data/pactas_itero.gemspec +0 -37
- data/spec/fixtures/bearer_token.json +0 -5
- data/spec/fixtures/commit_order_response.json +0 -50
- data/spec/fixtures/contract.json +0 -46
- data/spec/fixtures/contract_cancellation_preview_response.json +0 -73
- data/spec/fixtures/contract_termination_response.json +0 -79
- data/spec/fixtures/contracts.json +0 -48
- data/spec/fixtures/create_order_response.json +0 -17
- data/spec/fixtures/create_rated_item.json +0 -8
- data/spec/fixtures/customer.json +0 -23
- data/spec/fixtures/customers.json +0 -40
- data/spec/fixtures/invoice.json +0 -22
- data/spec/fixtures/invoice_download.pdf +0 -0
- data/spec/fixtures/invoices.json +0 -46
- data/spec/fixtures/order.json +0 -15
- data/spec/fixtures/payment_transaction.json +0 -37
- data/spec/fixtures/rated_items.json +0 -12
- data/spec/fixtures/self_service_token.json +0 -6
- data/spec/pactas_itero/api/contracts_spec.rb +0 -165
- data/spec/pactas_itero/api/customers_spec.rb +0 -229
- data/spec/pactas_itero/api/invoices_spec.rb +0 -103
- data/spec/pactas_itero/api/oauth_spec.rb +0 -44
- data/spec/pactas_itero/api/orders_spec.rb +0 -102
- data/spec/pactas_itero/api/payment_transactions_spec.rb +0 -66
- data/spec/pactas_itero/api/rated_items_spec.rb +0 -113
- data/spec/pactas_itero/client_spec.rb +0 -316
- data/spec/pactas_itero_spec.rb +0 -39
- data/spec/spec_helper.rb +0 -100
data/spec/fixtures/customer.json
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"Address": {
|
3
|
-
"City": "Example City",
|
4
|
-
"Country": "DE",
|
5
|
-
"HouseNumber": "42",
|
6
|
-
"PostalCode": "12345",
|
7
|
-
"Street": "Example Street"
|
8
|
-
},
|
9
|
-
"CompanyName": "Example Company",
|
10
|
-
"CreatedAt": "2014-05-12T14:22:24.0000000Z",
|
11
|
-
"CustomerName": "Example Company",
|
12
|
-
"CustomerType": "Consumer",
|
13
|
-
"DefaultBearerMedium": "Email",
|
14
|
-
"EmailAddress": "jane.doe@example.com",
|
15
|
-
"ExternalCustomerId": "",
|
16
|
-
"FirstName": "Jane",
|
17
|
-
"Id": "5370d9201d8dd006288221b0",
|
18
|
-
"Language": "de-DE",
|
19
|
-
"LastName": "Doe",
|
20
|
-
"Locale": "de-DE",
|
21
|
-
"VatId": "DE123456710",
|
22
|
-
"ExternalCustomerId": "1234"
|
23
|
-
}
|
@@ -1,40 +0,0 @@
|
|
1
|
-
[
|
2
|
-
{
|
3
|
-
"Address": {
|
4
|
-
"City": "Example City",
|
5
|
-
"Country": "DE",
|
6
|
-
"HouseNumber": "42",
|
7
|
-
"PostalCode": "12345",
|
8
|
-
"Street": "Example Street"
|
9
|
-
},
|
10
|
-
"CompanyName": "Example Company",
|
11
|
-
"CreatedAt": "2014-05-12T14:22:24.0000000Z",
|
12
|
-
"CustomerName": "Example Company",
|
13
|
-
"CustomerType": "Consumer",
|
14
|
-
"DefaultBearerMedium": "Email",
|
15
|
-
"EmailAddress": "jane.doe@example.com",
|
16
|
-
"ExternalCustomerId": "",
|
17
|
-
"FirstName": "Jane",
|
18
|
-
"Id": "5370d9201d8dd006288221b0",
|
19
|
-
"Language": "de-DE",
|
20
|
-
"LastName": "Doe",
|
21
|
-
"Locale": "de-DE",
|
22
|
-
"VatId": "DE123456710"
|
23
|
-
},
|
24
|
-
{
|
25
|
-
"Address": {},
|
26
|
-
"CompanyName": "Test Inc.",
|
27
|
-
"CreatedAt": "2014-05-14T14:21:20.0000000Z",
|
28
|
-
"CustomerName": "Test Inc.",
|
29
|
-
"CustomerType": "Consumer",
|
30
|
-
"DefaultBearerMedium": "Email",
|
31
|
-
"EmailAddress": "john.test@example.com",
|
32
|
-
"ExternalCustomerId": "",
|
33
|
-
"FirstName": "John",
|
34
|
-
"Id": "5370d8e01d8dd00628822197",
|
35
|
-
"Language": "de-DE",
|
36
|
-
"LastName": "Test",
|
37
|
-
"Locale": "de-DE",
|
38
|
-
"VatId": "DE123456789"
|
39
|
-
}
|
40
|
-
]
|
data/spec/fixtures/invoice.json
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"Id": "54b67d9e995ec90bc8f37718",
|
3
|
-
"InvoiceNumber": "SAN//2012//07--2435",
|
4
|
-
"CustomerId": "54b67d9e675ec90bc8f3770c",
|
5
|
-
"SentAt": "2012-07-03T23:02:22Z",
|
6
|
-
"DueDate": "2012-08-02",
|
7
|
-
"RecipientName": "OldTek GmbH",
|
8
|
-
"RecipientSubName": "Hermann Anton Müller",
|
9
|
-
"RecipientAddress": {
|
10
|
-
"AddressLine1": "c/o Andreas Meister",
|
11
|
-
"Street": "Sternstraße",
|
12
|
-
"HouseNumber": "43",
|
13
|
-
"PostalCode": "80538",
|
14
|
-
"City": "München",
|
15
|
-
"Country": "DE"
|
16
|
-
},
|
17
|
-
"Currency": "EUR",
|
18
|
-
"TotalNet": "211.60",
|
19
|
-
"TotalVat": "40.20",
|
20
|
-
"TotalGross": "251.80",
|
21
|
-
"IsInvoice": "False"
|
22
|
-
}
|
Binary file
|
data/spec/fixtures/invoices.json
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
[
|
2
|
-
{
|
3
|
-
"Id": "54b67d9e675ec90bc8f37718",
|
4
|
-
"InvoiceNumber": "SAN//2012//07--2434",
|
5
|
-
"CustomerId": "54b67d9e675ec90bc8f3770c",
|
6
|
-
"SentAt": "2012-07-03T23:02:22Z",
|
7
|
-
"DueDate": "2012-08-02",
|
8
|
-
"RecipientName": "OldTek GmbH",
|
9
|
-
"RecipientSubName": "Hermann Anton Müller",
|
10
|
-
"RecipientAddress": {
|
11
|
-
"AddressLine1": "c/o Andreas Meister",
|
12
|
-
"Street": "Sternstraße",
|
13
|
-
"HouseNumber": "43",
|
14
|
-
"PostalCode": "80538",
|
15
|
-
"City": "München",
|
16
|
-
"Country": "DE"
|
17
|
-
},
|
18
|
-
"Currency": "EUR",
|
19
|
-
"TotalNet": "211.60",
|
20
|
-
"TotalVat": "40.20",
|
21
|
-
"TotalGross": "251.80",
|
22
|
-
"IsInvoice": "False"
|
23
|
-
},
|
24
|
-
{
|
25
|
-
"Id": "54b67d9e995ec90bc8f37718",
|
26
|
-
"InvoiceNumber": "SAN//2012//07--2435",
|
27
|
-
"CustomerId": "54b67d9e675ec90bc8f3770c",
|
28
|
-
"SentAt": "2012-07-03T23:02:22Z",
|
29
|
-
"DueDate": "2012-08-02",
|
30
|
-
"RecipientName": "OldTek GmbH",
|
31
|
-
"RecipientSubName": "Hermann Anton Müller",
|
32
|
-
"RecipientAddress": {
|
33
|
-
"AddressLine1": "c/o Andreas Meister",
|
34
|
-
"Street": "Sternstraße",
|
35
|
-
"HouseNumber": "43",
|
36
|
-
"PostalCode": "80538",
|
37
|
-
"City": "München",
|
38
|
-
"Country": "DE"
|
39
|
-
},
|
40
|
-
"Currency": "EUR",
|
41
|
-
"TotalNet": "211.60",
|
42
|
-
"TotalVat": "40.20",
|
43
|
-
"TotalGross": "251.80",
|
44
|
-
"IsInvoice": "False"
|
45
|
-
}
|
46
|
-
]
|
data/spec/fixtures/order.json
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"Id": "56af22c51d8dd207684db9b5",
|
3
|
-
"PlanVariantId": "5357b8f11d8dd00fa0db6c1b",
|
4
|
-
"AllowWithoutPaymentData": false,
|
5
|
-
"ComponentSubscriptions": [],
|
6
|
-
"DiscountSubscriptions": [],
|
7
|
-
"Currency": "EUR",
|
8
|
-
"Total": 24.9,
|
9
|
-
"TotalVat": 4.73,
|
10
|
-
"TotalGross": 29.63,
|
11
|
-
"IsTrial": false,
|
12
|
-
"Status": "InProgress",
|
13
|
-
"CustomerId": "56af224c1d8dd207684db935",
|
14
|
-
"ContractId": "56af22c51d8dd207684db9b4"
|
15
|
-
}
|
@@ -1,37 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"Amount": 11.89,
|
3
|
-
"ContractId": "592d74a981b1f010f04293a4",
|
4
|
-
"Currency": "EUR",
|
5
|
-
"CustomerId": "592d74a881b1f010f04293a2",
|
6
|
-
"CustomerName": "Example Company",
|
7
|
-
"Id": "597de03d81b1ef0d18a46f4e",
|
8
|
-
"PaymentProvider": "Example Provider",
|
9
|
-
"PaymentProviderRole": "CreditCard",
|
10
|
-
"Preauth": false,
|
11
|
-
"ProviderTransactionId": "ccec718e-271e-4d0e-b0e1-94894e40c0c7",
|
12
|
-
"Status": {
|
13
|
-
"Amount": 11.89,
|
14
|
-
"HttpCode": 0,
|
15
|
-
"Preauth": false,
|
16
|
-
"Status": "Succeeded",
|
17
|
-
"Timestamp": "2017-07-30T13:33:49.9900000Z"
|
18
|
-
},
|
19
|
-
"StatusHistory": [
|
20
|
-
{
|
21
|
-
"Amount": 11.89,
|
22
|
-
"HttpCode": 0,
|
23
|
-
"Preauth": false,
|
24
|
-
"Status": "InProgress",
|
25
|
-
"Timestamp": "2017-07-30T13:33:49.9760000Z"
|
26
|
-
},
|
27
|
-
{
|
28
|
-
"Amount": 11.89,
|
29
|
-
"HttpCode": 0,
|
30
|
-
"Preauth": false,
|
31
|
-
"Status": "Succeeded",
|
32
|
-
"Timestamp": "2017-07-30T13:33:49.9900000Z"
|
33
|
-
}
|
34
|
-
],
|
35
|
-
"StatusTimestamp": "2017-07-30T13:33:49.9900000Z",
|
36
|
-
"Trigger": "Recurring"
|
37
|
-
}
|
@@ -1,12 +0,0 @@
|
|
1
|
-
[
|
2
|
-
{
|
3
|
-
"id": "591b847314aa03167c5a3b08",
|
4
|
-
"line_item_id": "59308e9781b1ef1190f21478",
|
5
|
-
"description": "1x DHL Versandmarken",
|
6
|
-
"quantity": 1,
|
7
|
-
"price_per_unit": 3.9,
|
8
|
-
"tax_policy_id": "tax-policy-id",
|
9
|
-
"period_start": "2017-05-15T22:00:00.0000000Z",
|
10
|
-
"period_end": "2017-05-15T22:00:00.0000000Z"
|
11
|
-
}
|
12
|
-
]
|
@@ -1,165 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe PactasItero::Api::Customers do
|
4
|
-
describe '.customer_contracts' do
|
5
|
-
it 'requests the correct resource' do
|
6
|
-
client = PactasItero::Client.new(bearer_token: 'bt')
|
7
|
-
request = stub_get('/api/v1/customers/535783241d8dd00fa0db6b2a/contracts').
|
8
|
-
to_return(
|
9
|
-
body: fixture('contracts.json'),
|
10
|
-
headers: { content_type: 'application/json; charset=utf-8'}
|
11
|
-
)
|
12
|
-
|
13
|
-
client.customer_contracts('535783241d8dd00fa0db6b2a')
|
14
|
-
|
15
|
-
expect(request).to have_been_made
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'returns an array of contracts' do
|
19
|
-
client = PactasItero::Client.new(bearer_token: 'bt')
|
20
|
-
request = stub_get('/api/v1/customers/535783241d8dd00fa0db6b2a/contracts').
|
21
|
-
to_return(
|
22
|
-
body: fixture('contracts.json'),
|
23
|
-
headers: { content_type: 'application/json; charset=utf-8'}
|
24
|
-
)
|
25
|
-
|
26
|
-
contracts = client.customer_contracts('535783241d8dd00fa0db6b2a')
|
27
|
-
|
28
|
-
expect(contracts).to be_a Array
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
describe '.contracts' do
|
33
|
-
it 'requests the correct resource' do
|
34
|
-
client = PactasItero::Client.new(bearer_token: 'bt')
|
35
|
-
request = stub_get('/api/v1/contracts').
|
36
|
-
to_return(
|
37
|
-
body: fixture('contracts.json'),
|
38
|
-
headers: { content_type: 'application/json; charset=utf-8'}
|
39
|
-
)
|
40
|
-
|
41
|
-
client.contracts
|
42
|
-
|
43
|
-
expect(request).to have_been_made
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'returns an array of contracts' do
|
47
|
-
client = PactasItero::Client.new(bearer_token: 'bt')
|
48
|
-
request = stub_get('/api/v1/contracts').
|
49
|
-
to_return(
|
50
|
-
body: fixture('contracts.json'),
|
51
|
-
headers: { content_type: 'application/json; charset=utf-8'}
|
52
|
-
)
|
53
|
-
|
54
|
-
contracts = client.contracts
|
55
|
-
|
56
|
-
expect(contracts).to be_a Array
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
describe ".contract_cancellation_preview" do
|
61
|
-
it "requests the correct resource" do
|
62
|
-
client = PactasItero::Client.new(bearer_token: "bt")
|
63
|
-
request = stub_get("/api/v1/contracts/some_contract_id/cancellationPreview").to_return(
|
64
|
-
body: fixture("contract_cancellation_preview_response.json"),
|
65
|
-
headers: { content_type: "application/json; charset=utf-8" }
|
66
|
-
)
|
67
|
-
|
68
|
-
client.contract_cancellation_preview("some_contract_id")
|
69
|
-
|
70
|
-
expect(request).to have_been_made
|
71
|
-
end
|
72
|
-
|
73
|
-
it 'returns the next possible cancellation date' do
|
74
|
-
client = PactasItero::Client.new(bearer_token: 'bt')
|
75
|
-
request = stub_get("/api/v1/contracts/some_contract_id/cancellationPreview").to_return(
|
76
|
-
body: fixture("contract_cancellation_preview_response.json"),
|
77
|
-
headers: { content_type: "application/json; charset=utf-8" }
|
78
|
-
)
|
79
|
-
|
80
|
-
contract_cancellation_preview = client.contract_cancellation_preview("some_contract_id")
|
81
|
-
|
82
|
-
expect(
|
83
|
-
contract_cancellation_preview.next_possible_cancellation_date
|
84
|
-
).to eq "2015-11-15T10:02:21.2750000Z"
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
describe '.update_contract' do
|
89
|
-
it 'requests the correct resource' do
|
90
|
-
client = PactasItero::Client.new(bearer_token: 'bt')
|
91
|
-
request = stub_patch('/api/v1/contracts/contract-id').
|
92
|
-
with(body: { EndDate: '2014-05-23T13:12:47.0760000Z' }.to_json).
|
93
|
-
to_return(
|
94
|
-
body: fixture('contract.json'),
|
95
|
-
headers: { content_type: 'application/json; charset=utf-8'}
|
96
|
-
)
|
97
|
-
|
98
|
-
client.update_contract('contract-id', { end_date: '2014-05-23T13:12:47.0760000Z' })
|
99
|
-
|
100
|
-
expect(request).to have_been_made
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
describe '.contract' do
|
105
|
-
it 'requests the correct resource' do
|
106
|
-
client = PactasItero::Client.new(bearer_token: 'bt')
|
107
|
-
request = stub_get('/api/v1/contracts/5357bc4f1d8dd00fa0db6c31').
|
108
|
-
to_return(
|
109
|
-
body: fixture('contract.json'),
|
110
|
-
headers: { content_type: 'application/json; charset=utf-8'}
|
111
|
-
)
|
112
|
-
|
113
|
-
client.contract('5357bc4f1d8dd00fa0db6c31')
|
114
|
-
|
115
|
-
expect(request).to have_been_made
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
describe ".terminate_contract" do
|
120
|
-
it "requests the correct resource" do
|
121
|
-
client = PactasItero::Client.new(bearer_token: "bt")
|
122
|
-
request = stub_post("/api/v1/contracts/5922f50b81b1f007e0e4d738/end").
|
123
|
-
with(
|
124
|
-
body: { EndDate: "2017-10-01T14:51:29.3390000Z" }.to_json,
|
125
|
-
).
|
126
|
-
to_return(
|
127
|
-
body: fixture("contract_termination_response.json"),
|
128
|
-
headers: { content_type: "application/json; charset=utf-8" },
|
129
|
-
)
|
130
|
-
|
131
|
-
client.terminate_contract(
|
132
|
-
"5922f50b81b1f007e0e4d738",
|
133
|
-
end_date: "2017-10-01T14:51:29.3390000Z",
|
134
|
-
)
|
135
|
-
|
136
|
-
expect(request).to have_been_made
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
describe ".get_self_service_token_for_contract" do
|
141
|
-
it "requests the correct resource" do
|
142
|
-
client = PactasItero::Client.new(bearer_token: "bt")
|
143
|
-
request = stub_get("/api/v1/contracts/5357bc4f1d8dd00fa0db6c31/SelfServiceToken").to_return(
|
144
|
-
body: fixture("self_service_token.json"),
|
145
|
-
headers: { content_type: "application/json; charset=utf-8" },
|
146
|
-
)
|
147
|
-
|
148
|
-
client.get_self_service_token_for_contract("5357bc4f1d8dd00fa0db6c31")
|
149
|
-
|
150
|
-
expect(request).to have_been_made
|
151
|
-
end
|
152
|
-
|
153
|
-
it "returns a self service token" do
|
154
|
-
client = PactasItero::Client.new(bearer_token: "bt")
|
155
|
-
stub_get("/api/v1/contracts/5357bc4f1d8dd00fa0db6c31/SelfServiceToken").to_return(
|
156
|
-
body: fixture("self_service_token.json"),
|
157
|
-
headers: { content_type: "application/json; charset=utf-8" },
|
158
|
-
)
|
159
|
-
|
160
|
-
self_service_token = client.get_self_service_token_for_contract("5357bc4f1d8dd00fa0db6c31")
|
161
|
-
|
162
|
-
expect(self_service_token.token).to eq "522703b9eb596a0f40480825$1378374980$JDBWmg34kr_mFIUFP"
|
163
|
-
end
|
164
|
-
end
|
165
|
-
end
|
@@ -1,229 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe PactasItero::Api::Customers do
|
4
|
-
describe ".create_customer" do
|
5
|
-
it "requests the correct resource" do
|
6
|
-
client = PactasItero::Client.new(bearer_token: 'bt')
|
7
|
-
post_data = {
|
8
|
-
"Address" => {
|
9
|
-
"City" => "Example City",
|
10
|
-
"Country" => "DE",
|
11
|
-
"HouseNumber" => "42",
|
12
|
-
"PostalCode" => "12345",
|
13
|
-
"Street" => "Example Street"
|
14
|
-
},
|
15
|
-
"CompanyName" => "Example Company",
|
16
|
-
"DefaultBearerMedium" => "Email",
|
17
|
-
"EmailAddress" => "jane.doe@example.com",
|
18
|
-
"ExternalCustomerId" => "1234",
|
19
|
-
"FirstName" => "Jane",
|
20
|
-
"Language" => "de-DE",
|
21
|
-
"LastName" => "Doe",
|
22
|
-
"Locale" => "de-DE",
|
23
|
-
"VatId" => "DE123456710"
|
24
|
-
}.to_json
|
25
|
-
request = stub_post('/api/v1/customers').with(body: post_data).to_return(
|
26
|
-
body: fixture('customer.json'),
|
27
|
-
headers: { content_type: 'application/json; charset=utf-8'}
|
28
|
-
)
|
29
|
-
|
30
|
-
client.create_customer(
|
31
|
-
address: {
|
32
|
-
city: "Example City",
|
33
|
-
country: "DE",
|
34
|
-
house_number: "42",
|
35
|
-
postal_code: "12345",
|
36
|
-
street: "Example Street"
|
37
|
-
},
|
38
|
-
company_name: "Example Company",
|
39
|
-
default_bearer_medium: "Email",
|
40
|
-
email_address: "jane.doe@example.com",
|
41
|
-
external_customer_id: "1234",
|
42
|
-
first_name: "Jane",
|
43
|
-
language: "de-DE",
|
44
|
-
last_name: "Doe",
|
45
|
-
locale: "de-DE",
|
46
|
-
vat_id: "DE123456710"
|
47
|
-
)
|
48
|
-
|
49
|
-
expect(request).to have_been_made
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'returns the created customer' do
|
53
|
-
client = PactasItero::Client.new(bearer_token: 'bt')
|
54
|
-
post_data = {
|
55
|
-
"Address" => {
|
56
|
-
"City" => "Example City",
|
57
|
-
"Country" => "DE",
|
58
|
-
"HouseNumber" => "42",
|
59
|
-
"PostalCode" => "12345",
|
60
|
-
"Street" => "Example Street"
|
61
|
-
},
|
62
|
-
"CompanyName" => "Example Company",
|
63
|
-
"DefaultBearerMedium" => "Email",
|
64
|
-
"EmailAddress" => "jane.doe@example.com",
|
65
|
-
"ExternalCustomerId" => "1234",
|
66
|
-
"FirstName" => "Jane",
|
67
|
-
"Language" => "de-DE",
|
68
|
-
"LastName" => "Doe",
|
69
|
-
"Locale" => "de-DE",
|
70
|
-
"VatId" => "DE123456710"
|
71
|
-
}.to_json
|
72
|
-
request = stub_post('/api/v1/customers').with(body: post_data).to_return(
|
73
|
-
body: fixture('customer.json'),
|
74
|
-
headers: { content_type: 'application/json; charset=utf-8'}
|
75
|
-
)
|
76
|
-
|
77
|
-
customer = client.create_customer(
|
78
|
-
address: {
|
79
|
-
city: "Example City",
|
80
|
-
country: "DE",
|
81
|
-
house_number: "42",
|
82
|
-
postal_code: "12345",
|
83
|
-
street: "Example Street"
|
84
|
-
},
|
85
|
-
company_name: "Example Company",
|
86
|
-
default_bearer_medium: "Email",
|
87
|
-
email_address: "jane.doe@example.com",
|
88
|
-
external_customer_id: "1234",
|
89
|
-
first_name: "Jane",
|
90
|
-
language: "de-DE",
|
91
|
-
last_name: "Doe",
|
92
|
-
locale: "de-DE",
|
93
|
-
vat_id: "DE123456710"
|
94
|
-
)
|
95
|
-
|
96
|
-
address = customer.address
|
97
|
-
expect(address.city).to eq "Example City"
|
98
|
-
expect(address.country).to eq "DE"
|
99
|
-
expect(address.house_number).to eq "42"
|
100
|
-
expect(address.postal_code).to eq "12345"
|
101
|
-
expect(address.street).to eq "Example Street"
|
102
|
-
|
103
|
-
expect(customer.company_name).to eq "Example Company"
|
104
|
-
expect(customer.default_bearer_medium).to eq"Email"
|
105
|
-
expect(customer.email_address).to eq "jane.doe@example.com"
|
106
|
-
expect(customer.external_customer_id).to eq "1234"
|
107
|
-
expect(customer.first_name).to eq "Jane"
|
108
|
-
expect(customer.language).to eq "de-DE"
|
109
|
-
expect(customer.last_name).to eq "Doe"
|
110
|
-
expect(customer.locale).to eq "de-DE"
|
111
|
-
expect(customer.vat_id).to eq "DE123456710"
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
describe ".customers" do
|
116
|
-
it "requests the correct resource" do
|
117
|
-
client = PactasItero::Client.new(bearer_token: 'bt')
|
118
|
-
request = stub_get('/api/v1/customers').
|
119
|
-
to_return(
|
120
|
-
body: fixture('customers.json'),
|
121
|
-
headers: { content_type: 'application/json; charset=utf-8'}
|
122
|
-
)
|
123
|
-
|
124
|
-
client.customers
|
125
|
-
|
126
|
-
expect(request).to have_been_made
|
127
|
-
end
|
128
|
-
|
129
|
-
it 'returns an array of customers' do
|
130
|
-
client = PactasItero::Client.new(bearer_token: 'bt')
|
131
|
-
request = stub_get('/api/v1/customers').
|
132
|
-
to_return(
|
133
|
-
body: fixture('customers.json'),
|
134
|
-
headers: { content_type: 'application/json; charset=utf-8'}
|
135
|
-
)
|
136
|
-
|
137
|
-
customers = client.customers
|
138
|
-
|
139
|
-
expect(customers).to be_a Array
|
140
|
-
customer = customers.first
|
141
|
-
|
142
|
-
expect(customer.company_name).to eq 'Example Company'
|
143
|
-
expect(customer.created_at).to eq '2014-05-12T14:22:24.0000000Z'
|
144
|
-
expect(customer.customer_name).to eq 'Example Company'
|
145
|
-
expect(customer.customer_type).to eq 'Consumer'
|
146
|
-
expect(customer.default_bearer_medium).to eq 'Email'
|
147
|
-
expect(customer.email_address).to eq 'jane.doe@example.com'
|
148
|
-
expect(customer.external_customer_id).to eq ''
|
149
|
-
expect(customer.first_name).to eq 'Jane'
|
150
|
-
expect(customer.id).to eq '5370d9201d8dd006288221b0'
|
151
|
-
expect(customer.language).to eq 'de-DE'
|
152
|
-
expect(customer.last_name ).to eq 'Doe'
|
153
|
-
expect(customer.locale).to eq 'de-DE'
|
154
|
-
expect(customer.vat_id).to eq 'DE123456710'
|
155
|
-
expect(customer.address.city).to eq 'Example City'
|
156
|
-
expect(customer.address.country).to eq 'DE'
|
157
|
-
expect(customer.address.house_number).to eq '42'
|
158
|
-
expect(customer.address.postal_code).to eq '12345'
|
159
|
-
expect(customer.address.street).to eq 'Example Street'
|
160
|
-
end
|
161
|
-
end
|
162
|
-
|
163
|
-
describe ".customer" do
|
164
|
-
it "requests the correct resource" do
|
165
|
-
client = PactasItero::Client.new(bearer_token: "bearer_token")
|
166
|
-
request = stub_get("/api/v1/customers/customer-id").to_return(
|
167
|
-
body: fixture("customer.json"),
|
168
|
-
headers: { content_type: "application/json; charset=utf-8" },
|
169
|
-
)
|
170
|
-
|
171
|
-
client.customer("customer-id")
|
172
|
-
|
173
|
-
expect(request).to have_been_made
|
174
|
-
end
|
175
|
-
|
176
|
-
it "returns the customer details" do
|
177
|
-
client = PactasItero::Client.new(bearer_token: "bearer_token")
|
178
|
-
stub_get("/api/v1/customers/customer-id").to_return(
|
179
|
-
body: fixture("customer.json"),
|
180
|
-
headers: { content_type: "application/json; charset=utf-8" },
|
181
|
-
)
|
182
|
-
|
183
|
-
customer = client.customer("customer-id")
|
184
|
-
|
185
|
-
address = customer.address
|
186
|
-
expect(address.city).to eq "Example City"
|
187
|
-
expect(address.country).to eq "DE"
|
188
|
-
expect(address.house_number).to eq "42"
|
189
|
-
expect(address.postal_code).to eq "12345"
|
190
|
-
expect(address.street).to eq "Example Street"
|
191
|
-
|
192
|
-
expect(customer.company_name).to eq "Example Company"
|
193
|
-
expect(customer.default_bearer_medium).to eq"Email"
|
194
|
-
expect(customer.email_address).to eq "jane.doe@example.com"
|
195
|
-
expect(customer.external_customer_id).to eq "1234"
|
196
|
-
expect(customer.first_name).to eq "Jane"
|
197
|
-
expect(customer.language).to eq "de-DE"
|
198
|
-
expect(customer.last_name).to eq "Doe"
|
199
|
-
expect(customer.locale).to eq "de-DE"
|
200
|
-
expect(customer.vat_id).to eq "DE123456710"
|
201
|
-
end
|
202
|
-
end
|
203
|
-
|
204
|
-
describe '.update_customer' do
|
205
|
-
it 'requests the correct resource' do
|
206
|
-
client = PactasItero::Client.new(bearer_token: 'bt')
|
207
|
-
request = stub_patch('/api/v1/customers/customer-id').
|
208
|
-
with(
|
209
|
-
body: {
|
210
|
-
CompanyName: 'example & sons',
|
211
|
-
VatId: 'DE555',
|
212
|
-
Address: { Street: 'abc street' }
|
213
|
-
}.to_json
|
214
|
-
).
|
215
|
-
to_return(
|
216
|
-
body: fixture('customer.json'),
|
217
|
-
headers: { content_type: 'application/json; charset=utf-8'}
|
218
|
-
)
|
219
|
-
|
220
|
-
client.update_customer('customer-id', {
|
221
|
-
company_name: 'example & sons',
|
222
|
-
vat_id: 'DE555',
|
223
|
-
address: { street: 'abc street' }
|
224
|
-
})
|
225
|
-
|
226
|
-
expect(request).to have_been_made
|
227
|
-
end
|
228
|
-
end
|
229
|
-
end
|