From 92949d594b7ff8fbd590bb3979d86f9cc3af749b Mon Sep 17 00:00:00 2001 From: Jake Taylor <jake@elixxir.io> Date: Thu, 15 Dec 2022 15:33:52 -0600 Subject: [PATCH] made Get return js.Value, add unit test --- indexedDb/channels/implementation.go | 2 +- indexedDb/channels/implementation_test.go | 26 +++++++++++++++++++ indexedDb/channels/init.go | 2 +- indexedDb/utils.go | 31 +++++++++++------------ 4 files changed, 43 insertions(+), 18 deletions(-) diff --git a/indexedDb/channels/implementation.go b/indexedDb/channels/implementation.go index 46e68fd4..721021de 100644 --- a/indexedDb/channels/implementation.go +++ b/indexedDb/channels/implementation.go @@ -293,7 +293,7 @@ func (w *wasmModel) UpdateSentStatus(uuid uint64, // Extract the existing Message and update the Status newMessage := &Message{} - err = json.Unmarshal([]byte(currentMsg), newMessage) + err = json.Unmarshal([]byte(utils.JsToJson(currentMsg)), newMessage) if err != nil { return } diff --git a/indexedDb/channels/implementation_test.go b/indexedDb/channels/implementation_test.go index 221494e3..6f10169e 100644 --- a/indexedDb/channels/implementation_test.go +++ b/indexedDb/channels/implementation_test.go @@ -36,6 +36,32 @@ func TestMain(m *testing.M) { func dummyCallback(uint64, *id.ID, bool) {} +// Happy path, insert message and look it up +func TestWasmModel_msgIDLookup(t *testing.T) { + testString := "test" + testMsgId := channel.MakeMessageID([]byte(testString), &id.ID{1}) + eventModel, err := newWASMModel(testString, nil, dummyCallback) + if err != nil { + t.Fatalf("%+v", err) + } + + testMsg := buildMessage([]byte(testString), testMsgId.Bytes(), nil, + testString, []byte(testString), []byte{8, 6, 7, 5}, 0, netTime.Now(), + time.Second, 0, 0, channels.Sent) + _, err = eventModel.receiveHelper(testMsg, false) + if err != nil { + t.Fatalf("%+v", err) + } + + uuid, err := eventModel.msgIDLookup(testMsgId) + if err != nil { + t.Fatalf("%+v", err) + } + if uuid == 0 { + t.Fatalf("Expected to get a UUID!") + } +} + // Test wasmModel.UpdateSentStatus happy path and ensure fields don't change. func Test_wasmModel_UpdateSentStatus(t *testing.T) { testString := "test" diff --git a/indexedDb/channels/init.go b/indexedDb/channels/init.go index 0b52434f..12d6bb88 100644 --- a/indexedDb/channels/init.go +++ b/indexedDb/channels/init.go @@ -211,7 +211,7 @@ func (w *wasmModel) hackTestDb() error { if err != nil { return err } - if len(result) == 0 { + if result.IsUndefined() { return errors.Errorf("Failed to test db, record not present") } return nil diff --git a/indexedDb/utils.go b/indexedDb/utils.go index 7d7e7e6b..e11c8e10 100644 --- a/indexedDb/utils.go +++ b/indexedDb/utils.go @@ -32,25 +32,25 @@ func NewContext() (context.Context, context.CancelFunc) { } // Get is a generic helper for getting values from the given [idb.ObjectStore]. -func Get(db *idb.Database, objectStoreName string, key js.Value) (string, error) { +func Get(db *idb.Database, objectStoreName string, key js.Value) (js.Value, error) { parentErr := errors.Errorf("failed to Get %s/%s", objectStoreName, key) // Prepare the Transaction txn, err := db.Transaction(idb.TransactionReadOnly, objectStoreName) if err != nil { - return "", errors.WithMessagef(parentErr, + return js.Undefined(), errors.WithMessagef(parentErr, "Unable to create Transaction: %+v", err) } store, err := txn.ObjectStore(objectStoreName) if err != nil { - return "", errors.WithMessagef(parentErr, + return js.Undefined(), errors.WithMessagef(parentErr, "Unable to get ObjectStore: %+v", err) } // Perform the operation getRequest, err := store.Get(key) if err != nil { - return "", errors.WithMessagef(parentErr, + return js.Undefined(), errors.WithMessagef(parentErr, "Unable to Get from ObjectStore: %+v", err) } @@ -59,14 +59,14 @@ func Get(db *idb.Database, objectStoreName string, key js.Value) (string, error) resultObj, err := getRequest.Await(ctx) cancel() if err != nil { - return "", errors.WithMessagef(parentErr, + return js.Undefined(), errors.WithMessagef(parentErr, "Unable to get from ObjectStore: %+v", err) } // Process result into string - resultStr := utils.JsToJson(resultObj) - jww.DEBUG.Printf("Got from %s/%s: %s", objectStoreName, key, resultStr) - return resultStr, nil + jww.DEBUG.Printf("Got from %s/%s: %s", + objectStoreName, key, utils.JsToJson(resultObj)) + return resultObj, nil } // GetIndex is a generic helper for getting values from the given @@ -79,24 +79,24 @@ func GetIndex(db *idb.Database, objectStoreName string, // Prepare the Transaction txn, err := db.Transaction(idb.TransactionReadOnly, objectStoreName) if err != nil { - return js.Value{}, errors.WithMessagef(parentErr, + return js.Undefined(), errors.WithMessagef(parentErr, "Unable to create Transaction: %+v", err) } store, err := txn.ObjectStore(objectStoreName) if err != nil { - return js.Value{}, errors.WithMessagef(parentErr, + return js.Undefined(), errors.WithMessagef(parentErr, "Unable to get ObjectStore: %+v", err) } idx, err := store.Index(indexName) if err != nil { - return js.Value{}, errors.WithMessagef(parentErr, + return js.Undefined(), errors.WithMessagef(parentErr, "Unable to get Index: %+v", err) } // Perform the operation getRequest, err := idx.Get(key) if err != nil { - return js.Value{}, errors.WithMessagef(parentErr, + return js.Undefined(), errors.WithMessagef(parentErr, "Unable to Get from ObjectStore: %+v", err) } @@ -105,14 +105,13 @@ func GetIndex(db *idb.Database, objectStoreName string, resultObj, err := getRequest.Await(ctx) cancel() if err != nil { - return js.Value{}, errors.WithMessagef(parentErr, + return js.Undefined(), errors.WithMessagef(parentErr, "Unable to get from ObjectStore: %+v", err) } // Process result into string - resultStr := utils.JsToJson(resultObj) jww.DEBUG.Printf("Got from %s/%s/%s: %s", - objectStoreName, indexName, key, resultStr) + objectStoreName, indexName, key, utils.JsToJson(resultObj)) return resultObj, nil } @@ -143,7 +142,7 @@ func Put(db *idb.Database, objectStoreName string, value js.Value) (*idb.Request return nil, errors.Errorf("Putting value failed: %+v", err) } jww.DEBUG.Printf("Successfully put value in %s: %v", - objectStoreName, value.String()) + objectStoreName, utils.JsToJson(value)) return request, nil } -- GitLab