boosty

Форк
0
/
subscribers_test.go 
172 строки · 3.9 Кб
1
package boosty
2

3
import (
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

15
type SubscribersTestSuite struct {
16
	suite.Suite
17
}
18

19
func (s *SubscribersTestSuite) SetupTest() {
20
	//
21
}
22

23
func (s *SubscribersTestSuite) TestSubscribers() {
24
	tests := map[string]struct {
25
		count int
26
		body  string
27
		name  string
28
		token string
29
	}{
30
		"success count 2": {
31
			count: 2, body: subscribersBody, name: "getapp.store", token: "123",
32
		},
33
	}
34

35
	for name, test := range tests {
36
		s.T().Run(name, func(t *testing.T) {
37
			svr := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
38
				a := r.Header.Get("Authorization")
39

40
				s.Assert().Equal(a, "Bearer "+test.token)
41

42
				fmt.Fprintf(w, test.body)
43
			}))
44
			defer svr.Close()
45

46
			auth, err := auth.New(auth.WithInfo(auth.Info{
47
				AccessToken: test.token,
48
			}))
49
			s.Assert().NoError(err)
50

51
			req, err := request.New(
52
				request.WithUrl(svr.URL),
53
				request.WithAuth(auth),
54
				request.WithClient(&http.Client{}),
55
			)
56
			s.Assert().NoError(err)
57

58
			b, err := New("", WithRequest(req))
59
			s.Assert().NoError(err)
60

61
			v := url.Values{}
62
			v.Add("offset", "0")
63
			v.Add("limit", "10")
64
			v.Add("order", "gt")
65
			v.Add("sort_by", "on_time")
66

67
			ss, err := b.Subscribers(v)
68

69
			s.Assert().NoError(err)
70
			s.Assert().Equal(test.count, len(ss.Data))
71
			if len(ss.Data) > 0 {
72
				s.Assert().Equal(test.name, ss.Data[0].Name)
73
			}
74
		})
75
	}
76
}
77

78
const 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

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.