/
address_test.exs
80 lines (66 loc) · 2.34 KB
/
address_test.exs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
defmodule Lob.AddressTest do
use ExUnit.Case
alias Lob.Address
setup do
%{
sample_address: %{
name: "TestAddress",
email: "test@test.com",
address_line1: "185 Berry Street",
address_line2: "Suite 6100",
address_city: "San Francisco",
address_state: "CA",
address_country: "US",
address_zip: "94107"
}
}
end
describe "list/2" do
test "lists addresses" do
{:ok, addresses, _headers} = Address.list()
assert addresses.object == "list"
end
test "includes total count" do
{:ok, addresses, _headers} = Address.list(%{include: ["total_count"]})
assert Map.get(addresses, :total_count) != nil
end
test "lists by limit" do
{:ok, addresses, _headers} = Address.list(%{limit: 2})
assert addresses.count == 2
end
test "filters by metadata" do
{:ok, addresses, _headers} = Address.list(%{metadata: %{foo: "bar"}})
assert addresses.count == 1
end
end
describe "retrieve/2" do
test "retrieves an address", %{sample_address: sample_address} do
{:ok, created_address, _headers} = Address.create(sample_address)
{:ok, retrieved_address, _headers} = Address.retrieve(created_address.id)
assert retrieved_address.name == created_address.name
end
end
describe "create/2" do
test "creates an address", %{sample_address: sample_address} do
{:ok, created_address, headers} = Address.create(sample_address)
assert created_address.name == String.upcase(sample_address.name)
assert Enum.member?(headers, {"X-Rate-Limit-Limit", "150"})
end
test "creates an address with metadata", %{sample_address: sample_address} do
{:ok, created_address, headers} =
sample_address
|> Map.merge(%{metadata: %{key: "value"}})
|> Address.create()
assert created_address.name == String.upcase(sample_address.name)
assert Enum.member?(headers, {"X-Rate-Limit-Limit", "150"})
end
end
describe "delete/2" do
test "deletes an address", %{sample_address: sample_address} do
{:ok, created_address, _headers} = Address.create(sample_address)
{:ok, deleted_address, _headers} = Address.delete(created_address.id)
assert deleted_address.id == created_address.id
assert deleted_address.deleted == true
end
end
end