diff --git a/indexedDb/implementation.go b/indexedDb/implementation.go index 8a437467b2bc8ea355b1df91eb95f3df1e55eb7b..2763d924372e37745035f51116b8a869a1b1e2ae 100644 --- a/indexedDb/implementation.go +++ b/indexedDb/implementation.go @@ -258,11 +258,12 @@ func (w *wasmModel) receiveHelper(newMessage *Message) error { if err != nil { return errors.Errorf("Upserting Message failed: %+v", err) } - jww.DEBUG.Printf("Successfully received message: %s", newMessage.Id) + jww.DEBUG.Printf("Successfully stored message from %s", + newMessage.SenderUsername) return nil } -// dump is used to output given ObjectStore contents to log for debugging +// dump given [idb.ObjectStore] contents to string slice for debugging purposes func (w *wasmModel) dump(objectStoreName string) ([]string, error) { parentErr := errors.Errorf("failed to dump %s", objectStoreName) diff --git a/indexedDb/implementation_test.go b/indexedDb/implementation_test.go index 3cdcfb2cb341ee39b7c95d0226bbf11173111336..a7b005abb782c0151bb0045d0eb9239c611ac947 100644 --- a/indexedDb/implementation_test.go +++ b/indexedDb/implementation_test.go @@ -8,17 +8,78 @@ package indexedDb import ( + "encoding/json" jww "github.com/spf13/jwalterweatherman" + "gitlab.com/elixxir/client/channels" cryptoBroadcast "gitlab.com/elixxir/crypto/broadcast" + "gitlab.com/elixxir/crypto/channel" "gitlab.com/xx_network/primitives/id" + "os" "testing" + "time" ) -func TestWasmModel_JoinChannel_LeaveChannel(t *testing.T) { - testDbName := "test" - jww.SetStdoutThreshold(jww.LevelTrace) +func TestMain(m *testing.M) { + jww.SetStdoutThreshold(jww.LevelDebug) + os.Exit(m.Run()) +} + +// Test UpdateSentStatus happy path and ensure fields don't change +func TestWasmModel_UpdateSentStatus(t *testing.T) { + testString := "test" + testMsgId := channel.MakeMessageID([]byte(testString)) + eventModel, err := newWasmModel(testString) + if err != nil { + t.Fatalf("%+v", err) + } + + // Store a test message + testMsg := buildMessage([]byte(testString), testMsgId.Bytes(), + nil, testString, testString, time.Now(), time.Second, channels.Sent) + err = eventModel.receiveHelper(testMsg) + if err != nil { + t.Fatalf("%+v", err) + } + + // Ensure one message is stored + results, err := eventModel.dump(messageStoreName) + if err != nil { + t.Fatalf("%+v", err) + } + if len(results) != 1 { + t.Fatalf("Expected 1 message to exist") + } - eventModel, err := newWasmModel(testDbName) + // Update the sentStatus + expectedStatus := channels.Failed + eventModel.UpdateSentStatus(testMsgId, expectedStatus) + + // Check the resulting status + results, err = eventModel.dump(messageStoreName) + if err != nil { + t.Fatalf("%+v", err) + } + if len(results) != 1 { + t.Fatalf("Expected 1 message to exist") + } + resultMsg := &Message{} + err = json.Unmarshal([]byte(results[0]), resultMsg) + if err != nil { + t.Fatalf("%+v", err) + } + if resultMsg.Status != uint8(expectedStatus) { + t.Fatalf("Unexpected Status: %v", resultMsg.Status) + } + + // Make sure other fields didn't change + if resultMsg.SenderUsername != testString { + t.Fatalf("Unexpected SenderUsername: %v", resultMsg.SenderUsername) + } +} + +// Smoke test JoinChannel/LeaveChannel happy paths +func TestWasmModel_JoinChannel_LeaveChannel(t *testing.T) { + eventModel, err := newWasmModel("test") if err != nil { t.Fatalf("%+v", err) }