memos/store/test/memo_timestamp_test.go

51 lines
1.6 KiB
Go

package test
import (
"context"
"testing"
"github.com/stretchr/testify/require"
"github.com/usememos/memos/store"
)
func TestMemoTimestampUpdates(t *testing.T) {
t.Parallel()
ctx := context.Background()
ts := NewTestingStore(ctx, t)
defer ts.Close()
user, err := createTestingHostUser(ctx, ts)
require.NoError(t, err)
originalCreate, originalUpdate := int64(1577836800), int64(1577840400)
created, updated := originalCreate-86400, originalUpdate-86400
for _, tc := range []struct {
name string
patch *store.UpdateMemo
wantCreate int64
wantUpdate int64
}{
{"creation-only", &store.UpdateMemo{CreatedTs: &created}, created, originalUpdate},
{"modification-only", &store.UpdateMemo{UpdatedTs: &updated}, originalCreate, updated},
{"both", &store.UpdateMemo{CreatedTs: &created, UpdatedTs: &updated}, created, updated},
{"unrelated-update", &store.UpdateMemo{Content: new("changed")}, originalCreate, originalUpdate},
} {
t.Run(tc.name, func(t *testing.T) {
memo, err := ts.CreateMemo(ctx, &store.Memo{
UID: tc.name, CreatorID: user.ID, Content: "original", Visibility: store.Private,
CreatedTs: originalCreate, UpdatedTs: originalUpdate,
})
require.NoError(t, err)
tc.patch.ID = memo.ID
require.NoError(t, ts.UpdateMemo(ctx, tc.patch))
got, err := ts.GetMemo(ctx, &store.FindMemo{ID: &memo.ID})
require.NoError(t, err)
require.NotNil(t, got)
require.Equal(t, tc.wantCreate, got.CreatedTs)
require.Equal(t, tc.wantUpdate, got.UpdatedTs)
if tc.patch.Content != nil {
require.Equal(t, *tc.patch.Content, got.Content)
}
})
}
}