boosty
/
targets_test.go
92 строки · 2.1 Кб
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 TargetsTestSuite struct {
16suite.Suite
17}
18
19func (s *TargetsTestSuite) SetupTest() {
20//
21}
22
23func (s *TargetsTestSuite) TestStats() {
24tests := map[string]struct {
25targetsCount int
26bloggerId int
27targetSum int
28body string
29token string
30}{
31"success stats": {
32targetsCount: 1, bloggerId: 10435460, targetSum: 1000, body: targetsBody, token: "123",
33},
34}
35
36for name, test := range tests {
37s.T().Run(name, func(t *testing.T) {
38svr := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
39auth := r.Header.Get("Authorization")
40
41s.Assert().Equal(auth, "Bearer "+test.token)
42
43fmt.Fprintf(w, test.body)
44}))
45defer svr.Close()
46
47auth, err := auth.New(auth.WithInfo(auth.Info{
48AccessToken: test.token,
49}))
50s.Assert().NoError(err)
51
52req, err := request.New(
53request.WithUrl(svr.URL),
54request.WithAuth(auth),
55request.WithClient(&http.Client{}),
56)
57s.Assert().NoError(err)
58
59b, err := New("", WithRequest(req))
60s.Assert().NoError(err)
61
62values := url.Values{}
63values.Add("show_deleted", "true")
64
65stats, err := b.Targets(values)
66
67s.Assert().NoError(err)
68s.Assert().Equal(test.targetsCount, len(stats.Data))
69s.Assert().Equal(test.bloggerId, stats.Data[0].BloggerID)
70s.Assert().Equal(test.targetSum, stats.Data[0].TargetSum)
71})
72}
73}
74
75const targetsBody = `
76{
77"data": [
78{
79"currentSum": 4,
80"bloggerId": 10435460,
81"bloggerUrl": "getapp",
82"id": 242127,
83"type": "subscribers",
84"createdAt": 1665345059,
85"targetSum": 1000,
86"description": "С 1 000 подписчиков будет значительно проще заниматься проектом. Появится возможность сделать демо версию и оказывать поддержку.",
87"priority": 0,
88"finishTime": null
89}
90]
91}
92`
93