Skip to content
Snippets Groups Projects
Commit 9179db39 authored by Jono Wenger's avatar Jono Wenger
Browse files

Fix error reporting in UpdateSentStatus and make Get check if the result is undefined

parent 30832993
No related branches found
Tags
1 merge request!44Fix error reporting in UpdateSentStatus and make Get check if the result is undefined
......@@ -288,6 +288,8 @@ func (w *wasmModel) UpdateSentStatus(uuid uint64,
// Use the key to get the existing Message
currentMsg, err := indexedDb.Get(w.db, messageStoreName, key)
if err != nil {
jww.ERROR.Printf("%+v", errors.WithMessagef(parentErr,
"Unable to get message: %+v", err))
return
}
......@@ -295,8 +297,11 @@ func (w *wasmModel) UpdateSentStatus(uuid uint64,
newMessage := &Message{}
err = json.Unmarshal([]byte(utils.JsToJson(currentMsg)), newMessage)
if err != nil {
jww.ERROR.Printf("%+v", errors.WithMessagef(parentErr,
"Could not JSON unmarshal message: %+v", err))
return
}
newMessage.Status = uint8(status)
if !messageID.Equals(cryptoChannel.MessageID{}) {
newMessage.MessageID = messageID.Bytes()
......
......@@ -61,6 +61,9 @@ func Get(db *idb.Database, objectStoreName string, key js.Value) (js.Value, erro
if err != nil {
return js.Undefined(), errors.WithMessagef(parentErr,
"Unable to get from ObjectStore: %+v", err)
} else if resultObj.IsUndefined() {
return js.Undefined(), errors.WithMessage(parentErr,
"Unable to get from ObjectStore: result is undefined")
}
// Process result into string
......
////////////////////////////////////////////////////////////////////////////////
// Copyright © 2022 xx foundation //
// //
// Use of this source code is governed by a license that can be found in the //
// LICENSE file. //
////////////////////////////////////////////////////////////////////////////////
package indexedDb
import (
"github.com/hack-pad/go-indexeddb/idb"
"strings"
"syscall/js"
"testing"
)
// Error path: Tests that Get returns an error when trying to get a message that
// does not exist.
func TestGet_NoMessageError(t *testing.T) {
db := newTestDB("messages", t)
_, err := Get(db, "messages", js.ValueOf(5))
if err == nil || !strings.Contains(err.Error(), "undefined") {
t.Errorf("Did not get expected error when getting a message that "+
"does not exist: %+v", err)
}
}
// newTestDB creates a new idb.Database for testing.
func newTestDB(messageStoreName string, t *testing.T) *idb.Database {
// Attempt to open database object
ctx, cancel := NewContext()
defer cancel()
openRequest, err := idb.Global().Open(ctx, "databaseName", 0,
func(db *idb.Database, _ uint, _ uint) error {
storeOpts := idb.ObjectStoreOptions{
KeyPath: js.ValueOf("id"),
AutoIncrement: true,
}
// Build Message ObjectStore and Indexes
_, err := db.CreateObjectStore(messageStoreName, storeOpts)
if err != nil {
return err
}
return nil
})
if err != nil {
t.Fatal(err)
}
// Wait for database open to finish
db, err := openRequest.Await(ctx)
if err != nil {
t.Fatal(err)
}
return db
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment