boosty
/
subscriptions_test.go
207 строк · 4.2 Кб
1package boosty2
3import (4"fmt"5"net/http"6"net/http/httptest"7"net/url"8"testing"9
10"github.com/stretchr/testify/suite"11"gohome.4gophers.ru/getapp/boosty/auth"12"gohome.4gophers.ru/getapp/boosty/request"13)
14
15type SubscriptionsTestSuite struct {16suite.Suite17}
18
19func (s *SubscriptionsTestSuite) SetupTest() {20//21}
22
23func (s *SubscriptionsTestSuite) TestSubscriptions() {24tests := map[string]struct {25count int26body string27name string28token string29}{30"success count 3": {31count: 3, body: subscriptionsBody, name: "Follower", token: "123",32},33}34
35for name, test := range tests {36s.T().Run(name, func(t *testing.T) {37svr := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {38auth := r.Header.Get("Authorization")39
40s.Assert().Equal(auth, "Bearer "+test.token)41
42fmt.Fprintf(w, test.body)43}))44defer svr.Close()45
46auth, err := auth.New(auth.WithInfo(auth.Info{47AccessToken: test.token,48}))49s.Assert().NoError(err)50
51req, err := request.New(52request.WithUrl(svr.URL),53request.WithAuth(auth),54request.WithClient(&http.Client{}),55)56s.Assert().NoError(err)57
58b, err := New("", WithRequest(req))59s.Assert().NoError(err)60
61v := url.Values{}62v.Add("show_free_level", "true")63v.Add("sort_by", "on_time")64v.Add("offset", "0")65v.Add("limit", "10")66v.Add("order", "gt")67
68ss, err := b.Subscriptions(v)69
70s.Assert().NoError(err)71s.Assert().Equal(test.count, len(ss.Data))72if len(ss.Data) > 0 {73s.Assert().Equal(test.name, ss.Data[0].Name)74}75})76}77}
78
79const subscriptionsBody = `80{
81"currentId": null,
82"subscriptions": [],
83"nextId": null,
84"data": [
85{
86"currencyPrices": {
87"USD": 0,
88"RUB": 0
89},
90"promos": [],
91"externalApps": {
92"telegram": {
93"groups": [],
94"isConfigured": false
95},
96"discord": {
97"isConfigured": false,
98"data": {
99"role": {
100"name": "",
101"id": ""
102}
103}
104}
105},
106"id": 1091770,
107"price": 0,
108"ownerId": 10435460,
109"isArchived": false,
110"createdAt": 1664319306,
111"name": "Follower",
112"badges": [],
113"data": [],
114"deleted": false
115},
116{
117"promos": [],
118"currencyPrices": {
119"RUB": 300,
120"USD": 3.2
121},
122"ownerId": 10435460,
123"isArchived": false,
124"externalApps": {
125"telegram": {
126"isConfigured": false,
127"groups": []
128},
129"discord": {
130"isConfigured": false,
131"data": {
132"role": {
133"name": "",
134"id": ""
135}
136}
137}
138},
139"price": 300,
140"id": 1091773,
141"createdAt": 1664319534,
142"deleted": false,
143"data": [
144{
145"modificator": "",
146"type": "text",
147"content": "[\"Узнавай про фикс багов самый первый\",\"unstyled\",[]]"
148},
149{
150"modificator": "BLOCK_END",
151"type": "text",
152"content": ""
153},
154{
155"content": "",
156"type": "text",
157"modificator": "BLOCK_END"
158}
159],
160"name": "Стандартная подписка",
161"badges": []
162},
163{
164"isArchived": false,
165"ownerId": 10435460,
166"price": 700,
167"id": 1122632,
168"externalApps": {
169"discord": {
170"isConfigured": false,
171"data": {
172"role": {
173"id": "",
174"name": ""
175}
176}
177},
178"telegram": {
179"groups": [],
180"isConfigured": false
181}
182},
183"promos": [],
184"currencyPrices": {
185"USD": 7.5,
186"RUB": 700
187},
188"deleted": false,
189"data": [
190{
191"modificator": "",
192"type": "text",
193"content": "[\"Заказывай новые фичи\",\"unstyled\",[]]"
194},
195{
196"content": "",
197"type": "text",
198"modificator": "BLOCK_END"
199}
200],
201"badges": [],
202"name": "Расширенная подписка",
203"createdAt": 1665493091
204}
205]
206}
207`
208