v1_test.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package v1_test
  2. import (
  3. "net/http"
  4. "testing"
  5. . "github.com/onsi/ginkgo"
  6. . "github.com/onsi/gomega"
  7. v1 "github.com/vladimirok5959/golang-donatello/donatello/v1"
  8. "golang.org/x/net/context"
  9. )
  10. const MockMeData = `{
  11. "nickname": "NickName",
  12. "pubId": "A1B-A123456",
  13. "page": "https://donatello.to/nickname",
  14. "isActive": true,
  15. "isPublic": true,
  16. "donates": {
  17. "totalAmount": 100,
  18. "totalCount": 1
  19. },
  20. "createdAt": "2022-10-20 00:30:50"
  21. }`
  22. const MockDonatesData = `{
  23. "content": [
  24. {
  25. "pubId": "A1B-A123456",
  26. "clientName": "ClientName",
  27. "message": "Message",
  28. "amount": "100",
  29. "currency": "UAH",
  30. "isPublished": false,
  31. "createdAt": "2022-10-20 00:30:50"
  32. }
  33. ],
  34. "page": 1,
  35. "size": 20,
  36. "pages": 1,
  37. "first": true,
  38. "last": true,
  39. "total": 1
  40. }`
  41. const MockClientsData = `{
  42. "clients": [
  43. {
  44. "clientName": "ClientName",
  45. "totalAmount": 100
  46. }
  47. ]
  48. }`
  49. var _ = Describe("Client", func() {
  50. Context("Func", func() {
  51. var api *v1.ClientFakeAPI
  52. var client *v1.Client
  53. var ctx context.Context
  54. BeforeEach(func() {
  55. api = v1.NewClientFakeAPI()
  56. client = v1.NewClient(api)
  57. ctx = context.Background()
  58. })
  59. Context("Me", func() {
  60. It("respond as unauthorized", func() {
  61. resp, err := client.Me(ctx)
  62. Expect(err).To(Succeed())
  63. Expect(resp.Success).To(BeFalse())
  64. Expect(resp.Message).To(Equal("Помилка авторизації"))
  65. })
  66. It("respond with correct data", func() {
  67. api.MockMe = func() (int64, []byte, error) {
  68. return http.StatusOK, []byte(MockMeData), nil
  69. }
  70. resp, err := client.Me(ctx)
  71. Expect(err).To(Succeed())
  72. Expect(resp.Success).To(BeTrue())
  73. Expect(resp.Message).To(Equal(""))
  74. Expect(resp.NickName).To(Equal("NickName"))
  75. Expect(resp.PubID).To(Equal("A1B-A123456"))
  76. Expect(resp.Page).To(Equal("https://donatello.to/nickname"))
  77. Expect(resp.IsActive).To(BeTrue())
  78. Expect(resp.IsPublic).To(BeTrue())
  79. Expect(resp.Donates).To(Equal(v1.ResponseMeDonates{
  80. TotalAmount: 100,
  81. TotalCount: 1,
  82. }))
  83. Expect(resp.CreatedAt).To(Equal("2022-10-20 00:30:50"))
  84. })
  85. })
  86. Context("Donates", func() {
  87. It("respond as unauthorized", func() {
  88. resp, err := client.Donates(ctx, 1, 20)
  89. Expect(err).To(Succeed())
  90. Expect(resp.Success).To(BeFalse())
  91. Expect(resp.Message).To(Equal("Помилка авторизації"))
  92. })
  93. It("respond with correct data", func() {
  94. api.MockDonates = func(page, size int64) (int64, []byte, error) {
  95. return http.StatusOK, []byte(MockDonatesData), nil
  96. }
  97. resp, err := client.Donates(ctx, 1, 20)
  98. Expect(err).To(Succeed())
  99. Expect(resp.Success).To(BeTrue())
  100. Expect(resp.Message).To(Equal(""))
  101. Expect(resp.Content).To(Equal([]v1.ResponseDonatesContent{
  102. {
  103. PubID: "A1B-A123456",
  104. ClientName: "ClientName",
  105. Message: "Message",
  106. Amount: "100",
  107. Currency: "UAH",
  108. Goal: "",
  109. IsPublished: false,
  110. CreatedAt: "2022-10-20 00:30:50",
  111. },
  112. }))
  113. Expect(resp.Content[0].AmountInt64()).To(Equal(int64(100)))
  114. Expect(resp.Page).To(Equal(int64(1)))
  115. Expect(resp.Size).To(Equal(int64(20)))
  116. Expect(resp.Pages).To(Equal(int64(1)))
  117. Expect(resp.First).To(BeTrue())
  118. Expect(resp.Last).To(BeTrue())
  119. Expect(resp.Total).To(Equal(int64(1)))
  120. })
  121. })
  122. Context("Clients", func() {
  123. It("respond as unauthorized", func() {
  124. resp, err := client.Clients(ctx)
  125. Expect(err).To(Succeed())
  126. Expect(resp.Success).To(BeFalse())
  127. Expect(resp.Message).To(Equal("Помилка авторизації"))
  128. })
  129. It("respond with correct data", func() {
  130. api.MockClients = func() (int64, []byte, error) {
  131. return http.StatusOK, []byte(MockClientsData), nil
  132. }
  133. resp, err := client.Clients(ctx)
  134. Expect(err).To(Succeed())
  135. Expect(resp.Success).To(BeTrue())
  136. Expect(resp.Message).To(Equal(""))
  137. Expect(resp.Clients).To(Equal([]v1.ResponseClientsClients{
  138. {
  139. ClientName: "ClientName",
  140. TotalAmount: 100,
  141. },
  142. }))
  143. })
  144. })
  145. })
  146. })
  147. func TestSuite(t *testing.T) {
  148. RegisterFailHandler(Fail)
  149. RunSpecs(t, "Client")
  150. }