2017-10-30 15:33:26 -07:00
|
|
|
package webhook
|
2017-10-26 14:36:52 -07:00
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/go-pg/pg"
|
|
|
|
"github.com/mxpv/patreon-go"
|
|
|
|
"github.com/mxpv/podsync/pkg/models"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestCreate(t *testing.T) {
|
|
|
|
pledge := createPledge()
|
|
|
|
|
|
|
|
hook := createHandler(t)
|
2017-10-30 17:26:46 -07:00
|
|
|
err := hook.Handle(pledge, patreon.EventCreatePledge)
|
2017-10-26 14:36:52 -07:00
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
model := &models.Pledge{PledgeID: 12345}
|
|
|
|
err = hook.db.Select(model)
|
|
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, pledge.Attributes.AmountCents, model.AmountCents)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestUpdate(t *testing.T) {
|
|
|
|
pledge := createPledge()
|
|
|
|
|
|
|
|
hook := createHandler(t)
|
2017-10-30 17:26:46 -07:00
|
|
|
err := hook.Handle(pledge, patreon.EventCreatePledge)
|
2017-10-26 14:36:52 -07:00
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
pledge.Attributes.AmountCents = 999
|
|
|
|
|
2017-10-30 17:26:46 -07:00
|
|
|
err = hook.Handle(pledge, patreon.EventUpdatePledge)
|
2017-10-26 14:36:52 -07:00
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
model := &models.Pledge{PledgeID: 12345}
|
|
|
|
err = hook.db.Select(model)
|
|
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, 999, model.AmountCents)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDelete(t *testing.T) {
|
|
|
|
pledge := createPledge()
|
|
|
|
hook := createHandler(t)
|
|
|
|
|
2017-10-30 17:26:46 -07:00
|
|
|
err := hook.Handle(pledge, patreon.EventCreatePledge)
|
2017-10-26 14:36:52 -07:00
|
|
|
require.NoError(t, err)
|
|
|
|
|
2017-10-30 17:26:46 -07:00
|
|
|
err = hook.Handle(pledge, patreon.EventDeletePledge)
|
2017-10-26 14:36:52 -07:00
|
|
|
require.NoError(t, err)
|
|
|
|
}
|
|
|
|
|
2017-11-02 17:13:01 -07:00
|
|
|
func TestFindPledge(t *testing.T) {
|
|
|
|
pledge := createPledge()
|
|
|
|
hook := createHandler(t)
|
|
|
|
|
|
|
|
err := hook.Handle(pledge, patreon.EventCreatePledge)
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
res, err := hook.FindPledge(pledge.ID)
|
|
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, res.AmountCents, pledge.Attributes.AmountCents)
|
|
|
|
}
|
|
|
|
|
2017-10-26 19:26:59 -07:00
|
|
|
func createHandler(t *testing.T) *Handler {
|
2017-10-26 14:36:52 -07:00
|
|
|
opts, err := pg.ParseURL("postgres://postgres:@localhost/podsync?sslmode=disable")
|
|
|
|
if err != nil {
|
|
|
|
require.NoError(t, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
db := pg.Connect(opts)
|
|
|
|
|
|
|
|
_, err = db.Model(&models.Pledge{}).Where("1=1").Delete()
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
return NewHookHandler(db)
|
|
|
|
}
|
|
|
|
|
|
|
|
func createPledge() *patreon.Pledge {
|
|
|
|
pledge := &patreon.Pledge{
|
2017-10-30 17:26:46 -07:00
|
|
|
ID: "12345",
|
2017-10-26 14:36:52 -07:00
|
|
|
Type: "pledge",
|
|
|
|
}
|
|
|
|
|
|
|
|
pledge.Attributes.AmountCents = 400
|
|
|
|
pledge.Attributes.CreatedAt = patreon.NullTime{Valid: true, Time: time.Now().UTC()}
|
|
|
|
|
|
|
|
pledge.Relationships.Patron = &patreon.PatronRelationship{}
|
2017-10-30 17:26:46 -07:00
|
|
|
pledge.Relationships.Patron.Data.ID = "67890"
|
2017-10-26 14:36:52 -07:00
|
|
|
|
|
|
|
return pledge
|
|
|
|
}
|