@fluidframework/azure-end-to-end-tests 2.62.0-356644 → 2.62.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/lib/test/tree.spec.js +2 -2
- package/lib/test/tree.spec.js.map +1 -1
- package/package.json +23 -23
- package/src/test/tree.spec.ts +2 -2
package/CHANGELOG.md
CHANGED
package/lib/test/tree.spec.js
CHANGED
|
@@ -6,7 +6,7 @@ import { strict as assert } from "node:assert";
|
|
|
6
6
|
import { ConnectionState } from "@fluidframework/container-loader";
|
|
7
7
|
import { timeoutPromise } from "@fluidframework/test-utils/internal";
|
|
8
8
|
import { SchemaFactory, Tree, TreeStatus, TreeViewConfiguration } from "@fluidframework/tree";
|
|
9
|
-
import { allowUnused,
|
|
9
|
+
import { allowUnused, asAlpha } from "@fluidframework/tree/alpha";
|
|
10
10
|
import { SharedTree } from "@fluidframework/tree/legacy";
|
|
11
11
|
import { createAzureClient, createContainerFromPayload, getContainerIdFromPayloadResponse, } from "./AzureClientFactory.js";
|
|
12
12
|
import * as ephemeralSummaryTrees from "./ephemeralSummaryTrees.js";
|
|
@@ -162,7 +162,7 @@ for (const testOpts of testMatrix) {
|
|
|
162
162
|
it("can handle undo/redo and transactions", async () => {
|
|
163
163
|
const { container } = await client.createContainer(schema, "2");
|
|
164
164
|
await container.attach();
|
|
165
|
-
const view =
|
|
165
|
+
const view = asAlpha(container.initialObjects.tree1.viewWith(new TreeViewConfiguration({ schema: User, enableSchemaValidation: true })));
|
|
166
166
|
view.initialize(new User({
|
|
167
167
|
name: "Shrek",
|
|
168
168
|
nicknames: ["Ogre"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.spec.js","sourceRoot":"","sources":["../../src/test/tree.spec.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { strict as assert } from \"node:assert\";\n\nimport type { AzureClient } from \"@fluidframework/azure-client\";\nimport { ConnectionState } from \"@fluidframework/container-loader\";\nimport type { ContainerSchema, IFluidContainer } from \"@fluidframework/fluid-static\";\nimport { timeoutPromise } from \"@fluidframework/test-utils/internal\";\nimport type { Revertible, TreeView, ValidateRecursiveSchema } from \"@fluidframework/tree\";\nimport { SchemaFactory, Tree, TreeStatus, TreeViewConfiguration } from \"@fluidframework/tree\";\nimport { allowUnused, asTreeViewAlpha } from \"@fluidframework/tree/alpha\";\nimport { SharedTree } from \"@fluidframework/tree/legacy\";\nimport type { AxiosResponse } from \"axios\";\n\nimport {\n\tcreateAzureClient,\n\tcreateContainerFromPayload,\n\tgetContainerIdFromPayloadResponse,\n} from \"./AzureClientFactory.js\";\nimport * as ephemeralSummaryTrees from \"./ephemeralSummaryTrees.js\";\nimport { getTestMatrix } from \"./utils.js\";\n\nconst sf = new SchemaFactory(\"d302b84c-75f6-4ecd-9663-524f467013e3\");\n\n/**\n * Define a class that is an array of strings\n * This class is used to create an array in the SharedTree\n */\nclass StringArray extends sf.array(\"StringArray\", sf.string) {\n\t/**\n\t * Remove the first item in the list if the list is not empty\n\t */\n\tpublic removeFirst(): void {\n\t\tif (this.length > 0) this.removeAt(0);\n\t}\n\n\t/**\n\t * Add an item to the beginning of the list\n\t */\n\tpublic insertNew(str: string): void {\n\t\tthis.insertAtStart(str);\n\t}\n}\n\n/**\n * This object is passed into the SharedTree via the schematize method.\n */\nconst treeConfiguration = new TreeViewConfiguration(\n\t// Specify the root type - StringArray.\n\t{ schema: StringArray },\n);\n\nconst testMatrix = getTestMatrix();\nfor (const testOpts of testMatrix) {\n\tdescribe(`SharedTree with AzureClient (${testOpts.variant})`, () => {\n\t\tconst connectTimeoutMs = 10_000;\n\t\tconst isEphemeral: boolean = testOpts.options.isEphemeral;\n\t\tlet client: AzureClient;\n\t\tconst schema = {\n\t\t\tinitialObjects: {\n\t\t\t\ttree1: SharedTree,\n\t\t\t},\n\t\t} satisfies ContainerSchema;\n\n\t\tbeforeEach(\"createAzureClient\", () => {\n\t\t\tclient = createAzureClient();\n\t\t});\n\n\t\tasync function waitForConnection(container: IFluidContainer): Promise<void> {\n\t\t\tif (container.connectionState !== ConnectionState.Connected) {\n\t\t\t\tawait timeoutPromise((resolve) => container.once(\"connected\", () => resolve()), {\n\t\t\t\t\tdurationMs: connectTimeoutMs,\n\t\t\t\t\terrorMsg: \"container1 connect() timeout\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Either creates a new azure client with a SharedTree, or loads an azure client from the existing summary tree (the \"ephemeral\" case).\n\t\t */\n\t\tasync function createOrLoad(\n\t\t\tsummaryTree?: (typeof ephemeralSummaryTrees)[keyof typeof ephemeralSummaryTrees],\n\t\t): Promise<{ containerId: string; treeData: TreeView<typeof StringArray> }> {\n\t\t\tlet containerId: string;\n\t\t\tlet treeData: TreeView<typeof StringArray>;\n\n\t\t\tif (summaryTree === undefined) {\n\t\t\t\tconst { container } = await client.createContainer(schema, \"2\");\n\t\t\t\ttreeData = container.initialObjects.tree1.viewWith(treeConfiguration);\n\t\t\t\ttreeData.initialize(new StringArray([]));\n\t\t\t\tcontainerId = await container.attach();\n\t\t\t\tawait waitForConnection(container);\n\t\t\t} else {\n\t\t\t\tconst containerResponse: AxiosResponse | undefined = await createContainerFromPayload(\n\t\t\t\t\tsummaryTree,\n\t\t\t\t\t\"test-user-id-1\",\n\t\t\t\t\t\"test-user-name-1\",\n\t\t\t\t);\n\n\t\t\t\tcontainerId = getContainerIdFromPayloadResponse(containerResponse);\n\t\t\t\tconst { container } = await client.getContainer(containerId, schema, \"2\");\n\t\t\t\ttreeData = container.initialObjects.tree1.viewWith(treeConfiguration);\n\t\t\t\tawait waitForConnection(container);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcontainerId,\n\t\t\t\ttreeData,\n\t\t\t};\n\t\t}\n\n\t\tit(\"can create/load a container with SharedTree and do basic ops\", async () => {\n\t\t\tconst { treeData } = await createOrLoad(\n\t\t\t\tisEphemeral ? ephemeralSummaryTrees.createContainerWithSharedTree : undefined,\n\t\t\t);\n\n\t\t\ttreeData.root.insertNew(\"test string 1\");\n\t\t\tassert.strictEqual(treeData.root.length, 1);\n\t\t\tassert.strictEqual(treeData.root.at(0), \"test string 1\");\n\n\t\t\ttreeData.root.insertNew(\"test string 2\");\n\t\t\tassert.strictEqual(treeData.root.length, 2);\n\t\t\tassert.strictEqual(treeData.root.at(0), \"test string 2\");\n\t\t\tassert.strictEqual(treeData.root.at(1), \"test string 1\");\n\n\t\t\ttreeData.root.removeFirst();\n\t\t\tassert.strictEqual(treeData.root.length, 1);\n\t\t\tassert.strictEqual(treeData.root.at(0), \"test string 1\");\n\t\t});\n\n\t\tit(\"can create/load a container with SharedTree collaborate with basic ops\", async () => {\n\t\t\tconst { containerId, treeData } = await createOrLoad(\n\t\t\t\tisEphemeral ? ephemeralSummaryTrees.createLoadContainerWithSharedTree : undefined,\n\t\t\t);\n\n\t\t\ttreeData.root.insertNew(\"test string 1\");\n\n\t\t\tconst resources = client.getContainer(containerId, schema, \"2\");\n\t\t\tawait assert.doesNotReject(\n\t\t\t\tresources,\n\t\t\t\t() => true,\n\t\t\t\t\"container cannot be retrieved from Azure Fluid Relay\",\n\t\t\t);\n\t\t\tconst { container: container2 } = await resources;\n\t\t\tassert.deepStrictEqual(\n\t\t\t\tObject.keys(container2.initialObjects),\n\t\t\t\tObject.keys(schema.initialObjects),\n\t\t\t);\n\n\t\t\tif (container2.connectionState !== ConnectionState.Connected) {\n\t\t\t\tawait timeoutPromise((resolve) => container2.once(\"connected\", () => resolve()), {\n\t\t\t\t\tdurationMs: connectTimeoutMs,\n\t\t\t\t\terrorMsg: \"container2 connect() timeout\",\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst treeData2 = container2.initialObjects.tree1.viewWith(treeConfiguration);\n\t\t\tassert.strictEqual(treeData2.root.length, 1);\n\t\t\tassert.strictEqual(treeData2.root.at(0), \"test string 1\");\n\t\t});\n\n\t\tif (!isEphemeral) {\n\t\t\t{\n\t\t\t\tclass Nicknames extends sf.array(\"Nicknames\", sf.string) {}\n\t\t\t\tclass UserData extends sf.map(\"UserData\", [sf.string, sf.number, sf.boolean]) {}\n\t\t\t\tclass User extends sf.object(\"User\", {\n\t\t\t\t\tname: sf.string,\n\t\t\t\t\tnicknames: Nicknames,\n\t\t\t\t\tdata: UserData,\n\t\t\t\t}) {}\n\n\t\t\t\tit(\"can read and edit data\", async () => {\n\t\t\t\t\tconst { container } = await client.createContainer(schema, \"2\");\n\t\t\t\t\tawait container.attach();\n\t\t\t\t\tconst view = container.initialObjects.tree1.viewWith(\n\t\t\t\t\t\tnew TreeViewConfiguration({ schema: User, enableSchemaValidation: true }),\n\t\t\t\t\t);\n\n\t\t\t\t\tconst tags: [string, string | number | boolean][] = [\n\t\t\t\t\t\t[\"Age\", 32],\n\t\t\t\t\t\t[\"Favorite Snack\", \"Potato Chips\"],\n\t\t\t\t\t\t[\"Awake\", true],\n\t\t\t\t\t];\n\n\t\t\t\t\tview.initialize(\n\t\t\t\t\t\tnew User({\n\t\t\t\t\t\t\tname: \"Pardes\",\n\t\t\t\t\t\t\tnicknames: [\"Alex\", \"Duder\"],\n\t\t\t\t\t\t\tdata: new Map(tags),\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\n\t\t\t\t\tconst user = view.root;\n\t\t\t\t\t// Read data\n\t\t\t\t\tassert.equal(user.name, \"Pardes\");\n\t\t\t\t\tassert.deepEqual([...user.nicknames], [\"Alex\", \"Duder\"]);\n\t\t\t\t\tassert.equal(user.data.get(\"Age\"), 32);\n\t\t\t\t\tassert.equal(user.data.get(\"Favorite Snack\"), \"Potato Chips\");\n\t\t\t\t\tassert.equal(user.data.get(\"Awake\"), true);\n\t\t\t\t\t// Mutate data\n\t\t\t\t\tuser.name = \"Pardesio\";\n\t\t\t\t\tuser.nicknames.insertAt(1, \"Alexp\");\n\t\t\t\t\tuser.data.set(\"Awake\", false);\n\t\t\t\t\tuser.data.set(\"Favorite Sport\", \"Ultimate Frisbee\");\n\t\t\t\t\t// Read mutated data\n\t\t\t\t\tassert.equal(user.name, \"Pardesio\");\n\t\t\t\t\tassert.deepEqual([...user.nicknames], [\"Alex\", \"Alexp\", \"Duder\"]);\n\t\t\t\t\tassert.equal(user.data.get(\"Age\"), 32);\n\t\t\t\t\tassert.equal(user.data.get(\"Awake\"), false);\n\t\t\t\t\tassert.equal(user.data.get(\"Favorite Sport\"), \"Ultimate Frisbee\");\n\t\t\t\t});\n\n\t\t\t\tit(\"can handle undo/redo and transactions\", async () => {\n\t\t\t\t\tconst { container } = await client.createContainer(schema, \"2\");\n\t\t\t\t\tawait container.attach();\n\t\t\t\t\tconst view = asTreeViewAlpha(\n\t\t\t\t\t\tcontainer.initialObjects.tree1.viewWith(\n\t\t\t\t\t\t\tnew TreeViewConfiguration({ schema: User, enableSchemaValidation: true }),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\tview.initialize(\n\t\t\t\t\t\tnew User({\n\t\t\t\t\t\t\tname: \"Shrek\",\n\t\t\t\t\t\t\tnicknames: [\"Ogre\"],\n\t\t\t\t\t\t\tdata: new Map([[\"Color\", \"a5bf2e\"]]),\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\n\t\t\t\t\tconst user = view.root;\n\t\t\t\t\t// Capture the Revertible so that changes can be undone\n\t\t\t\t\tlet revertible: Revertible | undefined;\n\t\t\t\t\tview.events.on(\"changed\", (_, getRevertible) => {\n\t\t\t\t\t\tassert(getRevertible !== undefined);\n\t\t\t\t\t\trevertible = getRevertible();\n\t\t\t\t\t});\n\t\t\t\t\t// Change a field, then revert the change\n\t\t\t\t\tuser.name = \"Donkey\";\n\t\t\t\t\tassert.equal(user.name, \"Donkey\");\n\t\t\t\t\tassert(revertible !== undefined);\n\t\t\t\t\trevertible.revert();\n\t\t\t\t\tassert.equal(user.name, \"Shrek\");\n\t\t\t\t\t// Run a transaction which changes multiple fields, then revert it\n\t\t\t\t\tTree.runTransaction(user, (u) => {\n\t\t\t\t\t\tu.name = \"Donkey\";\n\t\t\t\t\t\tu.nicknames.removeRange();\n\t\t\t\t\t\tu.data.set(\"Color\", \"8e8170\");\n\t\t\t\t\t});\n\n\t\t\t\t\tassert.equal(user.name, \"Donkey\");\n\t\t\t\t\tassert.equal(user.nicknames.length, 0);\n\t\t\t\t\tassert.equal(user.data.get(\"Color\"), \"8e8170\");\n\t\t\t\t\trevertible.revert();\n\t\t\t\t\tassert.equal(user.name, \"Shrek\");\n\t\t\t\t\tassert.equal(user.nicknames[0], \"Ogre\");\n\t\t\t\t\tassert.equal(user.data.get(\"Color\"), \"a5bf2e\");\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tit(\"can use identifiers and the static Tree APIs\", async () => {\n\t\t\t\tclass Widget extends sf.object(\"Widget\", { id: sf.identifier }) {}\n\n\t\t\t\tconst { container } = await client.createContainer(schema, \"2\");\n\t\t\t\tawait container.attach();\n\t\t\t\tconst view = container.initialObjects.tree1.viewWith(\n\t\t\t\t\tnew TreeViewConfiguration({\n\t\t\t\t\t\tschema: sf.array(Widget),\n\t\t\t\t\t\tenableSchemaValidation: true,\n\t\t\t\t\t}),\n\t\t\t\t);\n\n\t\t\t\tview.initialize([new Widget({}), new Widget({ id: \"fidget\" })]);\n\n\t\t\t\tconst widget = view.root.at(0);\n\t\t\t\tassert(widget !== undefined);\n\t\t\t\tconst fidget = view.root.at(-1);\n\t\t\t\tassert(fidget !== undefined);\n\t\t\t\t// Test various Tree.* APIs and ensure they are working\n\t\t\t\tassert.equal(Tree.contains(view.root, widget), true);\n\t\t\t\tassert.equal(Tree.contains(fidget, widget), false);\n\t\t\t\tassert.equal(Tree.is(fidget, Widget), true);\n\t\t\t\tassert.equal(Tree.is(view.root, Widget), false);\n\t\t\t\tassert.equal(Tree.key(widget), 0);\n\t\t\t\tassert.equal(Tree.key(fidget), 1);\n\t\t\t\tassert.equal(Tree.parent(widget), view.root);\n\t\t\t\tassert.equal(Tree.schema(fidget), Widget);\n\t\t\t\tassert.equal(typeof Tree.shortId(widget), \"number\");\n\t\t\t\tassert.equal(Tree.shortId(fidget), \"fidget\");\n\t\t\t\tassert.equal(Tree.status(widget), TreeStatus.InDocument);\n\t\t\t});\n\n\t\t\tit(\"can listen to events on a recursive tree\", async () => {\n\t\t\t\tclass Doll extends sf.objectRecursive(\"Matryoshka\", {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n\t\t\t\t\tnested: sf.optionalRecursive([() => Doll]),\n\t\t\t\t}) {}\n\t\t\t\tallowUnused<ValidateRecursiveSchema<typeof Doll>>();\n\n\t\t\t\tconst { container } = await client.createContainer(schema, \"2\");\n\t\t\t\tawait container.attach();\n\t\t\t\tconst view = container.initialObjects.tree1.viewWith(\n\t\t\t\t\tnew TreeViewConfiguration({ schema: Doll, enableSchemaValidation: true }),\n\t\t\t\t);\n\n\t\t\t\t// These nodes in the initial tree are unhydrated...\n\t\t\t\tconst depth1 = new Doll({ nested: new Doll({}) });\n\t\t\t\tconst depth0 = new Doll({ nested: depth1 });\n\t\t\t\tview.initialize(depth0);\n\t\t\t\t// ...and confirmed to be the same nodes we get when we read the tree after initialization\n\t\t\t\tassert.equal(view.root, depth0);\n\t\t\t\tassert.equal(view.root.nested, depth1);\n\t\t\t\t// Record a list of the node events fired\n\t\t\t\tconst eventLog: string[] = [];\n\t\t\t\tTree.on(depth0, \"nodeChanged\", () => {\n\t\t\t\t\teventLog.push(\"depth0.nested changed\");\n\t\t\t\t});\n\t\t\t\tTree.on(depth1, \"nodeChanged\", () => {\n\t\t\t\t\teventLog.push(\"depth1.nested changed\");\n\t\t\t\t});\n\t\t\t\t// This event registration happens on the unhydrated (not yet inserted) node\n\t\t\t\tconst newDepth2 = new Doll({});\n\t\t\t\tTree.on(newDepth2, \"nodeChanged\", () => {\n\t\t\t\t\teventLog.push(\"depth2.nested changed\");\n\t\t\t\t});\n\t\t\t\t// Fire the events by doing mutations\n\t\t\t\tdepth1.nested = newDepth2; // \"depth1.nested changed\"\n\t\t\t\tassert.equal(depth1.nested, newDepth2);\n\t\t\t\tdepth1.nested.nested = new Doll({}); // \"depth2.nested changed\"\n\t\t\t\tdepth0.nested = new Doll({}); // \"depth0.nested changed\"\n\t\t\t\t// Ensure the events fired in the expected order\n\t\t\t\tassert.deepEqual(eventLog, [\n\t\t\t\t\t\"depth1.nested changed\",\n\t\t\t\t\t\"depth2.nested changed\",\n\t\t\t\t\t\"depth0.nested changed\",\n\t\t\t\t]);\n\t\t\t});\n\t\t}\n\t});\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tree.spec.js","sourceRoot":"","sources":["../../src/test/tree.spec.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { strict as assert } from \"node:assert\";\n\nimport type { AzureClient } from \"@fluidframework/azure-client\";\nimport { ConnectionState } from \"@fluidframework/container-loader\";\nimport type { ContainerSchema, IFluidContainer } from \"@fluidframework/fluid-static\";\nimport { timeoutPromise } from \"@fluidframework/test-utils/internal\";\nimport type { Revertible, TreeView, ValidateRecursiveSchema } from \"@fluidframework/tree\";\nimport { SchemaFactory, Tree, TreeStatus, TreeViewConfiguration } from \"@fluidframework/tree\";\nimport { allowUnused, asAlpha } from \"@fluidframework/tree/alpha\";\nimport { SharedTree } from \"@fluidframework/tree/legacy\";\nimport type { AxiosResponse } from \"axios\";\n\nimport {\n\tcreateAzureClient,\n\tcreateContainerFromPayload,\n\tgetContainerIdFromPayloadResponse,\n} from \"./AzureClientFactory.js\";\nimport * as ephemeralSummaryTrees from \"./ephemeralSummaryTrees.js\";\nimport { getTestMatrix } from \"./utils.js\";\n\nconst sf = new SchemaFactory(\"d302b84c-75f6-4ecd-9663-524f467013e3\");\n\n/**\n * Define a class that is an array of strings\n * This class is used to create an array in the SharedTree\n */\nclass StringArray extends sf.array(\"StringArray\", sf.string) {\n\t/**\n\t * Remove the first item in the list if the list is not empty\n\t */\n\tpublic removeFirst(): void {\n\t\tif (this.length > 0) this.removeAt(0);\n\t}\n\n\t/**\n\t * Add an item to the beginning of the list\n\t */\n\tpublic insertNew(str: string): void {\n\t\tthis.insertAtStart(str);\n\t}\n}\n\n/**\n * This object is passed into the SharedTree via the schematize method.\n */\nconst treeConfiguration = new TreeViewConfiguration(\n\t// Specify the root type - StringArray.\n\t{ schema: StringArray },\n);\n\nconst testMatrix = getTestMatrix();\nfor (const testOpts of testMatrix) {\n\tdescribe(`SharedTree with AzureClient (${testOpts.variant})`, () => {\n\t\tconst connectTimeoutMs = 10_000;\n\t\tconst isEphemeral: boolean = testOpts.options.isEphemeral;\n\t\tlet client: AzureClient;\n\t\tconst schema = {\n\t\t\tinitialObjects: {\n\t\t\t\ttree1: SharedTree,\n\t\t\t},\n\t\t} satisfies ContainerSchema;\n\n\t\tbeforeEach(\"createAzureClient\", () => {\n\t\t\tclient = createAzureClient();\n\t\t});\n\n\t\tasync function waitForConnection(container: IFluidContainer): Promise<void> {\n\t\t\tif (container.connectionState !== ConnectionState.Connected) {\n\t\t\t\tawait timeoutPromise((resolve) => container.once(\"connected\", () => resolve()), {\n\t\t\t\t\tdurationMs: connectTimeoutMs,\n\t\t\t\t\terrorMsg: \"container1 connect() timeout\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Either creates a new azure client with a SharedTree, or loads an azure client from the existing summary tree (the \"ephemeral\" case).\n\t\t */\n\t\tasync function createOrLoad(\n\t\t\tsummaryTree?: (typeof ephemeralSummaryTrees)[keyof typeof ephemeralSummaryTrees],\n\t\t): Promise<{ containerId: string; treeData: TreeView<typeof StringArray> }> {\n\t\t\tlet containerId: string;\n\t\t\tlet treeData: TreeView<typeof StringArray>;\n\n\t\t\tif (summaryTree === undefined) {\n\t\t\t\tconst { container } = await client.createContainer(schema, \"2\");\n\t\t\t\ttreeData = container.initialObjects.tree1.viewWith(treeConfiguration);\n\t\t\t\ttreeData.initialize(new StringArray([]));\n\t\t\t\tcontainerId = await container.attach();\n\t\t\t\tawait waitForConnection(container);\n\t\t\t} else {\n\t\t\t\tconst containerResponse: AxiosResponse | undefined = await createContainerFromPayload(\n\t\t\t\t\tsummaryTree,\n\t\t\t\t\t\"test-user-id-1\",\n\t\t\t\t\t\"test-user-name-1\",\n\t\t\t\t);\n\n\t\t\t\tcontainerId = getContainerIdFromPayloadResponse(containerResponse);\n\t\t\t\tconst { container } = await client.getContainer(containerId, schema, \"2\");\n\t\t\t\ttreeData = container.initialObjects.tree1.viewWith(treeConfiguration);\n\t\t\t\tawait waitForConnection(container);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcontainerId,\n\t\t\t\ttreeData,\n\t\t\t};\n\t\t}\n\n\t\tit(\"can create/load a container with SharedTree and do basic ops\", async () => {\n\t\t\tconst { treeData } = await createOrLoad(\n\t\t\t\tisEphemeral ? ephemeralSummaryTrees.createContainerWithSharedTree : undefined,\n\t\t\t);\n\n\t\t\ttreeData.root.insertNew(\"test string 1\");\n\t\t\tassert.strictEqual(treeData.root.length, 1);\n\t\t\tassert.strictEqual(treeData.root.at(0), \"test string 1\");\n\n\t\t\ttreeData.root.insertNew(\"test string 2\");\n\t\t\tassert.strictEqual(treeData.root.length, 2);\n\t\t\tassert.strictEqual(treeData.root.at(0), \"test string 2\");\n\t\t\tassert.strictEqual(treeData.root.at(1), \"test string 1\");\n\n\t\t\ttreeData.root.removeFirst();\n\t\t\tassert.strictEqual(treeData.root.length, 1);\n\t\t\tassert.strictEqual(treeData.root.at(0), \"test string 1\");\n\t\t});\n\n\t\tit(\"can create/load a container with SharedTree collaborate with basic ops\", async () => {\n\t\t\tconst { containerId, treeData } = await createOrLoad(\n\t\t\t\tisEphemeral ? ephemeralSummaryTrees.createLoadContainerWithSharedTree : undefined,\n\t\t\t);\n\n\t\t\ttreeData.root.insertNew(\"test string 1\");\n\n\t\t\tconst resources = client.getContainer(containerId, schema, \"2\");\n\t\t\tawait assert.doesNotReject(\n\t\t\t\tresources,\n\t\t\t\t() => true,\n\t\t\t\t\"container cannot be retrieved from Azure Fluid Relay\",\n\t\t\t);\n\t\t\tconst { container: container2 } = await resources;\n\t\t\tassert.deepStrictEqual(\n\t\t\t\tObject.keys(container2.initialObjects),\n\t\t\t\tObject.keys(schema.initialObjects),\n\t\t\t);\n\n\t\t\tif (container2.connectionState !== ConnectionState.Connected) {\n\t\t\t\tawait timeoutPromise((resolve) => container2.once(\"connected\", () => resolve()), {\n\t\t\t\t\tdurationMs: connectTimeoutMs,\n\t\t\t\t\terrorMsg: \"container2 connect() timeout\",\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst treeData2 = container2.initialObjects.tree1.viewWith(treeConfiguration);\n\t\t\tassert.strictEqual(treeData2.root.length, 1);\n\t\t\tassert.strictEqual(treeData2.root.at(0), \"test string 1\");\n\t\t});\n\n\t\tif (!isEphemeral) {\n\t\t\t{\n\t\t\t\tclass Nicknames extends sf.array(\"Nicknames\", sf.string) {}\n\t\t\t\tclass UserData extends sf.map(\"UserData\", [sf.string, sf.number, sf.boolean]) {}\n\t\t\t\tclass User extends sf.object(\"User\", {\n\t\t\t\t\tname: sf.string,\n\t\t\t\t\tnicknames: Nicknames,\n\t\t\t\t\tdata: UserData,\n\t\t\t\t}) {}\n\n\t\t\t\tit(\"can read and edit data\", async () => {\n\t\t\t\t\tconst { container } = await client.createContainer(schema, \"2\");\n\t\t\t\t\tawait container.attach();\n\t\t\t\t\tconst view = container.initialObjects.tree1.viewWith(\n\t\t\t\t\t\tnew TreeViewConfiguration({ schema: User, enableSchemaValidation: true }),\n\t\t\t\t\t);\n\n\t\t\t\t\tconst tags: [string, string | number | boolean][] = [\n\t\t\t\t\t\t[\"Age\", 32],\n\t\t\t\t\t\t[\"Favorite Snack\", \"Potato Chips\"],\n\t\t\t\t\t\t[\"Awake\", true],\n\t\t\t\t\t];\n\n\t\t\t\t\tview.initialize(\n\t\t\t\t\t\tnew User({\n\t\t\t\t\t\t\tname: \"Pardes\",\n\t\t\t\t\t\t\tnicknames: [\"Alex\", \"Duder\"],\n\t\t\t\t\t\t\tdata: new Map(tags),\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\n\t\t\t\t\tconst user = view.root;\n\t\t\t\t\t// Read data\n\t\t\t\t\tassert.equal(user.name, \"Pardes\");\n\t\t\t\t\tassert.deepEqual([...user.nicknames], [\"Alex\", \"Duder\"]);\n\t\t\t\t\tassert.equal(user.data.get(\"Age\"), 32);\n\t\t\t\t\tassert.equal(user.data.get(\"Favorite Snack\"), \"Potato Chips\");\n\t\t\t\t\tassert.equal(user.data.get(\"Awake\"), true);\n\t\t\t\t\t// Mutate data\n\t\t\t\t\tuser.name = \"Pardesio\";\n\t\t\t\t\tuser.nicknames.insertAt(1, \"Alexp\");\n\t\t\t\t\tuser.data.set(\"Awake\", false);\n\t\t\t\t\tuser.data.set(\"Favorite Sport\", \"Ultimate Frisbee\");\n\t\t\t\t\t// Read mutated data\n\t\t\t\t\tassert.equal(user.name, \"Pardesio\");\n\t\t\t\t\tassert.deepEqual([...user.nicknames], [\"Alex\", \"Alexp\", \"Duder\"]);\n\t\t\t\t\tassert.equal(user.data.get(\"Age\"), 32);\n\t\t\t\t\tassert.equal(user.data.get(\"Awake\"), false);\n\t\t\t\t\tassert.equal(user.data.get(\"Favorite Sport\"), \"Ultimate Frisbee\");\n\t\t\t\t});\n\n\t\t\t\tit(\"can handle undo/redo and transactions\", async () => {\n\t\t\t\t\tconst { container } = await client.createContainer(schema, \"2\");\n\t\t\t\t\tawait container.attach();\n\t\t\t\t\tconst view = asAlpha(\n\t\t\t\t\t\tcontainer.initialObjects.tree1.viewWith(\n\t\t\t\t\t\t\tnew TreeViewConfiguration({ schema: User, enableSchemaValidation: true }),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\tview.initialize(\n\t\t\t\t\t\tnew User({\n\t\t\t\t\t\t\tname: \"Shrek\",\n\t\t\t\t\t\t\tnicknames: [\"Ogre\"],\n\t\t\t\t\t\t\tdata: new Map([[\"Color\", \"a5bf2e\"]]),\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\n\t\t\t\t\tconst user = view.root;\n\t\t\t\t\t// Capture the Revertible so that changes can be undone\n\t\t\t\t\tlet revertible: Revertible | undefined;\n\t\t\t\t\tview.events.on(\"changed\", (_, getRevertible) => {\n\t\t\t\t\t\tassert(getRevertible !== undefined);\n\t\t\t\t\t\trevertible = getRevertible();\n\t\t\t\t\t});\n\t\t\t\t\t// Change a field, then revert the change\n\t\t\t\t\tuser.name = \"Donkey\";\n\t\t\t\t\tassert.equal(user.name, \"Donkey\");\n\t\t\t\t\tassert(revertible !== undefined);\n\t\t\t\t\trevertible.revert();\n\t\t\t\t\tassert.equal(user.name, \"Shrek\");\n\t\t\t\t\t// Run a transaction which changes multiple fields, then revert it\n\t\t\t\t\tTree.runTransaction(user, (u) => {\n\t\t\t\t\t\tu.name = \"Donkey\";\n\t\t\t\t\t\tu.nicknames.removeRange();\n\t\t\t\t\t\tu.data.set(\"Color\", \"8e8170\");\n\t\t\t\t\t});\n\n\t\t\t\t\tassert.equal(user.name, \"Donkey\");\n\t\t\t\t\tassert.equal(user.nicknames.length, 0);\n\t\t\t\t\tassert.equal(user.data.get(\"Color\"), \"8e8170\");\n\t\t\t\t\trevertible.revert();\n\t\t\t\t\tassert.equal(user.name, \"Shrek\");\n\t\t\t\t\tassert.equal(user.nicknames[0], \"Ogre\");\n\t\t\t\t\tassert.equal(user.data.get(\"Color\"), \"a5bf2e\");\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tit(\"can use identifiers and the static Tree APIs\", async () => {\n\t\t\t\tclass Widget extends sf.object(\"Widget\", { id: sf.identifier }) {}\n\n\t\t\t\tconst { container } = await client.createContainer(schema, \"2\");\n\t\t\t\tawait container.attach();\n\t\t\t\tconst view = container.initialObjects.tree1.viewWith(\n\t\t\t\t\tnew TreeViewConfiguration({\n\t\t\t\t\t\tschema: sf.array(Widget),\n\t\t\t\t\t\tenableSchemaValidation: true,\n\t\t\t\t\t}),\n\t\t\t\t);\n\n\t\t\t\tview.initialize([new Widget({}), new Widget({ id: \"fidget\" })]);\n\n\t\t\t\tconst widget = view.root.at(0);\n\t\t\t\tassert(widget !== undefined);\n\t\t\t\tconst fidget = view.root.at(-1);\n\t\t\t\tassert(fidget !== undefined);\n\t\t\t\t// Test various Tree.* APIs and ensure they are working\n\t\t\t\tassert.equal(Tree.contains(view.root, widget), true);\n\t\t\t\tassert.equal(Tree.contains(fidget, widget), false);\n\t\t\t\tassert.equal(Tree.is(fidget, Widget), true);\n\t\t\t\tassert.equal(Tree.is(view.root, Widget), false);\n\t\t\t\tassert.equal(Tree.key(widget), 0);\n\t\t\t\tassert.equal(Tree.key(fidget), 1);\n\t\t\t\tassert.equal(Tree.parent(widget), view.root);\n\t\t\t\tassert.equal(Tree.schema(fidget), Widget);\n\t\t\t\tassert.equal(typeof Tree.shortId(widget), \"number\");\n\t\t\t\tassert.equal(Tree.shortId(fidget), \"fidget\");\n\t\t\t\tassert.equal(Tree.status(widget), TreeStatus.InDocument);\n\t\t\t});\n\n\t\t\tit(\"can listen to events on a recursive tree\", async () => {\n\t\t\t\tclass Doll extends sf.objectRecursive(\"Matryoshka\", {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n\t\t\t\t\tnested: sf.optionalRecursive([() => Doll]),\n\t\t\t\t}) {}\n\t\t\t\tallowUnused<ValidateRecursiveSchema<typeof Doll>>();\n\n\t\t\t\tconst { container } = await client.createContainer(schema, \"2\");\n\t\t\t\tawait container.attach();\n\t\t\t\tconst view = container.initialObjects.tree1.viewWith(\n\t\t\t\t\tnew TreeViewConfiguration({ schema: Doll, enableSchemaValidation: true }),\n\t\t\t\t);\n\n\t\t\t\t// These nodes in the initial tree are unhydrated...\n\t\t\t\tconst depth1 = new Doll({ nested: new Doll({}) });\n\t\t\t\tconst depth0 = new Doll({ nested: depth1 });\n\t\t\t\tview.initialize(depth0);\n\t\t\t\t// ...and confirmed to be the same nodes we get when we read the tree after initialization\n\t\t\t\tassert.equal(view.root, depth0);\n\t\t\t\tassert.equal(view.root.nested, depth1);\n\t\t\t\t// Record a list of the node events fired\n\t\t\t\tconst eventLog: string[] = [];\n\t\t\t\tTree.on(depth0, \"nodeChanged\", () => {\n\t\t\t\t\teventLog.push(\"depth0.nested changed\");\n\t\t\t\t});\n\t\t\t\tTree.on(depth1, \"nodeChanged\", () => {\n\t\t\t\t\teventLog.push(\"depth1.nested changed\");\n\t\t\t\t});\n\t\t\t\t// This event registration happens on the unhydrated (not yet inserted) node\n\t\t\t\tconst newDepth2 = new Doll({});\n\t\t\t\tTree.on(newDepth2, \"nodeChanged\", () => {\n\t\t\t\t\teventLog.push(\"depth2.nested changed\");\n\t\t\t\t});\n\t\t\t\t// Fire the events by doing mutations\n\t\t\t\tdepth1.nested = newDepth2; // \"depth1.nested changed\"\n\t\t\t\tassert.equal(depth1.nested, newDepth2);\n\t\t\t\tdepth1.nested.nested = new Doll({}); // \"depth2.nested changed\"\n\t\t\t\tdepth0.nested = new Doll({}); // \"depth0.nested changed\"\n\t\t\t\t// Ensure the events fired in the expected order\n\t\t\t\tassert.deepEqual(eventLog, [\n\t\t\t\t\t\"depth1.nested changed\",\n\t\t\t\t\t\"depth2.nested changed\",\n\t\t\t\t\t\"depth0.nested changed\",\n\t\t\t\t]);\n\t\t\t});\n\t\t}\n\t});\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/azure-end-to-end-tests",
|
|
3
|
-
"version": "2.62.0
|
|
3
|
+
"version": "2.62.0",
|
|
4
4
|
"description": "Azure client end to end tests",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -33,29 +33,29 @@
|
|
|
33
33
|
"temp-directory": "nyc/.nyc_output"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@fluid-experimental/data-objects": "2.62.0
|
|
37
|
-
"@fluid-internal/client-utils": "2.62.0
|
|
38
|
-
"@fluid-internal/mocha-test-setup": "2.62.0
|
|
39
|
-
"@fluid-private/test-version-utils": "2.62.0
|
|
40
|
-
"@fluidframework/aqueduct": "2.62.0
|
|
41
|
-
"@fluidframework/azure-client": "2.62.0
|
|
36
|
+
"@fluid-experimental/data-objects": "~2.62.0",
|
|
37
|
+
"@fluid-internal/client-utils": "~2.62.0",
|
|
38
|
+
"@fluid-internal/mocha-test-setup": "~2.62.0",
|
|
39
|
+
"@fluid-private/test-version-utils": "~2.62.0",
|
|
40
|
+
"@fluidframework/aqueduct": "~2.62.0",
|
|
41
|
+
"@fluidframework/azure-client": "~2.62.0",
|
|
42
42
|
"@fluidframework/azure-client-legacy": "npm:@fluidframework/azure-client@^1.2.0",
|
|
43
|
-
"@fluidframework/container-definitions": "2.62.0
|
|
44
|
-
"@fluidframework/container-loader": "2.62.0
|
|
45
|
-
"@fluidframework/core-interfaces": "2.62.0
|
|
46
|
-
"@fluidframework/counter": "2.62.0
|
|
47
|
-
"@fluidframework/datastore-definitions": "2.62.0
|
|
48
|
-
"@fluidframework/fluid-static": "2.62.0
|
|
49
|
-
"@fluidframework/map": "2.62.0
|
|
43
|
+
"@fluidframework/container-definitions": "~2.62.0",
|
|
44
|
+
"@fluidframework/container-loader": "~2.62.0",
|
|
45
|
+
"@fluidframework/core-interfaces": "~2.62.0",
|
|
46
|
+
"@fluidframework/counter": "~2.62.0",
|
|
47
|
+
"@fluidframework/datastore-definitions": "~2.62.0",
|
|
48
|
+
"@fluidframework/fluid-static": "~2.62.0",
|
|
49
|
+
"@fluidframework/map": "~2.62.0",
|
|
50
50
|
"@fluidframework/map-legacy": "npm:@fluidframework/map@^1.4.0",
|
|
51
|
-
"@fluidframework/matrix": "2.62.0
|
|
52
|
-
"@fluidframework/presence": "2.62.0
|
|
53
|
-
"@fluidframework/runtime-definitions": "2.62.0
|
|
54
|
-
"@fluidframework/sequence": "2.62.0
|
|
55
|
-
"@fluidframework/telemetry-utils": "2.62.0
|
|
56
|
-
"@fluidframework/test-runtime-utils": "2.62.0
|
|
57
|
-
"@fluidframework/test-utils": "2.62.0
|
|
58
|
-
"@fluidframework/tree": "2.62.0
|
|
51
|
+
"@fluidframework/matrix": "~2.62.0",
|
|
52
|
+
"@fluidframework/presence": "~2.62.0",
|
|
53
|
+
"@fluidframework/runtime-definitions": "~2.62.0",
|
|
54
|
+
"@fluidframework/sequence": "~2.62.0",
|
|
55
|
+
"@fluidframework/telemetry-utils": "~2.62.0",
|
|
56
|
+
"@fluidframework/test-runtime-utils": "~2.62.0",
|
|
57
|
+
"@fluidframework/test-utils": "~2.62.0",
|
|
58
|
+
"@fluidframework/tree": "~2.62.0",
|
|
59
59
|
"axios": "^1.8.4",
|
|
60
60
|
"cross-env": "^7.0.3",
|
|
61
61
|
"mocha": "^10.8.2",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"@biomejs/biome": "~1.9.3",
|
|
70
70
|
"@fluidframework/build-common": "^2.0.3",
|
|
71
71
|
"@fluidframework/build-tools": "^0.58.3",
|
|
72
|
-
"@fluidframework/driver-definitions": "2.62.0
|
|
72
|
+
"@fluidframework/driver-definitions": "~2.62.0",
|
|
73
73
|
"@fluidframework/eslint-config-fluid": "^6.0.0",
|
|
74
74
|
"@types/mocha": "^10.0.10",
|
|
75
75
|
"@types/nock": "^9.3.0",
|
package/src/test/tree.spec.ts
CHANGED
|
@@ -11,7 +11,7 @@ import type { ContainerSchema, IFluidContainer } from "@fluidframework/fluid-sta
|
|
|
11
11
|
import { timeoutPromise } from "@fluidframework/test-utils/internal";
|
|
12
12
|
import type { Revertible, TreeView, ValidateRecursiveSchema } from "@fluidframework/tree";
|
|
13
13
|
import { SchemaFactory, Tree, TreeStatus, TreeViewConfiguration } from "@fluidframework/tree";
|
|
14
|
-
import { allowUnused,
|
|
14
|
+
import { allowUnused, asAlpha } from "@fluidframework/tree/alpha";
|
|
15
15
|
import { SharedTree } from "@fluidframework/tree/legacy";
|
|
16
16
|
import type { AxiosResponse } from "axios";
|
|
17
17
|
|
|
@@ -216,7 +216,7 @@ for (const testOpts of testMatrix) {
|
|
|
216
216
|
it("can handle undo/redo and transactions", async () => {
|
|
217
217
|
const { container } = await client.createContainer(schema, "2");
|
|
218
218
|
await container.attach();
|
|
219
|
-
const view =
|
|
219
|
+
const view = asAlpha(
|
|
220
220
|
container.initialObjects.tree1.viewWith(
|
|
221
221
|
new TreeViewConfiguration({ schema: User, enableSchemaValidation: true }),
|
|
222
222
|
),
|