56 lines
2.3 KiB
Go
56 lines
2.3 KiB
Go
package creator
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestUpdateListenerEventCoversPreservesNoticeAndRejectsOldGeneration(t *testing.T) {
|
|
store, accounts, ctx := openCreatorIntegrationStore(t)
|
|
id := createIntegrationAccount(t, ctx, accounts, fmt.Sprint(time.Now().UnixNano()))
|
|
profile, err := store.GetAccountProfile(ctx, id)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err = store.RecordVerifiedLoginResult(ctx, id, profile.PlatformAccountKey); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
state, err := store.SetListenerEnabled(ctx, id, true)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
at := time.Now().UTC().Add(-time.Hour).Truncate(time.Second)
|
|
delivery := ListenerDelivery{Kind: "notice", DeliveryID: "original", Baseline: true, Notice: &ListenerNotice{EventKey: "notice", EventType: "like", MessageText: "original", InteractorUID: "22", WorkID: "99", WorkAuthorUID: "123", PlatformEventAt: &at}}
|
|
if err = store.RecordListenerDeliveries(ctx, id, state.Generation, []ListenerDelivery{delivery}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
delivery.Notice.WorkCoverError = "download failed"
|
|
if err = store.UpdateListenerEventCovers(ctx, id, state.Generation, []ListenerDelivery{delivery}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
page, err := store.ListAggregatedEventsPage(ctx, EventAggregationFilter{AccountID: id}, 1, 10)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(page.Data) != 1 || page.Data[0].WorkCoverError != "download failed" || page.Data[0].MessageText != "original" || !page.Data[0].Baseline || !page.Data[0].PlatformEventAt.Equal(at) {
|
|
t.Fatalf("event rewritten: %+v", page.Data)
|
|
}
|
|
delivery.Notice.WorkID = "100"
|
|
delivery.Notice.WorkCoverError = "wrong work"
|
|
if err = store.UpdateListenerEventCovers(ctx, id, state.Generation, []ListenerDelivery{delivery}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
var coverError string
|
|
if err = store.db.QueryRowContext(ctx, `SELECT work_cover_error FROM creator_account_event WHERE account_id=(SELECT id FROM social_account WHERE account_id=$1) AND event_key='notice'`, id).Scan(&coverError); err != nil || coverError != "download failed" {
|
|
t.Fatalf("wrong work updated: %q %v", coverError, err)
|
|
}
|
|
if _, err = store.SetListenerEnabled(ctx, id, false); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err = store.UpdateListenerEventCovers(ctx, id, state.Generation, []ListenerDelivery{delivery}); !errors.Is(err, ErrConflict) {
|
|
t.Fatalf("old generation accepted: %v", err)
|
|
}
|
|
}
|