fix(jazz-tools/tools): explicit loadAs in CoList.upsertUnique to use it without loaded context
This commit is contained in:
5
.changeset/lucky-wasps-rhyme.md
Normal file
5
.changeset/lucky-wasps-rhyme.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"jazz-tools": patch
|
||||
---
|
||||
|
||||
Explicit loadAs in CoList.upsertUnique to use it without loaded context
|
||||
@@ -621,7 +621,11 @@ export class CoList<out Item = any> extends Array<Item> implements CoValue {
|
||||
resolve?: RefsToResolveStrict<L, R>;
|
||||
},
|
||||
): Promise<Resolved<L, R> | null> {
|
||||
let listId = CoList._findUnique(options.unique, options.owner.id);
|
||||
const listId = CoList._findUnique(
|
||||
options.unique,
|
||||
options.owner.id,
|
||||
options.owner._loadedAs,
|
||||
);
|
||||
let list: Resolved<L, R> | null = await loadCoValueWithoutMe(this, listId, {
|
||||
...options,
|
||||
loadAs: options.owner._loadedAs,
|
||||
|
||||
@@ -3,6 +3,7 @@ import { assert, beforeEach, describe, expect, test, vi } from "vitest";
|
||||
import { Account, Group, subscribeToCoValue, z } from "../index.js";
|
||||
import {
|
||||
Loaded,
|
||||
activeAccountContext,
|
||||
co,
|
||||
coValueClassFromCoValueClassOrSchema,
|
||||
} from "../internal.js";
|
||||
@@ -906,6 +907,29 @@ describe("CoList unique methods", () => {
|
||||
expect(result?.[2]).toBe("item3");
|
||||
});
|
||||
|
||||
test("upsertUnique without an active account", async () => {
|
||||
const account = activeAccountContext.get();
|
||||
activeAccountContext.set(null);
|
||||
|
||||
const ItemList = co.list(z.string());
|
||||
|
||||
const sourceData = ["item1", "item2", "item3"];
|
||||
|
||||
const result = await ItemList.upsertUnique({
|
||||
value: sourceData,
|
||||
unique: "new-list",
|
||||
owner: account,
|
||||
});
|
||||
|
||||
expect(result).not.toBeNull();
|
||||
expect(result?.length).toBe(3);
|
||||
expect(result?.[0]).toBe("item1");
|
||||
expect(result?.[1]).toBe("item2");
|
||||
expect(result?.[2]).toBe("item3");
|
||||
|
||||
expect(result?._owner).toEqual(account);
|
||||
});
|
||||
|
||||
test("upsertUnique updates existing list", async () => {
|
||||
const ItemList = co.list(z.string());
|
||||
const group = Group.create();
|
||||
|
||||
Reference in New Issue
Block a user