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

Merge remote-tracking branch 'origin/release' into project/adminCommands

# Conflicts:
#	indexedDb/channels/implementation.go
parents 73bbd799 9f3539b1
No related branches found
No related tags found
2 merge requests!60Revert "Fail a test to be sure it works",!32Admin Commands
...@@ -331,7 +331,7 @@ func (w *wasmModel) UpdateFromUUID(uuid uint64, ...@@ -331,7 +331,7 @@ func (w *wasmModel) UpdateFromUUID(uuid uint64,
currentMsg, err := indexedDb.Get(w.db, messageStoreName, key) currentMsg, err := indexedDb.Get(w.db, messageStoreName, key)
if err != nil { if err != nil {
jww.ERROR.Printf("%+v", errors.WithMessagef(parentErr, jww.ERROR.Printf("%+v", errors.WithMessagef(parentErr,
"Failed to get message: %+v", err)) "Unable to get message: %+v", err))
return return
} }
......
...@@ -38,6 +38,7 @@ func dummyCallback(uint64, *id.ID, bool) {} ...@@ -38,6 +38,7 @@ func dummyCallback(uint64, *id.ID, bool) {}
// Happy path, insert message and look it up // Happy path, insert message and look it up
func TestWasmModel_msgIDLookup(t *testing.T) { func TestWasmModel_msgIDLookup(t *testing.T) {
storage.GetLocalStorage().Clear()
testString := "test" testString := "test"
testMsgId := channel.MakeMessageID([]byte(testString), &id.ID{1}) testMsgId := channel.MakeMessageID([]byte(testString), &id.ID{1})
eventModel, err := newWASMModel(testString, nil, dummyCallback) eventModel, err := newWASMModel(testString, nil, dummyCallback)
...@@ -159,6 +160,7 @@ func Test_wasmModel_JoinChannel_LeaveChannel(t *testing.T) { ...@@ -159,6 +160,7 @@ func Test_wasmModel_JoinChannel_LeaveChannel(t *testing.T) {
// Test UUID gets returned when different messages are added. // Test UUID gets returned when different messages are added.
func Test_wasmModel_UUIDTest(t *testing.T) { func Test_wasmModel_UUIDTest(t *testing.T) {
storage.GetLocalStorage().Clear()
testString := "testHello" testString := "testHello"
eventModel, err := newWASMModel(testString, nil, dummyCallback) eventModel, err := newWASMModel(testString, nil, dummyCallback)
if err != nil { if err != nil {
...@@ -225,6 +227,7 @@ func Test_wasmModel_DuplicateReceives(t *testing.T) { ...@@ -225,6 +227,7 @@ func Test_wasmModel_DuplicateReceives(t *testing.T) {
// Happy path: Inserts many messages, deletes some, and checks that the final // Happy path: Inserts many messages, deletes some, and checks that the final
// result is as expected. // result is as expected.
func Test_wasmModel_deleteMsgByChannel(t *testing.T) { func Test_wasmModel_deleteMsgByChannel(t *testing.T) {
storage.GetLocalStorage().Clear()
testString := "test_deleteMsgByChannel" testString := "test_deleteMsgByChannel"
totalMessages := 10 totalMessages := 10
expectedMessages := 5 expectedMessages := 5
...@@ -281,6 +284,7 @@ func Test_wasmModel_deleteMsgByChannel(t *testing.T) { ...@@ -281,6 +284,7 @@ func Test_wasmModel_deleteMsgByChannel(t *testing.T) {
// This test is designed to prove the behavior of unique indexes. // This test is designed to prove the behavior of unique indexes.
// Inserts will not fail, they simply will not happen. // Inserts will not fail, they simply will not happen.
func TestWasmModel_receiveHelper_UniqueIndex(t *testing.T) { func TestWasmModel_receiveHelper_UniqueIndex(t *testing.T) {
storage.GetLocalStorage().Clear()
testString := "test_receiveHelper_UniqueIndex" testString := "test_receiveHelper_UniqueIndex"
eventModel, err := newWASMModel(testString, nil, dummyCallback) eventModel, err := newWASMModel(testString, nil, dummyCallback)
if err != nil { if err != nil {
......
...@@ -61,6 +61,9 @@ func Get(db *idb.Database, objectStoreName string, key js.Value) (js.Value, erro ...@@ -61,6 +61,9 @@ func Get(db *idb.Database, objectStoreName string, key js.Value) (js.Value, erro
if err != nil { if err != nil {
return js.Undefined(), errors.WithMessagef(parentErr, return js.Undefined(), errors.WithMessagef(parentErr,
"Unable to get from ObjectStore: %+v", err) "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 // Process result into string
...@@ -107,6 +110,9 @@ func GetIndex(db *idb.Database, objectStoreName string, ...@@ -107,6 +110,9 @@ func GetIndex(db *idb.Database, objectStoreName string,
if err != nil { if err != nil {
return js.Undefined(), errors.WithMessagef(parentErr, return js.Undefined(), errors.WithMessagef(parentErr,
"Unable to get from ObjectStore: %+v", err) "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 // 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. //
////////////////////////////////////////////////////////////////////////////////
//go:build js && wasm
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", "index", 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)
}
}
// Error path: Tests that GetIndex returns an error when trying to get a message
// that does not exist.
func TestGetIndex_NoMessageError(t *testing.T) {
db := newTestDB("messages", "index", t)
_, err := GetIndex(db, "messages", "index", 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(name, index 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
messageStore, err := db.CreateObjectStore(name, storeOpts)
if err != nil {
return err
}
_, err = messageStore.CreateIndex(
index, js.ValueOf("id"), idb.IndexOptions{})
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.
Finish editing this message first!
Please register or to comment