Passed
Push — main ( b6acc3...d081c0 )
by Acho
01:28
created

lemonsqueezy.TestDiscountsService_Create   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 TestDiscountsService_Create(t *testing.T) {
14
	// Setup
15
	t.Parallel()
16
17
	// Arrange
18
	server := helpers.MakeTestServer(http.StatusCreated, stubs.DiscountGetResponse())
19
	client := New(WithBaseURL(server.URL))
20
21
	// Act
22
	discount, response, err := client.Discounts.Create(context.Background(), &DiscountCreateParams{
23
		Name:       "10% Off",
24
		Code:       "10PERCENT",
25
		Amount:     10,
26
		AmountType: "percent",
27
		StoreID:    "1",
28
	})
29
30
	// Assert
31
	assert.Nil(t, err)
32
33
	assert.Equal(t, http.StatusCreated, response.HTTPResponse.StatusCode)
34
	assert.Equal(t, stubs.DiscountGetResponse(), *response.Body)
35
	assert.Equal(t, "1", discount.Data.ID)
36
37
	// Teardown
38
	server.Close()
39
}
40
41
func TestDiscountsService_CreateWithError(t *testing.T) {
42
	// Setup
43
	t.Parallel()
44
45
	// Arrange
46
	server := helpers.MakeTestServer(http.StatusInternalServerError, nil)
47
	client := New(WithBaseURL(server.URL))
48
49
	// Act
50
	_, response, err := client.Discounts.Create(context.Background(), &DiscountCreateParams{
51
		Name:       "10% Off",
52
		Code:       "10PERCENT",
53
		Amount:     10,
54
		AmountType: "percent",
55
		StoreID:    "1",
56
	})
57
58
	// Assert
59
	assert.NotNil(t, err)
60
61
	assert.Equal(t, http.StatusInternalServerError, response.HTTPResponse.StatusCode)
62
63
	// Teardown
64
	server.Close()
65
}
66
67
func TestDiscountsService_Get(t *testing.T) {
68
	// Setup
69
	t.Parallel()
70
71
	// Arrange
72
	server := helpers.MakeTestServer(http.StatusOK, stubs.DiscountGetResponse())
73
	client := New(WithBaseURL(server.URL))
74
75
	// Act
76
	discount, response, err := client.Discounts.Get(context.Background(), "1")
77
78
	// Assert
79
	assert.Nil(t, err)
80
81
	assert.Equal(t, http.StatusOK, response.HTTPResponse.StatusCode)
82
	assert.Equal(t, stubs.DiscountGetResponse(), *response.Body)
83
	assert.Equal(t, "1", discount.Data.ID)
84
85
	// Teardown
86
	server.Close()
87
}
88
89
func TestDiscountsService_GetWithError(t *testing.T) {
90
	// Setup
91
	t.Parallel()
92
93
	// Arrange
94
	server := helpers.MakeTestServer(http.StatusInternalServerError, nil)
95
	client := New(WithBaseURL(server.URL))
96
97
	// Act
98
	_, response, err := client.Discounts.Get(context.Background(), "1")
99
100
	// Assert
101
	assert.NotNil(t, err)
102
103
	assert.Equal(t, http.StatusInternalServerError, response.HTTPResponse.StatusCode)
104
105
	// Teardown
106
	server.Close()
107
}
108
109
func TestDiscountsService_Delete(t *testing.T) {
110
	// Setup
111
	t.Parallel()
112
113
	// Arrange
114
	server := helpers.MakeTestServer(http.StatusNoContent, nil)
115
	client := New(WithBaseURL(server.URL))
116
117
	// Act
118
	response, err := client.Discounts.Delete(context.Background(), "1")
119
120
	// Assert
121
	assert.Nil(t, err)
122
123
	assert.Equal(t, http.StatusNoContent, response.HTTPResponse.StatusCode)
124
125
	// Teardown
126
	server.Close()
127
}
128
129
func TestDiscountsService_DeleteWithError(t *testing.T) {
130
	// Setup
131
	t.Parallel()
132
133
	// Arrange
134
	server := helpers.MakeTestServer(http.StatusInternalServerError, nil)
135
	client := New(WithBaseURL(server.URL))
136
137
	// Act
138
	response, err := client.Discounts.Delete(context.Background(), "1")
139
140
	// Assert
141
	assert.NotNil(t, err)
142
143
	assert.Equal(t, http.StatusInternalServerError, response.HTTPResponse.StatusCode)
144
145
	// Teardown
146
	server.Close()
147
}
148
149
func TestDiscountsService_List(t *testing.T) {
150
	// Setup
151
	t.Parallel()
152
153
	// Arrange
154
	server := helpers.MakeTestServer(http.StatusOK, stubs.DiscountsListResponse())
155
	client := New(WithBaseURL(server.URL))
156
157
	// Act
158
	discounts, response, err := client.Discounts.List(context.Background())
159
160
	// Assert
161
	assert.Nil(t, err)
162
163
	assert.Equal(t, http.StatusOK, response.HTTPResponse.StatusCode)
164
	assert.Equal(t, stubs.DiscountsListResponse(), *response.Body)
165
	assert.Equal(t, 1, len(discounts.Data))
166
167
	// Teardown
168
	server.Close()
169
}
170
171
func TestDiscountsService_ListWithError(t *testing.T) {
172
	// Setup
173
	t.Parallel()
174
175
	// Arrange
176
	server := helpers.MakeTestServer(http.StatusInternalServerError, nil)
177
	client := New(WithBaseURL(server.URL))
178
179
	// Act
180
	_, response, err := client.Discounts.List(context.Background())
181
182
	// Assert
183
	assert.NotNil(t, err)
184
185
	assert.Equal(t, http.StatusInternalServerError, response.HTTPResponse.StatusCode)
186
187
	// Teardown
188
	server.Close()
189
}
190