boosty

Форк
0
/
targets_test.go 
92 строки · 2.1 Кб
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 TargetsTestSuite struct {
16
	suite.Suite
17
}
18

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

23
func (s *TargetsTestSuite) TestStats() {
24
	tests := map[string]struct {
25
		targetsCount int
26
		bloggerId    int
27
		targetSum    int
28
		body         string
29
		token        string
30
	}{
31
		"success stats": {
32
			targetsCount: 1, bloggerId: 10435460, targetSum: 1000, body: targetsBody, token: "123",
33
		},
34
	}
35

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

41
				s.Assert().Equal(auth, "Bearer "+test.token)
42

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

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

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

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

62
			values := url.Values{}
63
			values.Add("show_deleted", "true")
64

65
			stats, err := b.Targets(values)
66

67
			s.Assert().NoError(err)
68
			s.Assert().Equal(test.targetsCount, len(stats.Data))
69
			s.Assert().Equal(test.bloggerId, stats.Data[0].BloggerID)
70
			s.Assert().Equal(test.targetSum, stats.Data[0].TargetSum)
71
		})
72
	}
73
}
74

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

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

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

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

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