lemonsqueezy.TestDiscountsService_Create   A
last analyzed

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