Passed
Push — main ( bfa351...6a5c27 )
by Acho
02:11
created

Service_GenerateWithError   A

Complexity

Conditions 1

Size

Total Lines 26
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 15
nop 1
dl 0
loc 26
rs 9.65
c 0
b 0
f 0
1
package lemonsqueezy
2
3
import (
4
	"context"
5
	"net/http"
6
	"testing"
7
8
	"github.com/NdoleStudio/lemonsqueezy-go/internal/helpers"
9
	"github.com/NdoleStudio/lemonsqueezy-go/internal/stubs"
10
	"github.com/stretchr/testify/assert"
11
)
12
13
func TestSubscriptionInvoicesService_Get(t *testing.T) {
14
	// Setup
15
	t.Parallel()
16
17
	// Arrange
18
	server := helpers.MakeTestServer(http.StatusOK, stubs.SubscriptionInvoiceGetResponse())
19
	client := New(WithBaseURL(server.URL))
20
21
	// Act
22
	invoice, response, err := client.SubscriptionInvoices.Get(context.Background(), "1")
23
24
	// Assert
25
	assert.Nil(t, err)
26
27
	assert.Equal(t, http.StatusOK, response.HTTPResponse.StatusCode)
28
	assert.Equal(t, stubs.SubscriptionInvoiceGetResponse(), *response.Body)
29
	assert.Equal(t, "1", invoice.Data.ID)
30
31
	// Teardown
32
	server.Close()
33
}
34
35
func TestSubscriptionInvoicesService_GetWithError(t *testing.T) {
36
	// Setup
37
	t.Parallel()
38
39
	// Arrange
40
	server := helpers.MakeTestServer(http.StatusInternalServerError, nil)
41
	client := New(WithBaseURL(server.URL))
42
43
	// Act
44
	_, response, err := client.SubscriptionInvoices.Get(context.Background(), "1")
45
46
	// Assert
47
	assert.NotNil(t, err)
48
49
	assert.Equal(t, http.StatusInternalServerError, response.HTTPResponse.StatusCode)
50
51
	// Teardown
52
	server.Close()
53
}
54
55
func TestSubscriptionInvoicesService_List(t *testing.T) {
56
	// Setup
57
	t.Parallel()
58
59
	// Arrange
60
	server := helpers.MakeTestServer(http.StatusOK, stubs.SubscriptionInvoicesListResponse())
61
	client := New(WithBaseURL(server.URL))
62
63
	// Act
64
	invoices, response, err := client.SubscriptionInvoices.List(context.Background())
65
66
	// Assert
67
	assert.Nil(t, err)
68
69
	assert.Equal(t, http.StatusOK, response.HTTPResponse.StatusCode)
70
	assert.Equal(t, stubs.SubscriptionInvoicesListResponse(), *response.Body)
71
	assert.Equal(t, 1, len(invoices.Data))
72
73
	// Teardown
74
	server.Close()
75
}
76
77
func TestSubscriptionInvoicesService_ListWithError(t *testing.T) {
78
	// Setup
79
	t.Parallel()
80
81
	// Arrange
82
	server := helpers.MakeTestServer(http.StatusInternalServerError, nil)
83
	client := New(WithBaseURL(server.URL))
84
85
	// Act
86
	_, response, err := client.SubscriptionInvoices.List(context.Background())
87
88
	// Assert
89
	assert.NotNil(t, err)
90
91
	assert.Equal(t, http.StatusInternalServerError, response.HTTPResponse.StatusCode)
92
93
	// Teardown
94
	server.Close()
95
}
96
97
func TestSubscriptionInvoicesService_Generate(t *testing.T) {
98
	// Setup
99
	t.Parallel()
100
101
	// Arrange
102
	server := helpers.MakeTestServer(http.StatusOK, stubs.SubscriptionInvoicesListResponse())
103
	client := New(WithBaseURL(server.URL))
104
105
	// Act
106
	invoices, response, err := client.SubscriptionInvoices.List(context.Background())
107
108
	// Assert
109
	assert.Nil(t, err)
110
111
	assert.Equal(t, http.StatusOK, response.HTTPResponse.StatusCode)
112
	assert.Equal(t, stubs.SubscriptionInvoicesListResponse(), *response.Body)
113
	assert.Equal(t, 1, len(invoices.Data))
114
115
	// Teardown
116
	server.Close()
117
}
118
119
func TestSubscriptionInvoicesService_GenerateWithError(t *testing.T) {
120
	// Setup
121
	t.Parallel()
122
123
	// Arrange
124
	server := helpers.MakeTestServer(http.StatusInternalServerError, nil)
125
	client := New(WithBaseURL(server.URL))
126
127
	// Act
128
	_, response, err := client.SubscriptionInvoices.Generate(context.Background(), "1234", map[string]string{
129
		"address":  "123 Main St",
130
		"city":     "Anytown",
131
		"country":  "US",
132
		"name":     "John Doe",
133
		"notes":    "Thank you for your business",
134
		"state":    "CA",
135
		"zip_code": "12345",
136
	})
137
138
	// Assert
139
	assert.NotNil(t, err)
140
141
	assert.Equal(t, http.StatusInternalServerError, response.HTTPResponse.StatusCode)
142
143
	// Teardown
144
	server.Close()
145
}
146