Skip to content

Commit fdccae7

Browse files
committed
assert replacing ArraySchema eliminates previous refId
1 parent 56ea249 commit fdccae7

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

test/ArraySchema.test.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,27 @@ import { ArraySchema, Schema, type, Reflection, $changes } from "../src";
55

66
describe("ArraySchema Tests", () => {
77

8+
it("replacing ArraySchema reference should remove previous decoder reference", () => {
9+
class Player extends Schema {
10+
@type("string") name: string;
11+
}
12+
class State extends Schema {
13+
@type([Player]) players = new ArraySchema<Player>();
14+
}
15+
const state = new State();
16+
17+
const decodedState = createInstanceFromReflection(state);
18+
const referenceTracker = getDecoder(decodedState).root;
19+
20+
decodedState.decode(state.encode());
21+
const playersRefId = state.players[$changes].refId;
22+
assert.ok(referenceTracker.refs.has(playersRefId));
23+
24+
state.players = new ArraySchema();
25+
decodedState.decode(state.encode());
26+
assert.ok(!referenceTracker.refs.has(playersRefId));
27+
});
28+
829
describe("Internals", () => {
930
it("Symbol.species", () => {
1031
assert.strictEqual(ArraySchema[Symbol.species], ArraySchema);
@@ -1952,7 +1973,6 @@ describe("ArraySchema Tests", () => {
19521973

19531974
assertDeepStrictEqualEncodeAll(state);
19541975
});
1955-
19561976
});
19571977

19581978
describe("Edge cases", () => {

0 commit comments

Comments
 (0)