diff --git a/test/__snapshots__/datatype.spec.ts.snap b/test/__snapshots__/datatype.spec.ts.snap new file mode 100644 index 00000000000..78bed37ab2b --- /dev/null +++ b/test/__snapshots__/datatype.spec.ts.snap @@ -0,0 +1,277 @@ +// Vitest Snapshot v1 + +exports[`datatype > seed: 42 > array > should return a deterministic array of given length 1`] = ` +[ + 79654, + "2eiXX/J/*&", + 86617, + 60111, +] +`; + +exports[`datatype > seed: 42 > array() 1`] = ` +[ + 79654, + "2eiXX/J/*&", + 86617, + 60111, + 70807, + "\\"&{dnx4!1}", + 61748, + 61165, + "!I# seed: 42 > bigInt > should return a deterministic bigInt of given value 1`] = `42n`; + +exports[`datatype > seed: 42 > bigInt() 1`] = `3745409999962546n`; + +exports[`datatype > seed: 42 > boolean() 1`] = `false`; + +exports[`datatype > seed: 42 > datetime > should return a deterministic date when given a max date 1`] = `1994-07-11T09:43:47.230Z`; + +exports[`datatype > seed: 42 > datetime > should return a deterministic date when given a min and max date 1`] = `1689-09-09T08:39:09.444Z`; + +exports[`datatype > seed: 42 > datetime > should return a deterministic date when given a min date 1`] = `1801-04-11T15:13:06.330Z`; + +exports[`datatype > seed: 42 > datetime > should return a deterministic date when given a number 1`] = `1994-03-20T17:23:00.629Z`; + +exports[`datatype > seed: 42 > datetime() 1`] = `2031-03-14T21:33:22.114Z`; + +exports[`datatype > seed: 42 > float > should return a deterministic value for given max 1`] = `25.84`; + +exports[`datatype > seed: 42 > float > should return a deterministic value for given min 1`] = `37411.64`; + +exports[`datatype > seed: 42 > float > should return a deterministic value for given min and max 1`] = `-0.43`; + +exports[`datatype > seed: 42 > float > should return a deterministic value for given min, max and precision 1`] = `-0.4261`; + +exports[`datatype > seed: 42 > float > should return a deterministic value for given number 1`] = `37452`; + +exports[`datatype > seed: 42 > float > should return a deterministic value for given number 2`] = `79656`; + +exports[`datatype > seed: 42 > float > should return a deterministic value for given number 3`] = `95076`; + +exports[`datatype > seed: 42 > float > should return a deterministic value for given number 4`] = `18342`; + +exports[`datatype > seed: 42 > float > should return a deterministic value for given number 5`] = `73200`; + +exports[`datatype > seed: 42 > float() 1`] = `37453.64`; + +exports[`datatype > seed: 42 > hexadecimal > should return a deterministic hex of given length 1`] = `"0x8BE4ABdd39321aD7d3fe01FfCE404F4d6db0906bd8"`; + +exports[`datatype > seed: 42 > hexadecimal() 1`] = `"0x8"`; + +exports[`datatype > seed: 42 > json() 1`] = `"{\\"foo\\":79654,\\"bar\\":\\"2eiXX/J/*&\\",\\"bike\\":86617,\\"a\\":60111,\\"b\\":70807,\\"name\\":\\"\\\\\\"&{dnx4!1}\\",\\"prop\\":61748}"`; + +exports[`datatype > seed: 42 > number > should return a deterministic value for given max 1`] = `26`; + +exports[`datatype > seed: 42 > number > should return a deterministic value for given min 1`] = `37412`; + +exports[`datatype > seed: 42 > number > should return a deterministic value for given min and max 1`] = `-1`; + +exports[`datatype > seed: 42 > number > should return a deterministic value for given min, max and precision 1`] = `-0.43`; + +exports[`datatype > seed: 42 > number > should return a deterministic value for given number 1`] = `2`; + +exports[`datatype > seed: 42 > number > should return a deterministic value for given number 2`] = `5`; + +exports[`datatype > seed: 42 > number > should return a deterministic value for given number 3`] = `6`; + +exports[`datatype > seed: 42 > number > should return a deterministic value for given number 4`] = `1`; + +exports[`datatype > seed: 42 > number > should return a deterministic value for given number 5`] = `5`; + +exports[`datatype > seed: 42 > number() 1`] = `37454`; + +exports[`datatype > seed: 42 > string > should return a deterministic string of given length 1`] = `"Cky2eiXX/J/*&Kq@X.b]\\"&{dnx4!1}2Z=YQ!I# seed: 42 > string() 1`] = `"Cky2eiXX/J"`; + +exports[`datatype > seed: 42 > uuid() 1`] = `"5cf2bc99-2721-407d-992b-a00fbdf302f2"`; + +exports[`datatype > seed: 1211 > array > should return a deterministic array of given length 1`] = ` +[ + "Kti5-}$_/\`", + 76408, + 35403, + 69406, +] +`; + +exports[`datatype > seed: 1211 > array() 1`] = ` +[ + "Kti5-}$_/\`", + 76408, + 35403, + 69406, + "l\\"h^]dnwI<", + "|p|5KWu3/C", + "|Jh!E=x\\"RH", + "/5V<1bEQuA", + "p=DW9F=V1(", + "7a6.$boN\\\\7", +] +`; + +exports[`datatype > seed: 1211 > bigInt > should return a deterministic bigInt of given value 1`] = `42n`; + +exports[`datatype > seed: 1211 > bigInt() 1`] = `9285209999907148n`; + +exports[`datatype > seed: 1211 > boolean() 1`] = `true`; + +exports[`datatype > seed: 1211 > datetime > should return a deterministic date when given a max date 1`] = `2001-03-20T11:14:25.251Z`; + +exports[`datatype > seed: 1211 > datetime > should return a deterministic date when given a min and max date 1`] = `1789-03-26T15:44:45.219Z`; + +exports[`datatype > seed: 1211 > datetime > should return a deterministic date when given a min date 1`] = `2065-11-10T19:27:20.915Z`; + +exports[`datatype > seed: 1211 > datetime > should return a deterministic date when given a number 1`] = `2000-06-14T02:54:42.082Z`; + +exports[`datatype > seed: 1211 > datetime() 1`] = `2092-02-20T03:42:04.341Z`; + +exports[`datatype > seed: 1211 > float > should return a deterministic value for given max 1`] = `64.07`; + +exports[`datatype > seed: 1211 > float > should return a deterministic value for given min 1`] = `92809.09`; + +exports[`datatype > seed: 1211 > float > should return a deterministic value for given min and max 1`] = `61.07`; + +exports[`datatype > seed: 1211 > float > should return a deterministic value for given min, max and precision 1`] = `61.0658`; + +exports[`datatype > seed: 1211 > float > should return a deterministic value for given number 1`] = `92856`; + +exports[`datatype > seed: 1211 > float > should return a deterministic value for given number 2`] = `45900`; + +exports[`datatype > seed: 1211 > float > should return a deterministic value for given number 3`] = `89346`; + +exports[`datatype > seed: 1211 > float > should return a deterministic value for given number 4`] = `77826`; + +exports[`datatype > seed: 1211 > float > should return a deterministic value for given number 5`] = `22554`; + +exports[`datatype > seed: 1211 > float() 1`] = `92851.09`; + +exports[`datatype > seed: 1211 > hexadecimal > should return a deterministic hex of given length 1`] = `"0xEaDB42F0e3f4A973fAB0AeefCE96DFCF49cD438dF9"`; + +exports[`datatype > seed: 1211 > hexadecimal() 1`] = `"0xE"`; + +exports[`datatype > seed: 1211 > json() 1`] = `"{\\"foo\\":\\"Kti5-}$_/\`\\",\\"bar\\":76408,\\"bike\\":35403,\\"a\\":69406,\\"b\\":\\"l\\\\\\"h^]dnwI<\\",\\"name\\":\\"|p|5KWu3/C\\",\\"prop\\":\\"|Jh!E=x\\\\\\"RH\\"}"`; + +exports[`datatype > seed: 1211 > number > should return a deterministic value for given max 1`] = `64`; + +exports[`datatype > seed: 1211 > number > should return a deterministic value for given min 1`] = `92810`; + +exports[`datatype > seed: 1211 > number > should return a deterministic value for given min and max 1`] = `61`; + +exports[`datatype > seed: 1211 > number > should return a deterministic value for given min, max and precision 1`] = `61.07`; + +exports[`datatype > seed: 1211 > number > should return a deterministic value for given number 1`] = `6`; + +exports[`datatype > seed: 1211 > number > should return a deterministic value for given number 2`] = `3`; + +exports[`datatype > seed: 1211 > number > should return a deterministic value for given number 3`] = `6`; + +exports[`datatype > seed: 1211 > number > should return a deterministic value for given number 4`] = `5`; + +exports[`datatype > seed: 1211 > number > should return a deterministic value for given number 5`] = `1`; + +exports[`datatype > seed: 1211 > number() 1`] = `92852`; + +exports[`datatype > seed: 1211 > string > should return a deterministic string of given length 1`] = `"wKti5-}$_/\`4hHA0afl\\"h^]dnwI seed: 1211 > string() 1`] = `"wKti5-}$_/"`; + +exports[`datatype > seed: 1211 > uuid() 1`] = `"e7ec32f0-a2a3-4c65-abbd-0caabde64dfd"`; + +exports[`datatype > seed: 1337 > array > should return a deterministic array of given length 1`] = ` +[ + 56052, + 21258, + 54308, + 3397, +] +`; + +exports[`datatype > seed: 1337 > array() 1`] = ` +[ + 56052, + 21258, + 54308, + 3397, + 23538, + "X9@{:e=+kD", + 62850, + 12505, + "|/Jqjjj!BL", + 38106, +] +`; + +exports[`datatype > seed: 1337 > bigInt > should return a deterministic bigInt of given value 1`] = `42n`; + +exports[`datatype > seed: 1337 > bigInt() 1`] = `2620209999973798n`; + +exports[`datatype > seed: 1337 > boolean() 1`] = `false`; + +exports[`datatype > seed: 1337 > datetime > should return a deterministic date when given a max date 1`] = `1993-03-02T00:10:04.335Z`; + +exports[`datatype > seed: 1337 > datetime > should return a deterministic date when given a min and max date 1`] = `1669-06-22T01:21:21.236Z`; + +exports[`datatype > seed: 1337 > datetime > should return a deterministic date when given a min date 1`] = `1747-07-16T01:19:54.159Z`; + +exports[`datatype > seed: 1337 > datetime > should return a deterministic date when given a number 1`] = `1992-12-13T04:13:59.232Z`; + +exports[`datatype > seed: 1337 > datetime() 1`] = `2018-10-28T08:46:11.896Z`; + +exports[`datatype > seed: 1337 > float > should return a deterministic value for given max 1`] = `18.08`; + +exports[`datatype > seed: 1337 > float > should return a deterministic value for given min 1`] = `26160.2`; + +exports[`datatype > seed: 1337 > float > should return a deterministic value for given min and max 1`] = `-12.92`; + +exports[`datatype > seed: 1337 > float > should return a deterministic value for given min, max and precision 1`] = `-12.9153`; + +exports[`datatype > seed: 1337 > float > should return a deterministic value for given number 1`] = `26202`; + +exports[`datatype > seed: 1337 > float > should return a deterministic value for given number 2`] = `56052`; + +exports[`datatype > seed: 1337 > float > should return a deterministic value for given number 3`] = `15864`; + +exports[`datatype > seed: 1337 > float > should return a deterministic value for given number 4`] = `21258`; + +exports[`datatype > seed: 1337 > float > should return a deterministic value for given number 5`] = `27810`; + +exports[`datatype > seed: 1337 > float() 1`] = `26202.2`; + +exports[`datatype > seed: 1337 > hexadecimal > should return a deterministic hex of given length 1`] = `"0x5c346ba075bd57F5A62B82d72AF39CBBB07a98cbA8"`; + +exports[`datatype > seed: 1337 > hexadecimal() 1`] = `"0x5"`; + +exports[`datatype > seed: 1337 > json() 1`] = `"{\\"foo\\":56052,\\"bar\\":21258,\\"bike\\":54308,\\"a\\":3397,\\"b\\":23538,\\"name\\":\\"X9@{:e=+kD\\",\\"prop\\":62850}"`; + +exports[`datatype > seed: 1337 > number > should return a deterministic value for given max 1`] = `18`; + +exports[`datatype > seed: 1337 > number > should return a deterministic value for given min 1`] = `26160`; + +exports[`datatype > seed: 1337 > number > should return a deterministic value for given min and max 1`] = `-13`; + +exports[`datatype > seed: 1337 > number > should return a deterministic value for given min, max and precision 1`] = `-12.92`; + +exports[`datatype > seed: 1337 > number > should return a deterministic value for given number 1`] = `1`; + +exports[`datatype > seed: 1337 > number > should return a deterministic value for given number 2`] = `3`; + +exports[`datatype > seed: 1337 > number > should return a deterministic value for given number 3`] = `1`; + +exports[`datatype > seed: 1337 > number > should return a deterministic value for given number 4`] = `1`; + +exports[`datatype > seed: 1337 > number > should return a deterministic value for given number 5`] = `1`; + +exports[`datatype > seed: 1337 > number() 1`] = `26202`; + +exports[`datatype > seed: 1337 > string > should return a deterministic string of given length 1`] = `"9U/4:SK$>6QX9@{:e=+kD)[B,e|/Jqjjj!BLGDWQgC"`; + +exports[`datatype > seed: 1337 > string() 1`] = `"9U/4:SK$>6"`; + +exports[`datatype > seed: 1337 > uuid() 1`] = `"48234870-5389-445f-8b41-c61a52bf27dc"`; diff --git a/test/datatype.spec.ts b/test/datatype.spec.ts index d6034dc7d34..68f3f16313a 100644 --- a/test/datatype.spec.ts +++ b/test/datatype.spec.ts @@ -1,224 +1,6 @@ import { describe, expect, it, vi } from 'vitest'; import { faker } from '../src'; - -const seededRuns = [ - { - seed: 42, - expectations: { - number: { - noArgs: 37454, - numbers: [2, 5, 6, 1, 5], - withMin: 37412, - withMinAndMax: -1, - withMax: 26, - withMinAndMaxAndPrecision: -0.43, - }, - float: { - noArgs: 37453.64, - numbers: [37452, 79656, 95076, 18342, 73200], - withMin: 37411.64, - withMinAndMax: -0.43, - withMax: 25.84, - withMinAndMaxAndPrecision: -0.4261, - }, - datetime: { - noArgs: new Date('2031-03-14T21:33:22.114Z'), - number: new Date('1994-03-20T17:23:00.629Z'), - withMin: new Date('1801-04-11T15:13:06.330Z'), - withMax: new Date('1994-07-11T09:43:47.230Z'), - withMinMax: new Date('1689-09-09T08:39:09.444Z'), - }, - string: { - noArgs: 'Cky2eiXX/J', - length: 'Cky2eiXX/J/*&Kq@X.b]"&{dnx4!1}2Z=YQ!I#6', - length: '9U/4:SK$>6QX9@{:e=+kD)[B,e|/Jqjjj!BLGDWQgC', - }, - uuid: { - noArgs: '48234870-5389-445f-8b41-c61a52bf27dc', - }, - boolean: { - noArgs: false, - }, - hexadecimal: { - noArgs: '0x5', - length: '0x5c346ba075bd57F5A62B82d72AF39CBBB07a98cbA8', - }, - json: { - noArgs: JSON.stringify({ - foo: 56052, - bar: 21258, - bike: 54308, - a: 3397, - b: 23538, - name: 'X9@{:e=+kD', - prop: 62850, - }), - }, - array: { - noArgs: [ - 56052, - 21258, - 54308, - 3397, - 23538, - 'X9@{:e=+kD', - 62850, - 12505, - '|/Jqjjj!BL', - 38106, - ], - length: [56052, 21258, 54308, 3397], - }, - bigInt: { - noArgs: 2620209999973798n, - value: 42n, - }, - }, - }, - { - seed: 1211, - expectations: { - number: { - noArgs: 92852, - numbers: [6, 3, 6, 5, 1], - withMin: 92810, - withMinAndMax: 61, - withMax: 64, - withMinAndMaxAndPrecision: 61.07, - }, - float: { - noArgs: 92851.09, - numbers: [92856, 45900, 89346, 77826, 22554], - withMin: 92809.09, - withMinAndMax: 61.07, - withMax: 64.07, - withMinAndMaxAndPrecision: 61.0658, - }, - datetime: { - noArgs: new Date('2092-02-20T03:42:04.341Z'), - number: new Date('2000-06-14T02:54:42.082Z'), - withMin: new Date('2065-11-10T19:27:20.915Z'), - withMax: new Date('2001-03-20T11:14:25.251Z'), - withMinMax: new Date('1789-03-26T15:44:45.219Z'), - }, - string: { - noArgs: 'wKti5-}$_/', - length: 'wKti5-}$_/`4hHA0afl"h^]dnwI { - for (const { seed, expectations } of seededRuns) { + for (const seed of seededRuns) { describe(`seed: ${seed}`, () => { for (const functionName of functionNames) { it(`${functionName}()`, () => { faker.seed(seed); const actual = faker.datatype[functionName](); - expect(actual).toEqual(expectations[functionName].noArgs); + expect(actual).toMatchSnapshot(); }); } @@ -251,9 +33,9 @@ describe('datatype', () => { it('should return a deterministic value for given number', () => { faker.seed(seed); - for (const num of expectations.number.numbers) { + for (let i = 0; i < 5; i++) { const actual = faker.datatype.number(6); - expect(actual).toEqual(num); + expect(actual).toMatchSnapshot(); } }); @@ -261,21 +43,21 @@ describe('datatype', () => { faker.seed(seed); const actual = faker.datatype.number({ min: -42 }); - expect(actual).toEqual(expectations.number.withMin); + expect(actual).toMatchSnapshot(); }); it('should return a deterministic value for given min and max', () => { faker.seed(seed); const actual = faker.datatype.number({ min: -42, max: 69 }); - expect(actual).toEqual(expectations.number.withMinAndMax); + expect(actual).toMatchSnapshot(); }); it('should return a deterministic value for given max', () => { faker.seed(seed); const actual = faker.datatype.number({ max: 69 }); - expect(actual).toEqual(expectations.number.withMax); + expect(actual).toMatchSnapshot(); }); it('should return a deterministic value for given min, max and precision', () => { @@ -286,7 +68,7 @@ describe('datatype', () => { max: 69, precision: 0.01, }); - expect(actual).toEqual(expectations.number.withMinAndMaxAndPrecision); + expect(actual).toMatchSnapshot(); }); it('should throw when min > max', () => { @@ -305,9 +87,9 @@ describe('datatype', () => { it('should return a deterministic value for given number', () => { faker.seed(seed); - for (const num of expectations.float.numbers) { + for (let i = 0; i < 5; i++) { const actual = faker.datatype.float(6); - expect(actual).toEqual(num); + expect(actual).toMatchSnapshot(); } }); @@ -315,21 +97,21 @@ describe('datatype', () => { faker.seed(seed); const actual = faker.datatype.float({ min: -42 }); - expect(actual).toEqual(expectations.float.withMin); + expect(actual).toMatchSnapshot(); }); it('should return a deterministic value for given min and max', () => { faker.seed(seed); const actual = faker.datatype.float({ min: -42, max: 69 }); - expect(actual).toEqual(expectations.float.withMinAndMax); + expect(actual).toMatchSnapshot(); }); it('should return a deterministic value for given max', () => { faker.seed(seed); const actual = faker.datatype.float({ max: 69 }); - expect(actual).toEqual(expectations.float.withMax); + expect(actual).toMatchSnapshot(); }); it('should return a deterministic value for given min, max and precision', () => { @@ -340,7 +122,7 @@ describe('datatype', () => { max: 69, precision: 0.0001, }); - expect(actual).toEqual(expectations.float.withMinAndMaxAndPrecision); + expect(actual).toMatchSnapshot(); }); }); @@ -351,7 +133,7 @@ describe('datatype', () => { const actual = faker.datatype.datetime( Date.parse('2001-04-03T23:21:10.773Z') ); - expect(actual).toEqual(expectations.datetime.number); + expect(actual).toMatchSnapshot(); }); it('should return a deterministic date when given a min date', () => { @@ -360,7 +142,7 @@ describe('datatype', () => { const actual = faker.datatype.datetime({ min: Date.parse('1622-05-23T13:45:08.843Z'), }); - expect(actual).toEqual(expectations.datetime.withMin); + expect(actual).toMatchSnapshot(); }); it('should return a deterministic date when given a max date', () => { @@ -369,7 +151,7 @@ describe('datatype', () => { const actual = faker.datatype.datetime({ max: Date.parse('2002-01-29T19:47:52.605Z'), }); - expect(actual).toEqual(expectations.datetime.withMax); + expect(actual).toMatchSnapshot(); }); it('should return a deterministic date when given a min and max date', () => { @@ -379,7 +161,7 @@ describe('datatype', () => { min: Date.parse('1622-05-23T13:45:08.843Z'), max: Date.parse('1802-01-29T19:47:52.605Z'), }); - expect(actual).toEqual(expectations.datetime.withMinMax); + expect(actual).toMatchSnapshot(); }); }); @@ -388,7 +170,7 @@ describe('datatype', () => { faker.seed(seed); const actual = faker.datatype.string(42); - expect(actual).toEqual(expectations.string.length); + expect(actual).toMatchSnapshot(); }); }); @@ -397,7 +179,7 @@ describe('datatype', () => { faker.seed(seed); const actual = faker.datatype.hexadecimal(42); - expect(actual).toEqual(expectations.hexadecimal.length); + expect(actual).toMatchSnapshot(); }); }); @@ -406,7 +188,7 @@ describe('datatype', () => { faker.seed(seed); const actual = faker.datatype.array(4); - expect(actual).toEqual(expectations.array.length); + expect(actual).toMatchSnapshot(); }); }); @@ -415,7 +197,7 @@ describe('datatype', () => { faker.seed(seed); const actual = faker.datatype.bigInt(42); - expect(actual).toEqual(expectations.bigInt.value); + expect(actual).toMatchSnapshot(); }); }); }); diff --git a/test/support/seededRuns.ts b/test/support/seededRuns.ts new file mode 100644 index 00000000000..6e6539b78a2 --- /dev/null +++ b/test/support/seededRuns.ts @@ -0,0 +1 @@ +export const seededRuns = [42, 1337, 1211];