boosty
/
current_test.go
79 строк · 1.5 Кб
1package boosty
2
3import (
4"fmt"
5"net/http"
6"net/http/httptest"
7"testing"
8
9"github.com/stretchr/testify/suite"
10"gohome.4gophers.ru/getapp/boosty/auth"
11"gohome.4gophers.ru/getapp/boosty/request"
12)
13
14type CurrentTestSuite struct {
15suite.Suite
16}
17
18func (s *CurrentTestSuite) SetupTest() {
19//
20}
21
22func (s *BoostyTestSuite) TestStats() {
23tests := map[string]struct {
24followersCount int
25paidCount int
26body string
27token string
28}{
29"success stats": {
30followersCount: 0, paidCount: 0, body: currentBody, token: "123",
31},
32}
33
34for name, test := range tests {
35s.T().Run(name, func(t *testing.T) {
36svr := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
37auth := r.Header.Get("Authorization")
38
39s.Assert().Equal(auth, "Bearer "+test.token)
40
41fmt.Fprintf(w, test.body)
42}))
43defer svr.Close()
44
45auth, err := auth.New(auth.WithInfo(auth.Info{
46AccessToken: test.token,
47}))
48s.Assert().NoError(err)
49
50req, err := request.New(
51request.WithUrl(svr.URL),
52request.WithAuth(auth),
53request.WithClient(&http.Client{}),
54)
55s.Assert().NoError(err)
56
57b, err := New("", WithRequest(req))
58s.Assert().NoError(err)
59
60stats, err := b.Current()
61
62s.Assert().NoError(err)
63s.Assert().Equal(test.followersCount, stats.FollowersCount)
64s.Assert().Equal(test.paidCount, stats.FollowersCount)
65
66})
67}
68}
69
70const currentBody = `
71{
72"followersCount": 0,
73"income": 6210,
74"balance": 0,
75"payoutSum": 6210,
76"paidCount": 2,
77"hold": 0
78}
79`
80