aboutsummaryrefslogtreecommitdiffstats
path: root/ship_test.go
blob: bd5432d1d6cc210b9e8f65ffafec30504444dcfb (plain) (blame)
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
package lulu

import (
	_ "embed"
	"testing"

	"github.com/stretchr/testify/require"
)

//go:embed testdata/shipaddrresp.json
var shipAddrRespJson string

var shipAddrSample = ShippingAddress{
	City:       "Lübeck",
	Country:    "DE",
	IsBusiness: false,
	Name:       "Hans Dampf",
	Phone:      MustParsePhoneNumber("844-212-0689"),
	PostCode:   "23552",
	State:      "",
	Street1:    "Holstenstr. 40",
	Street2:    "",
}
var shipWarningsSample = []ShippingAddressWarning{{
	Type: "validation_warning",
	Path: "external",
	Code: "REPLACED",
	Msg:  "street1: Holstenstr. 40 -> Holstenstraße 40",
}}
var suggestedShipAddrSample = ShippingAddress{
	Country:  "DE",
	State:    "",
	PostCode: "23552",
	City:     "Lübeck",
	Street1:  "Holstenstraße 40",
}
var shipAddrValidationSample = ShippingAddressValidation{
	Address:   shipAddrSample,
	Warnings:  shipWarningsSample,
	Suggested: suggestedShipAddrSample,
}

func TestUnmarshalShippingAddressValidation(t *testing.T) {
	requireUnmarshalJsonEq(t, shipAddrValidationSample, shipAddrRespJson)
}

func requireMatchShipAddrValidationSample(t *testing.T, av ShippingAddressValidation) {
	t.Helper()
	requireMatchShipAddrSample(t, av.Address)
	requireMatchShipWarningsSample(t, av.Warnings)
	requireMatchSuggestedShipAddrSample(t, av.Suggested)
}

func requireMatchShipAddrSample(t *testing.T, addr ShippingAddress) {
	t.Helper()
	require.Equal(t, shipAddrSample.City, addr.City)
	require.Equal(t, shipAddrSample.Country, addr.Country)
	require.Equal(t, shipAddrSample.IsBusiness, addr.IsBusiness)
	require.Equal(t, shipAddrSample.Name, addr.Name)
	require.Equal(t, shipAddrSample.Phone, addr.Phone)
	require.Equal(t, shipAddrSample.PostCode, addr.PostCode)
	require.Equal(t, shipAddrSample.State, addr.State)
	require.Equal(t, shipAddrSample.Street1, addr.Street1)
	require.Equal(t, shipAddrSample.Street2, addr.Street2)
}

func requireMatchShipWarningsSample(t *testing.T, warns []ShippingAddressWarning) {
	t.Helper()
	require.Equal(t, shipWarningsSample, warns)
}

func requireMatchSuggestedShipAddrSample(t *testing.T, sug ShippingAddress) {
	t.Helper()
	require.Equal(t, suggestedShipAddrSample.Country, sug.Country)
	require.Equal(t, suggestedShipAddrSample.State, sug.State)
	require.Equal(t, suggestedShipAddrSample.PostCode, sug.PostCode)
	require.Equal(t, suggestedShipAddrSample.City, sug.City)
	require.Equal(t, suggestedShipAddrSample.Street1, sug.Street1)
}