Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 17 additions & 4 deletions src/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -823,11 +823,17 @@

describe('when serializing custom class instances', () => {
it('revives them to their original class', () => {
class Carriage {
constructor(public name: string) {}
}
SuperJSON.registerClass(Carriage);

class Train {
constructor(
private topSpeed: number,
private color: 'red' | 'blue' | 'yellow',
private brand: string
private brand: string,
public carriages: Set<Carriage>,

Check failure on line 836 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (22.x)

Delete `,`

Check failure on line 836 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (18.x)

Delete `,`

Check failure on line 836 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (20.x)

Delete `,`
) {}

public brag() {
Expand All @@ -838,28 +844,35 @@
SuperJSON.registerClass(Train);

const { json, meta } = SuperJSON.serialize({
s7: new Train(100, 'yellow', 'Bombardier') as any,
s7: new Train(100, 'yellow', 'Bombardier', new Set([new Carriage('front'), new Carriage('back')])) as any,

Check failure on line 847 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (22.x)

Replace `100,·'yellow',·'Bombardier',·new·Set([new·Carriage('front'),·new·Carriage('back')])` with `⏎··········100,⏎··········'yellow',⏎··········'Bombardier',⏎··········new·Set([new·Carriage('front'),·new·Carriage('back')])⏎········`

Check failure on line 847 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (18.x)

Replace `100,·'yellow',·'Bombardier',·new·Set([new·Carriage('front'),·new·Carriage('back')])` with `⏎··········100,⏎··········'yellow',⏎··········'Bombardier',⏎··········new·Set([new·Carriage('front'),·new·Carriage('back')])⏎········`

Check failure on line 847 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (20.x)

Replace `100,·'yellow',·'Bombardier',·new·Set([new·Carriage('front'),·new·Carriage('back')])` with `⏎··········100,⏎··········'yellow',⏎··········'Bombardier',⏎··········new·Set([new·Carriage('front'),·new·Carriage('back')])⏎········`
});

Check failure on line 849 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (22.x)

Delete `······`

Check failure on line 849 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (18.x)

Delete `······`

Check failure on line 849 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (20.x)

Delete `······`
expect(json).toEqual({
s7: {
topSpeed: 100,
color: 'yellow',
brand: 'Bombardier',
carriages: [

Check failure on line 855 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (22.x)

Replace `⏎············{·name:·'front'·},⏎············{·name:·'back'·},⏎··········` with `{·name:·'front'·},·{·name:·'back'·}`

Check failure on line 855 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (18.x)

Replace `⏎············{·name:·'front'·},⏎············{·name:·'back'·},⏎··········` with `{·name:·'front'·},·{·name:·'back'·}`

Check failure on line 855 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (20.x)

Replace `⏎············{·name:·'front'·},⏎············{·name:·'back'·},⏎··········` with `{·name:·'front'·},·{·name:·'back'·}`
{ name: 'front' },
{ name: 'back' },
],
},
});

expect(meta).toEqual({
v: 1,
values: {
s7: [['class', 'Train']],
s7: [['class', 'Train'], { carriages: ["set", { 0: [['class', 'Carriage']], 1: [['class', 'Carriage']] }] }],

Check failure on line 865 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (22.x)

Replace `['class',·'Train'],·{·carriages:·["set",·{·0:·[['class',·'Carriage']],·1:·[['class',·'Carriage']]·}]·}` with `⏎············['class',·'Train'],⏎············{⏎··············carriages:·[⏎················'set',⏎················{·0:·[['class',·'Carriage']],·1:·[['class',·'Carriage']]·},⏎··············],⏎············},⏎··········`

Check failure on line 865 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (18.x)

Replace `['class',·'Train'],·{·carriages:·["set",·{·0:·[['class',·'Carriage']],·1:·[['class',·'Carriage']]·}]·}` with `⏎············['class',·'Train'],⏎············{⏎··············carriages:·[⏎················'set',⏎················{·0:·[['class',·'Carriage']],·1:·[['class',·'Carriage']]·},⏎··············],⏎············},⏎··········`

Check failure on line 865 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (20.x)

Replace `['class',·'Train'],·{·carriages:·["set",·{·0:·[['class',·'Carriage']],·1:·[['class',·'Carriage']]·}]·}` with `⏎············['class',·'Train'],⏎············{⏎··············carriages:·[⏎················'set',⏎················{·0:·[['class',·'Carriage']],·1:·[['class',·'Carriage']]·},⏎··············],⏎············},⏎··········`
},
});

const deserialized: any = SuperJSON.deserialize(
JSON.parse(JSON.stringify({ json, meta }))
);
expect(deserialized.s7).toBeInstanceOf(Train);
expect(deserialized.s7.carriages).toBeInstanceOf(Set);
expect([...deserialized.s7.carriages][0]).toBeInstanceOf(Carriage);
expect([...deserialized.s7.carriages][1]).toBeInstanceOf(Carriage);
expect(typeof deserialized.s7.brag()).toBe('string');
});

Expand Down Expand Up @@ -1299,7 +1312,7 @@
test('deserialize in place', () => {
const serialized = SuperJSON.serialize({ a: new Date() });
const deserializedCopy = SuperJSON.deserialize(serialized);
const deserializedInPlace = SuperJSON.deserialize(serialized, { inPlace: true });

Check failure on line 1315 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (22.x)

Replace `·inPlace:·true` with `⏎····inPlace:·true,⏎·`

Check failure on line 1315 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (18.x)

Replace `·inPlace:·true` with `⏎····inPlace:·true,⏎·`

Check failure on line 1315 in src/index.test.ts

View workflow job for this annotation

GitHub Actions / build (20.x)

Replace `·inPlace:·true` with `⏎····inPlace:·true,⏎·`
expect(deserializedInPlace).toBe(serialized.json);
expect(deserializedCopy).not.toBe(serialized.json);
expect(deserializedCopy).toEqual(deserializedInPlace);
Expand Down
Loading