boosty
/
subscribers_test.go
172 строки · 3.9 Кб
1package boosty
2
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 SubscribersTestSuite struct {
16suite.Suite
17}
18
19func (s *SubscribersTestSuite) SetupTest() {
20//
21}
22
23func (s *SubscribersTestSuite) TestSubscribers() {
24tests := map[string]struct {
25count int
26body string
27name string
28token string
29}{
30"success count 2": {
31count: 2, body: subscribersBody, name: "getapp.store", 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) {
38a := r.Header.Get("Authorization")
39
40s.Assert().Equal(a, "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("offset", "0")
63v.Add("limit", "10")
64v.Add("order", "gt")
65v.Add("sort_by", "on_time")
66
67ss, err := b.Subscribers(v)
68
69s.Assert().NoError(err)
70s.Assert().Equal(test.count, len(ss.Data))
71if len(ss.Data) > 0 {
72s.Assert().Equal(test.name, ss.Data[0].Name)
73}
74})
75}
76}
77
78const subscribersBody = `
79{
80"limit": 2,
81"data": [
82{
83"subscribed": true,
84"price": 300,
85"payments": 2970,
86"hasAvatar": true,
87"nextPayTime": 1699209830,
88"id": 3684586,
89"level": {
90"ownerId": 10435460,
91"price": 300,
92"data": [
93{
94"type": "text",
95"modificator": "",
96"content": "[\"Узнавай про фикс багов самый первый\",\"unstyled\",[]]"
97},
98{
99"type": "text",
100"modificator": "BLOCK_END",
101"content": ""
102},
103{
104"type": "text",
105"modificator": "BLOCK_END",
106"content": ""
107}
108],
109"isArchived": false,
110"name": "Стандартная подписка",
111"createdAt": 1664319534,
112"id": 1091773,
113"currencyPrices": {
114"RUB": 300,
115"USD": 3.2
116},
117"deleted": false
118},
119"name": "getapp.store",
120"avatarUrl": "https://images.boosty.to/user/3684586/avatar?change_time=1664275665",
121"email": "artem.kovardin@gmail.com",
122"onTime": 1670697830,
123"isBlackListed": false
124},
125{
126"price": 300,
127"subscribed": true,
128"id": 11222871,
129"nextPayTime": 1697748053,
130"hasAvatar": true,
131"payments": 3240,
132"email": "",
133"avatarUrl": "https://images.boosty.to/user/11222871/avatar?change_time=1666643907",
134"name": "Lena Nesterenko",
135"level": {
136"data": [
137{
138"type": "text",
139"modificator": "",
140"content": "[\"Узнавай про фикс багов самый первый\",\"unstyled\",[]]"
141},
142{
143"type": "text",
144"modificator": "BLOCK_END",
145"content": ""
146},
147{
148"modificator": "BLOCK_END",
149"type": "text",
150"content": ""
151}
152],
153"isArchived": false,
154"createdAt": 1664319534,
155"name": "Стандартная подписка",
156"ownerId": 10435460,
157"price": 300,
158"currencyPrices": {
159"RUB": 300,
160"USD": 3.2
161},
162"deleted": false,
163"id": 1091773
164},
165"isBlackListed": false,
166"onTime": 1666644053
167}
168],
169"offset": 2,
170"total": 2
171}
172`
173