2021-05-26 20:01:56 +01:00
|
|
|
package state
|
|
|
|
|
|
|
|
import (
|
|
|
|
"reflect"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/lib/pq"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestSnapshotTable(t *testing.T) {
|
2023-01-18 14:54:26 +00:00
|
|
|
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)
|
|
|
|
}
|
2021-06-03 14:35:34 +01:00
|
|
|
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{
|
2023-01-12 17:11:09 +00:00
|
|
|
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)
|
|
|
|
}
|
2023-01-12 17:11:09 +00:00
|
|
|
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
|
|
|
}
|