Files
insomnia/packages/insomnia-data/common-src/deterministic-stringify.test.ts
xdm 4b121c89f6 refactor(vcs): move vcs to insomnia-vcs (#10427)
refactor(vcs): move vcs to insomnia-vcs

fix: fix comments
2026-08-26 14:37:16 +08:00

48 lines
1.1 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { deterministicStringify } from './deterministic-stringify';
describe('deterministicStringify()', () => {
it('sorts object keys', () => {
const result = deterministicStringify({
c: 'c',
a: 'a',
b: 'b',
});
expect(result).toBe('{"a":"a","b":"b","c":"c"}');
});
it('works recursively', () => {
const result = deterministicStringify({
arr: [
{
b: 'b',
a: 'a',
},
],
obj: {
obj2: {
b: 'b',
a: 'a',
},
},
});
expect(result).toBe('{"arr":[{"a":"a","b":"b"}],"obj":{"obj2":{"a":"a","b":"b"}}}');
});
it('works with strange types', () => {
const sDate = deterministicStringify(new Date(1_541_178_019_555));
expect(sDate).toBe('"2018-11-02T17:00:19.555Z"');
const sNull = deterministicStringify(null);
expect(sNull).toBe('null');
});
it('skips non-json types', () => {
const sFunc = deterministicStringify({
a: [0, () => null],
fn: () => null,
});
expect(sFunc).toBe('{"a":[0]}');
});
});