boosty

Форк
0
/
subscriptions_test.go 
207 строк · 4.2 Кб
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 SubscriptionsTestSuite struct {
16
	suite.Suite
17
}
18

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

23
func (s *SubscriptionsTestSuite) TestSubscriptions() {
24
	tests := map[string]struct {
25
		count int
26
		body  string
27
		name  string
28
		token string
29
	}{
30
		"success count 3": {
31
			count: 3, body: subscriptionsBody, name: "Follower", 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
				auth := r.Header.Get("Authorization")
39

40
				s.Assert().Equal(auth, "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("show_free_level", "true")
63
			v.Add("sort_by", "on_time")
64
			v.Add("offset", "0")
65
			v.Add("limit", "10")
66
			v.Add("order", "gt")
67

68
			ss, err := b.Subscriptions(v)
69

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

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

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

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

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

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