Skip to content

Commit ca5fcbb

Browse files
test updates
1 parent 3d2a319 commit ca5fcbb

File tree

1 file changed

+61
-30
lines changed

1 file changed

+61
-30
lines changed

packages/test/local-server-tests/src/test/loadFrozenContainerFromPendingState.spec.ts

Lines changed: 61 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,42 +3,56 @@
33
* Licensed under the MIT License.
44
*/
55

6+
import { strict as assert } from "assert";
7+
68
import {
9+
asLegacyAlpha,
710
createDetachedContainer,
8-
type IContainerExperimental,
911
loadFrozenContainerFromPendingState,
1012
} from "@fluidframework/container-loader/internal";
1113
import type { FluidObject } from "@fluidframework/core-interfaces/internal";
12-
import { assert } from "@fluidframework/core-utils/internal";
14+
import type { ISharedMap } from "@fluidframework/map/internal";
15+
import { isFluidHandle, toFluidHandleInternal } from "@fluidframework/runtime-utils/internal";
1316
import { LocalDeltaConnectionServer } from "@fluidframework/server-local-server";
1417
import { timeoutPromise, type TestFluidObject } from "@fluidframework/test-utils/internal";
1518

1619
import { createLoader } from "../utils.js";
1720

21+
const toComparableArray = (dir: ISharedMap): [string, unknown][] =>
22+
[...dir.entries()].map(([key, value]) => [
23+
key,
24+
isFluidHandle(value) ? toFluidHandleInternal(value).absolutePath : value,
25+
]);
26+
1827
describe("loadFrozenContainerFromPendingState", () => {
1928
it("loadFrozenContainerFromPendingState", async () => {
2029
const deltaConnectionServer = LocalDeltaConnectionServer.create();
2130

2231
const { urlResolver, codeDetails, codeLoader, loaderProps } = createLoader({
2332
deltaConnectionServer,
2433
});
25-
const container: IContainerExperimental = await createDetachedContainer({
26-
codeDetails,
27-
...loaderProps,
28-
configProvider: {
29-
getRawConfig: (name) => {
30-
switch (name) {
31-
case "Fluid.Container.enableOfflineLoad":
32-
return true;
33-
default:
34-
return undefined;
35-
}
34+
const container = asLegacyAlpha(
35+
await createDetachedContainer({
36+
codeDetails,
37+
...loaderProps,
38+
configProvider: {
39+
getRawConfig: (name) => {
40+
switch (name) {
41+
case "Fluid.Container.enableOfflineLoad":
42+
return true;
43+
default:
44+
return undefined;
45+
}
46+
},
3647
},
37-
},
38-
});
48+
}),
49+
);
3950
const { ITestFluidObject }: FluidObject<TestFluidObject> =
4051
(await container.getEntryPoint()) ?? {};
41-
assert(ITestFluidObject !== undefined, "entrypoint must be test object");
52+
assert(
53+
ITestFluidObject !== undefined,
54+
"Expected entrypoint to be a valid TestFluidObject, but it was undefined",
55+
);
4256

4357
for (let i = 0; i < 10; i++) {
4458
ITestFluidObject.root.set(`detached-${i}`, i);
@@ -49,15 +63,17 @@ describe("loadFrozenContainerFromPendingState", () => {
4963
ITestFluidObject.root.set(`attached-${i}`, i);
5064
}
5165
const url = await container.getAbsoluteUrl("");
52-
assert(url !== undefined, "url must exist");
66+
assert(
67+
url !== undefined,
68+
"Expected container to provide a valid absolute URL, but got undefined",
69+
);
5370

5471
container.disconnect();
5572
for (let i = 0; i < 10; i++) {
5673
ITestFluidObject.root.set(`disconnected-${i}`, i);
5774
}
5875

59-
const pendingLocalState = await container.getPendingLocalState?.();
60-
assert(pendingLocalState !== undefined, "must have pending state");
76+
const pendingLocalState = await container.getPendingLocalState();
6177

6278
const frozenContainer = await loadFrozenContainerFromPendingState({
6379
codeLoader,
@@ -68,15 +84,28 @@ describe("loadFrozenContainerFromPendingState", () => {
6884
pendingLocalState,
6985
});
7086

71-
assert(frozenContainer.readOnlyInfo.readonly === true, "must be readonly");
72-
assert(frozenContainer.readOnlyInfo.storageOnly === true, "must be readonly");
87+
assert(
88+
frozenContainer.readOnlyInfo.readonly === true,
89+
"Expected frozen container to be in readonly mode, but it was not",
90+
);
91+
assert(
92+
frozenContainer.readOnlyInfo.storageOnly === true,
93+
"Expected frozen container to be storage-only, but it was not",
94+
);
7395

7496
const frozenEntryPoint: FluidObject<TestFluidObject> =
7597
await frozenContainer.getEntryPoint();
76-
assert(frozenEntryPoint.ITestFluidObject !== undefined, "entrypoint must be test object");
98+
assert(
99+
frozenEntryPoint.ITestFluidObject !== undefined,
100+
"Expected frozen container entrypoint to be a valid TestFluidObject, but it was undefined",
101+
);
77102

78-
const frozenEntries = [...frozenEntryPoint.ITestFluidObject.root.entries()];
79-
assert(frozenEntries.length === [...ITestFluidObject.root.entries()].length, "Must match");
103+
const frozenEntries = toComparableArray(frozenEntryPoint.ITestFluidObject.root);
104+
assert.deepEqual(
105+
frozenEntries,
106+
toComparableArray(ITestFluidObject.root),
107+
"Expected frozen container's data to match the original container's state after pending local state was captured.",
108+
);
80109

81110
container.connect();
82111
for (let i = 0; i < 10; i++) {
@@ -86,13 +115,15 @@ describe("loadFrozenContainerFromPendingState", () => {
86115
if (container.isDirty) {
87116
await timeoutPromise((resolve) => container.once("saved", () => resolve()));
88117
}
89-
assert(
90-
frozenEntries.length !== [...ITestFluidObject.root.entries()].length,
91-
"Must not match after new changes",
118+
assert.notDeepEqual(
119+
frozenEntries,
120+
toComparableArray(ITestFluidObject.root),
121+
"Expected frozen container's data to differ from the original container after new changes were made post-pending state.",
92122
);
93-
assert(
94-
frozenEntries.length === [...frozenEntryPoint.ITestFluidObject.root.entries()].length,
95-
"Must match as frozen container shouldn't get any new changes",
123+
assert.deepEqual(
124+
frozenEntries,
125+
toComparableArray(frozenEntryPoint.ITestFluidObject.root),
126+
"Expected frozen container's data to remain unchanged after new changes in the original container.",
96127
);
97128
});
98129
});

0 commit comments

Comments
 (0)