Skip to content
Snippets Groups Projects
Commit 92949d59 authored by Jake Taylor's avatar Jake Taylor
Browse files

made Get return js.Value, add unit test

parent 11cf8728
No related branches found
No related tags found
1 merge request!60Revert "Fail a test to be sure it works"
...@@ -293,7 +293,7 @@ func (w *wasmModel) UpdateSentStatus(uuid uint64, ...@@ -293,7 +293,7 @@ func (w *wasmModel) UpdateSentStatus(uuid uint64,
// Extract the existing Message and update the Status // Extract the existing Message and update the Status
newMessage := &Message{} newMessage := &Message{}
err = json.Unmarshal([]byte(currentMsg), newMessage) err = json.Unmarshal([]byte(utils.JsToJson(currentMsg)), newMessage)
if err != nil { if err != nil {
return return
} }
......
...@@ -36,6 +36,32 @@ func TestMain(m *testing.M) { ...@@ -36,6 +36,32 @@ func TestMain(m *testing.M) {
func dummyCallback(uint64, *id.ID, bool) {} 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. // Test wasmModel.UpdateSentStatus happy path and ensure fields don't change.
func Test_wasmModel_UpdateSentStatus(t *testing.T) { func Test_wasmModel_UpdateSentStatus(t *testing.T) {
testString := "test" testString := "test"
......
...@@ -211,7 +211,7 @@ func (w *wasmModel) hackTestDb() error { ...@@ -211,7 +211,7 @@ func (w *wasmModel) hackTestDb() error {
if err != nil { if err != nil {
return err return err
} }
if len(result) == 0 { if result.IsUndefined() {
return errors.Errorf("Failed to test db, record not present") return errors.Errorf("Failed to test db, record not present")
} }
return nil return nil
......
...@@ -32,25 +32,25 @@ func NewContext() (context.Context, context.CancelFunc) { ...@@ -32,25 +32,25 @@ func NewContext() (context.Context, context.CancelFunc) {
} }
// Get is a generic helper for getting values from the given [idb.ObjectStore]. // 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) parentErr := errors.Errorf("failed to Get %s/%s", objectStoreName, key)
// Prepare the Transaction // Prepare the Transaction
txn, err := db.Transaction(idb.TransactionReadOnly, objectStoreName) txn, err := db.Transaction(idb.TransactionReadOnly, objectStoreName)
if err != nil { if err != nil {
return "", errors.WithMessagef(parentErr, return js.Undefined(), errors.WithMessagef(parentErr,
"Unable to create Transaction: %+v", err) "Unable to create Transaction: %+v", err)
} }
store, err := txn.ObjectStore(objectStoreName) store, err := txn.ObjectStore(objectStoreName)
if err != nil { if err != nil {
return "", errors.WithMessagef(parentErr, return js.Undefined(), errors.WithMessagef(parentErr,
"Unable to get ObjectStore: %+v", err) "Unable to get ObjectStore: %+v", err)
} }
// Perform the operation // Perform the operation
getRequest, err := store.Get(key) getRequest, err := store.Get(key)
if err != nil { if err != nil {
return "", errors.WithMessagef(parentErr, return js.Undefined(), errors.WithMessagef(parentErr,
"Unable to Get from ObjectStore: %+v", err) "Unable to Get from ObjectStore: %+v", err)
} }
...@@ -59,14 +59,14 @@ func Get(db *idb.Database, objectStoreName string, key js.Value) (string, error) ...@@ -59,14 +59,14 @@ func Get(db *idb.Database, objectStoreName string, key js.Value) (string, error)
resultObj, err := getRequest.Await(ctx) resultObj, err := getRequest.Await(ctx)
cancel() cancel()
if err != nil { if err != nil {
return "", errors.WithMessagef(parentErr, return js.Undefined(), errors.WithMessagef(parentErr,
"Unable to get from ObjectStore: %+v", err) "Unable to get from ObjectStore: %+v", err)
} }
// Process result into string // Process result into string
resultStr := utils.JsToJson(resultObj) jww.DEBUG.Printf("Got from %s/%s: %s",
jww.DEBUG.Printf("Got from %s/%s: %s", objectStoreName, key, resultStr) objectStoreName, key, utils.JsToJson(resultObj))
return resultStr, nil return resultObj, nil
} }
// GetIndex is a generic helper for getting values from the given // GetIndex is a generic helper for getting values from the given
...@@ -79,24 +79,24 @@ func GetIndex(db *idb.Database, objectStoreName string, ...@@ -79,24 +79,24 @@ func GetIndex(db *idb.Database, objectStoreName string,
// Prepare the Transaction // Prepare the Transaction
txn, err := db.Transaction(idb.TransactionReadOnly, objectStoreName) txn, err := db.Transaction(idb.TransactionReadOnly, objectStoreName)
if err != nil { if err != nil {
return js.Value{}, errors.WithMessagef(parentErr, return js.Undefined(), errors.WithMessagef(parentErr,
"Unable to create Transaction: %+v", err) "Unable to create Transaction: %+v", err)
} }
store, err := txn.ObjectStore(objectStoreName) store, err := txn.ObjectStore(objectStoreName)
if err != nil { if err != nil {
return js.Value{}, errors.WithMessagef(parentErr, return js.Undefined(), errors.WithMessagef(parentErr,
"Unable to get ObjectStore: %+v", err) "Unable to get ObjectStore: %+v", err)
} }
idx, err := store.Index(indexName) idx, err := store.Index(indexName)
if err != nil { if err != nil {
return js.Value{}, errors.WithMessagef(parentErr, return js.Undefined(), errors.WithMessagef(parentErr,
"Unable to get Index: %+v", err) "Unable to get Index: %+v", err)
} }
// Perform the operation // Perform the operation
getRequest, err := idx.Get(key) getRequest, err := idx.Get(key)
if err != nil { if err != nil {
return js.Value{}, errors.WithMessagef(parentErr, return js.Undefined(), errors.WithMessagef(parentErr,
"Unable to Get from ObjectStore: %+v", err) "Unable to Get from ObjectStore: %+v", err)
} }
...@@ -105,14 +105,13 @@ func GetIndex(db *idb.Database, objectStoreName string, ...@@ -105,14 +105,13 @@ func GetIndex(db *idb.Database, objectStoreName string,
resultObj, err := getRequest.Await(ctx) resultObj, err := getRequest.Await(ctx)
cancel() cancel()
if err != nil { if err != nil {
return js.Value{}, errors.WithMessagef(parentErr, return js.Undefined(), errors.WithMessagef(parentErr,
"Unable to get from ObjectStore: %+v", err) "Unable to get from ObjectStore: %+v", err)
} }
// Process result into string // Process result into string
resultStr := utils.JsToJson(resultObj)
jww.DEBUG.Printf("Got from %s/%s/%s: %s", jww.DEBUG.Printf("Got from %s/%s/%s: %s",
objectStoreName, indexName, key, resultStr) objectStoreName, indexName, key, utils.JsToJson(resultObj))
return resultObj, nil return resultObj, nil
} }
...@@ -143,7 +142,7 @@ func Put(db *idb.Database, objectStoreName string, value js.Value) (*idb.Request ...@@ -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) return nil, errors.Errorf("Putting value failed: %+v", err)
} }
jww.DEBUG.Printf("Successfully put value in %s: %v", jww.DEBUG.Printf("Successfully put value in %s: %v",
objectStoreName, value.String()) objectStoreName, utils.JsToJson(value))
return request, nil return request, nil
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment