1
0
mirror of https://github.com/mxpv/podsync.git synced 2024-05-11 05:55:04 +00:00
mxpv-podsync/pkg/storage/pg_test.go

108 lines
2.4 KiB
Go
Raw Normal View History

2017-08-05 18:35:52 -07:00
package storage
2017-07-22 22:08:38 -07:00
import (
"testing"
2017-07-31 21:51:21 -07:00
2017-08-19 16:58:23 -07:00
"github.com/mxpv/podsync/pkg/api"
2017-11-03 16:04:33 -07:00
"github.com/mxpv/podsync/pkg/model"
2017-07-31 21:51:21 -07:00
"github.com/stretchr/testify/require"
2017-07-22 22:08:38 -07:00
)
2017-08-13 21:34:47 -07:00
func TestPgStorage_CreateFeed(t *testing.T) {
2017-11-03 16:04:33 -07:00
feed := &model.Feed{
HashID: "xyz",
2017-11-03 15:04:33 -07:00
Provider: api.ProviderYoutube,
LinkType: api.LinkTypeChannel,
2017-11-03 16:04:33 -07:00
ItemID: "123",
2017-07-22 22:08:38 -07:00
}
client := createClient(t)
err := client.CreateFeed(feed)
require.NoError(t, err)
2017-11-03 16:04:33 -07:00
require.True(t, feed.FeedID > 0)
2017-07-22 22:08:38 -07:00
}
2017-08-13 21:34:47 -07:00
func TestPgStorage_CreateFeedWithDuplicate(t *testing.T) {
2017-11-03 16:04:33 -07:00
feed := &model.Feed{
HashID: "123",
2017-11-03 15:04:33 -07:00
Provider: api.ProviderYoutube,
LinkType: api.LinkTypeChannel,
2017-11-03 16:04:33 -07:00
ItemID: "123",
2017-08-05 15:02:26 -07:00
}
client := createClient(t)
err := client.CreateFeed(feed)
require.NoError(t, err)
// Ensure 1 record
2017-11-03 16:04:33 -07:00
count, err := client.db.Model(&model.Feed{}).Count()
2017-08-05 15:02:26 -07:00
require.NoError(t, err)
require.Equal(t, 1, count)
// Insert duplicated feed
err = client.CreateFeed(feed)
require.NoError(t, err)
// Check no duplicates inserted
2017-11-03 16:04:33 -07:00
count, err = client.db.Model(&model.Feed{}).Count()
2017-08-05 15:02:26 -07:00
require.NoError(t, err)
require.Equal(t, 1, count)
}
2017-08-13 21:34:47 -07:00
func TestPgStorage_GetFeed(t *testing.T) {
2017-11-03 16:04:33 -07:00
feed := &model.Feed{
HashID: "xyz",
UserID: "123",
2017-11-03 15:04:33 -07:00
Provider: api.ProviderYoutube,
LinkType: api.LinkTypeChannel,
2017-11-03 16:04:33 -07:00
ItemID: "123",
2017-07-22 22:08:38 -07:00
}
client := createClient(t)
client.CreateFeed(feed)
2017-07-31 21:51:21 -07:00
out, err := client.GetFeed("xyz")
2017-07-22 22:08:38 -07:00
require.NoError(t, err)
2017-11-03 16:04:33 -07:00
require.Equal(t, feed.FeedID, out.FeedID)
2017-07-31 21:51:21 -07:00
}
2017-08-13 21:34:47 -07:00
func TestPgStorage_UpdateLastAccess(t *testing.T) {
2017-11-03 16:04:33 -07:00
feed := &model.Feed{
HashID: "xyz",
UserID: "123",
2017-11-03 15:04:33 -07:00
Provider: api.ProviderYoutube,
LinkType: api.LinkTypeChannel,
2017-11-03 16:04:33 -07:00
ItemID: "123",
2017-07-31 21:51:21 -07:00
}
2017-07-22 22:08:38 -07:00
2017-07-31 21:51:21 -07:00
client := createClient(t)
err := client.CreateFeed(feed)
2017-07-22 22:08:38 -07:00
require.NoError(t, err)
2017-07-31 21:51:21 -07:00
lastAccess := feed.LastAccess
require.True(t, lastAccess.Unix() > 0)
last, err := client.GetFeed("xyz")
require.NoError(t, err)
2017-11-03 16:04:33 -07:00
require.NotEmpty(t, last.HashID)
require.NotEmpty(t, last.UserID)
2017-08-13 14:50:59 -07:00
require.NotEmpty(t, last.Provider)
require.NotEmpty(t, last.LinkType)
2017-11-03 16:04:33 -07:00
require.NotEmpty(t, last.ItemID)
2017-07-31 21:51:21 -07:00
2017-08-13 22:18:58 -07:00
require.True(t, last.LastAccess.UnixNano() > lastAccess.UnixNano())
2017-07-31 21:51:21 -07:00
}
2017-07-22 22:08:38 -07:00
const TestDatabaseConnectionUrl = "postgres://postgres:@localhost/podsync?sslmode=disable"
func createClient(t *testing.T) *PgStorage {
pg, err := NewPgStorage(&PgConfig{ConnectionUrl: TestDatabaseConnectionUrl})
require.NoError(t, err)
2017-11-03 16:04:33 -07:00
_, err = pg.db.Model(&model.Feed{}).Where("1=1").Delete()
2017-07-22 22:08:38 -07:00
require.NoError(t, err)
return pg
}