/
delivery_attempt_test.go
100 lines (82 loc) · 2.93 KB
/
delivery_attempt_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package repository
import (
"testing"
"github.com/allisson/postmand"
"github.com/google/uuid"
"github.com/stretchr/testify/assert"
)
func makeDeliveryAttempt() *postmand.DeliveryAttempt {
return &postmand.DeliveryAttempt{
ID: uuid.New(),
ResponseHeaders: `{"Content-Type": ["application/json; charset=utf-8"]}`,
ResponseBody: `{"message":"A requisição para registrar essa transação foi enviada."}`,
ResponseStatusCode: 201,
ExecutionDuration: 150,
Success: true,
Error: "",
}
}
func TestDeliveryAttempt(t *testing.T) {
t.Run("Create delivery attempt", func(t *testing.T) {
th := newTestHelper()
defer th.db.Close()
webhook := makeWebhook()
err := th.webhookRepository.Create(webhook)
assert.Nil(t, err)
delivery := makeDelivery()
delivery.WebhookID = webhook.ID
err = th.deliveryRepository.Create(delivery)
assert.Nil(t, err)
deliveryAttempt := makeDeliveryAttempt()
deliveryAttempt.WebhookID = webhook.ID
deliveryAttempt.DeliveryID = delivery.ID
err = th.deliveryAttemptRepository.Create(deliveryAttempt)
assert.Nil(t, err)
})
t.Run("Get delivery attempt", func(t *testing.T) {
th := newTestHelper()
defer th.db.Close()
webhook := makeWebhook()
err := th.webhookRepository.Create(webhook)
assert.Nil(t, err)
delivery := makeDelivery()
delivery.WebhookID = webhook.ID
err = th.deliveryRepository.Create(delivery)
assert.Nil(t, err)
deliveryAttempt := makeDeliveryAttempt()
deliveryAttempt.WebhookID = webhook.ID
deliveryAttempt.DeliveryID = delivery.ID
err = th.deliveryAttemptRepository.Create(deliveryAttempt)
assert.Nil(t, err)
options := postmand.RepositoryGetOptions{Filters: map[string]interface{}{"id": deliveryAttempt.ID}}
deliveryAttemptFromRepository, err := th.deliveryAttemptRepository.Get(options)
assert.Nil(t, err)
assert.Equal(t, deliveryAttempt.ID, deliveryAttemptFromRepository.ID)
})
t.Run("List delivery attempts", func(t *testing.T) {
th := newTestHelper()
defer th.db.Close()
webhook := makeWebhook()
err := th.webhookRepository.Create(webhook)
assert.Nil(t, err)
delivery := makeDelivery()
delivery.WebhookID = webhook.ID
err = th.deliveryRepository.Create(delivery)
assert.Nil(t, err)
deliveryAttempt1 := makeDeliveryAttempt()
deliveryAttempt1.WebhookID = webhook.ID
deliveryAttempt1.DeliveryID = delivery.ID
err = th.deliveryAttemptRepository.Create(deliveryAttempt1)
assert.Nil(t, err)
deliveryAttempt2 := makeDeliveryAttempt()
deliveryAttempt2.WebhookID = webhook.ID
deliveryAttempt2.DeliveryID = delivery.ID
err = th.deliveryAttemptRepository.Create(deliveryAttempt2)
assert.Nil(t, err)
options := postmand.RepositoryListOptions{Limit: 1, Offset: 1, OrderBy: "created_at DESC"}
deliveryAttempts, err := th.deliveryAttemptRepository.List(options)
assert.Nil(t, err)
assert.Len(t, deliveryAttempts, 1)
assert.Equal(t, deliveryAttempt2.ID, deliveryAttempts[0].ID)
})
}