106 lines
3.1 KiB
Go
106 lines
3.1 KiB
Go
package persistence_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
"gitlab.com/offline-twitter/twitter_offline_engine/pkg/scraper"
|
|
|
|
"github.com/go-test/deep"
|
|
"math/rand"
|
|
)
|
|
|
|
// Create a Space, save it, reload it, and make sure it comes back the same
|
|
func TestSaveAndLoadSpace(t *testing.T) {
|
|
require := require.New(t)
|
|
profile_path := "test_profiles/TestMediaQueries"
|
|
profile := create_or_load_profile(profile_path)
|
|
|
|
space := create_space_from_id(rand.Int())
|
|
err := profile.SaveSpace(space)
|
|
require.NoError(err)
|
|
|
|
new_space, err := profile.GetSpaceById(space.ID)
|
|
require.NoError(err)
|
|
if diff := deep.Equal(space, new_space); diff != nil {
|
|
t.Error(diff)
|
|
}
|
|
}
|
|
|
|
// Should update a Space
|
|
func TestModifySpace(t *testing.T) {
|
|
assert := assert.New(t)
|
|
require := require.New(t)
|
|
profile_path := "test_profiles/TestMediaQueries"
|
|
profile := create_or_load_profile(profile_path)
|
|
|
|
space := create_space_from_id(rand.Int())
|
|
err := profile.SaveSpace(space)
|
|
require.NoError(err)
|
|
|
|
// Modify and save
|
|
space.State = "Some other state"
|
|
space.UpdatedAt = scraper.TimestampFromUnix(9001)
|
|
space.EndedAt = scraper.TimestampFromUnix(10001)
|
|
space.ReplayWatchCount = 100
|
|
space.LiveListenersCount = 50
|
|
space.IsDetailsFetched = true
|
|
err = profile.SaveSpace(space)
|
|
require.NoError(err)
|
|
|
|
new_space, err := profile.GetSpaceById(space.ID)
|
|
require.NoError(err)
|
|
assert.Equal(scraper.TimestampFromUnix(9001), new_space.UpdatedAt)
|
|
assert.Equal(scraper.TimestampFromUnix(10001), new_space.EndedAt)
|
|
assert.Equal(100, new_space.ReplayWatchCount)
|
|
assert.Equal(50, new_space.LiveListenersCount)
|
|
assert.True(new_space.IsDetailsFetched)
|
|
}
|
|
|
|
func TestNoWorseningSpace(t *testing.T) {
|
|
require := require.New(t)
|
|
assert := assert.New(t)
|
|
profile_path := "test_profiles/TestMediaQueries"
|
|
profile := create_or_load_profile(profile_path)
|
|
|
|
space := create_space_from_id(rand.Int())
|
|
space.ShortUrl = "Some Short Url"
|
|
space.State = "Some State"
|
|
space.Title = "Debating Somebody"
|
|
space.CreatedAt = scraper.TimestampFromUnix(1000)
|
|
space.UpdatedAt = scraper.TimestampFromUnix(2000)
|
|
space.CreatedById = scraper.UserID(-1)
|
|
space.LiveListenersCount = 100
|
|
space.IsDetailsFetched = true
|
|
|
|
// Save the space
|
|
err := profile.SaveSpace(space)
|
|
require.NoError(err)
|
|
|
|
// Worsen the space, then re-save
|
|
space.ShortUrl = ""
|
|
space.Title = ""
|
|
space.State = ""
|
|
space.CreatedAt = scraper.TimestampFromUnix(0)
|
|
space.UpdatedAt = scraper.TimestampFromUnix(0)
|
|
space.CreatedById = scraper.UserID(0)
|
|
space.LiveListenersCount = 0
|
|
space.IsDetailsFetched = false
|
|
err = profile.SaveSpace(space)
|
|
require.NoError(err)
|
|
|
|
// Reload it
|
|
new_space, err := profile.GetSpaceById(space.ID)
|
|
require.NoError(err)
|
|
|
|
assert.Equal(new_space.ShortUrl, "Some Short Url")
|
|
assert.Equal(new_space.State, "Some State")
|
|
assert.Equal(new_space.Title, "Debating Somebody")
|
|
assert.Equal(new_space.CreatedAt, scraper.TimestampFromUnix(1000))
|
|
assert.Equal(new_space.UpdatedAt, scraper.TimestampFromUnix(2000))
|
|
assert.Equal(new_space.CreatedById, scraper.UserID(-1))
|
|
assert.Equal(new_space.LiveListenersCount, 100)
|
|
assert.True(new_space.IsDetailsFetched)
|
|
}
|