sliding-sync/state/snapshot_table_test.go

58 lines
1.5 KiB
Go
Raw Permalink Normal View History

2021-05-26 20:01:56 +01:00
package state
import (
"reflect"
"testing"
"github.com/lib/pq"
)
func TestSnapshotTable(t *testing.T) {
db, close := connectToDB(t)
defer close()
2021-05-27 19:20:36 +01:00
txn, err := db.Beginx()
if err != nil {
t.Fatalf("failed to start txn: %s", err)
}
defer txn.Rollback()
2021-05-27 19:20:36 +01:00
table := NewSnapshotsTable(db)
// Insert a snapshot
2021-05-26 20:01:56 +01:00
want := &SnapshotRow{
RoomID: "A",
OtherEvents: pq.Int64Array{1, 3, 5, 7},
MembershipEvents: pq.Int64Array{2, 4, 6},
2021-05-26 20:01:56 +01:00
}
2021-05-27 19:20:36 +01:00
err = table.Insert(txn, want)
2021-05-26 20:01:56 +01:00
if err != nil {
t.Fatalf("Failed to insert: %s", err)
}
if want.SnapshotID == 0 {
t.Fatalf("Snapshot ID not set")
}
2021-05-27 19:20:36 +01:00
// Select the same snapshot and assert
got, err := table.Select(txn, want.SnapshotID)
2021-05-26 20:01:56 +01:00
if err != nil {
t.Fatalf("Failed to select: %s", err)
}
if got.SnapshotID != want.SnapshotID {
t.Errorf("mismatched snapshot IDs, got %v want %v", got.SnapshotID, want.SnapshotID)
}
if got.RoomID != want.RoomID {
t.Errorf("mismatched room IDs, got %v want %v", got.RoomID, want.RoomID)
}
if !reflect.DeepEqual(got.MembershipEvents, want.MembershipEvents) {
t.Errorf("mismatched membership events, got: %+v want: %+v", got.MembershipEvents, want.MembershipEvents)
}
if !reflect.DeepEqual(got.OtherEvents, want.OtherEvents) {
t.Errorf("mismatched other events, got: %+v want: %+v", got.OtherEvents, want.OtherEvents)
2021-05-26 20:01:56 +01:00
}
2021-05-27 19:20:36 +01:00
// Delete the snapshot
2021-08-06 15:39:36 +01:00
err = table.Delete(txn, []int64{want.SnapshotID})
2021-05-27 19:20:36 +01:00
if err != nil {
t.Fatalf("failed to delete snapshot: %s", err)
}
2021-05-26 20:01:56 +01:00
}