Skip to content

Commit 5faacde

Browse files
JonghakseoJonghak Seo
and
Jonghak Seo
authored
fix: change the relationshipsToOmit data structure from Array to Set (#109)
convert relationshipToOmit to Set --------- Co-authored-by: Jonghak Seo <[email protected]>
1 parent 3904acd commit 5faacde

File tree

3 files changed

+45
-35
lines changed

3 files changed

+45
-35
lines changed

src/index.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ const getNamedType = (opts: Options<NamedTypeNode>): string | number | boolean =
300300
}
301301
}
302302
if (opts.terminateCircularRelationships) {
303-
return `relationshipsToOmit.includes('${casedName}') ? {} as ${casedName} : ${toMockName(
303+
return `relationshipsToOmit.has('${casedName}') ? {} as ${casedName} : ${toMockName(
304304
name,
305305
casedName,
306306
opts.prefix,
@@ -361,8 +361,9 @@ export const ${toMockName(
361361
typeName,
362362
casedName,
363363
prefix,
364-
)} = (overrides?: Partial<${casedNameWithPrefix}>, _relationshipsToOmit: Array<string> = []): ${typenameReturnType}${casedNameWithPrefix} => {
365-
const relationshipsToOmit = ([..._relationshipsToOmit, '${casedName}']);
364+
)} = (overrides?: Partial<${casedNameWithPrefix}>, _relationshipsToOmit: Set<string> = new Set()): ${typenameReturnType}${casedNameWithPrefix} => {
365+
const relationshipsToOmit: Set<string> = new Set(_relationshipsToOmit);
366+
relationshipsToOmit.add('${casedName}');
366367
return {${typename}
367368
${fields}
368369
};

tests/__snapshots__/typescript-mock-data.spec.ts.snap

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2606,87 +2606,97 @@ export const aQuery = (overrides?: Partial<Query>): Query => {
26062606

26072607
exports[`should use relationshipsToOmit argument to terminate circular relationships with terminateCircularRelationships enabled 1`] = `
26082608
"
2609-
export const anAvatar = (overrides?: Partial<Avatar>, _relationshipsToOmit: Array<string> = []): Avatar => {
2610-
const relationshipsToOmit = ([..._relationshipsToOmit, 'Avatar']);
2609+
export const anAvatar = (overrides?: Partial<Avatar>, _relationshipsToOmit: Set<string> = new Set()): Avatar => {
2610+
const relationshipsToOmit: Set<string> = new Set(_relationshipsToOmit);
2611+
relationshipsToOmit.add('Avatar');
26112612
return {
26122613
id: overrides && overrides.hasOwnProperty('id') ? overrides.id! : '0550ff93-dd31-49b4-8c38-ff1cb68bdc38',
26132614
url: overrides && overrides.hasOwnProperty('url') ? overrides.url! : 'aliquid',
26142615
};
26152616
};
26162617

2617-
export const aUser = (overrides?: Partial<User>, _relationshipsToOmit: Array<string> = []): User => {
2618-
const relationshipsToOmit = ([..._relationshipsToOmit, 'User']);
2618+
export const aUser = (overrides?: Partial<User>, _relationshipsToOmit: Set<string> = new Set()): User => {
2619+
const relationshipsToOmit: Set<string> = new Set(_relationshipsToOmit);
2620+
relationshipsToOmit.add('User');
26192621
return {
26202622
id: overrides && overrides.hasOwnProperty('id') ? overrides.id! : 'a5756f00-41a6-422a-8a7d-d13ee6a63750',
26212623
creationDate: overrides && overrides.hasOwnProperty('creationDate') ? overrides.creationDate! : '1970-01-09T16:33:21.532Z',
26222624
login: overrides && overrides.hasOwnProperty('login') ? overrides.login! : 'libero',
2623-
avatar: overrides && overrides.hasOwnProperty('avatar') ? overrides.avatar! : relationshipsToOmit.includes('Avatar') ? {} as Avatar : anAvatar({}, relationshipsToOmit),
2625+
avatar: overrides && overrides.hasOwnProperty('avatar') ? overrides.avatar! : relationshipsToOmit.has('Avatar') ? {} as Avatar : anAvatar({}, relationshipsToOmit),
26242626
status: overrides && overrides.hasOwnProperty('status') ? overrides.status! : Status.Online,
26252627
customStatus: overrides && overrides.hasOwnProperty('customStatus') ? overrides.customStatus! : AbcStatus.HasXyzStatus,
26262628
scalarValue: overrides && overrides.hasOwnProperty('scalarValue') ? overrides.scalarValue! : 'neque',
2627-
camelCaseThing: overrides && overrides.hasOwnProperty('camelCaseThing') ? overrides.camelCaseThing! : relationshipsToOmit.includes('CamelCaseThing') ? {} as CamelCaseThing : aCamelCaseThing({}, relationshipsToOmit),
2628-
unionThing: overrides && overrides.hasOwnProperty('unionThing') ? overrides.unionThing! : relationshipsToOmit.includes('Avatar') ? {} as Avatar : anAvatar({}, relationshipsToOmit),
2629+
camelCaseThing: overrides && overrides.hasOwnProperty('camelCaseThing') ? overrides.camelCaseThing! : relationshipsToOmit.has('CamelCaseThing') ? {} as CamelCaseThing : aCamelCaseThing({}, relationshipsToOmit),
2630+
unionThing: overrides && overrides.hasOwnProperty('unionThing') ? overrides.unionThing! : relationshipsToOmit.has('Avatar') ? {} as Avatar : anAvatar({}, relationshipsToOmit),
26292631
prefixedEnum: overrides && overrides.hasOwnProperty('prefixedEnum') ? overrides.prefixedEnum! : PrefixedEnum.PrefixedValue,
26302632
};
26312633
};
26322634

2633-
export const aWithAvatar = (overrides?: Partial<WithAvatar>, _relationshipsToOmit: Array<string> = []): WithAvatar => {
2634-
const relationshipsToOmit = ([..._relationshipsToOmit, 'WithAvatar']);
2635+
export const aWithAvatar = (overrides?: Partial<WithAvatar>, _relationshipsToOmit: Set<string> = new Set()): WithAvatar => {
2636+
const relationshipsToOmit: Set<string> = new Set(_relationshipsToOmit);
2637+
relationshipsToOmit.add('WithAvatar');
26352638
return {
26362639
id: overrides && overrides.hasOwnProperty('id') ? overrides.id! : '89f515e7-31e0-461d-a230-c4c7f4dafc5c',
2637-
avatar: overrides && overrides.hasOwnProperty('avatar') ? overrides.avatar! : relationshipsToOmit.includes('Avatar') ? {} as Avatar : anAvatar({}, relationshipsToOmit),
2640+
avatar: overrides && overrides.hasOwnProperty('avatar') ? overrides.avatar! : relationshipsToOmit.has('Avatar') ? {} as Avatar : anAvatar({}, relationshipsToOmit),
26382641
};
26392642
};
26402643

2641-
export const aCamelCaseThing = (overrides?: Partial<CamelCaseThing>, _relationshipsToOmit: Array<string> = []): CamelCaseThing => {
2642-
const relationshipsToOmit = ([..._relationshipsToOmit, 'CamelCaseThing']);
2644+
export const aCamelCaseThing = (overrides?: Partial<CamelCaseThing>, _relationshipsToOmit: Set<string> = new Set()): CamelCaseThing => {
2645+
const relationshipsToOmit: Set<string> = new Set(_relationshipsToOmit);
2646+
relationshipsToOmit.add('CamelCaseThing');
26432647
return {
26442648
id: overrides && overrides.hasOwnProperty('id') ? overrides.id! : '345b9cf9-00fa-4974-800f-aeee5ee7fd42',
26452649
};
26462650
};
26472651

2648-
export const aPrefixedResponse = (overrides?: Partial<PrefixedResponse>, _relationshipsToOmit: Array<string> = []): PrefixedResponse => {
2649-
const relationshipsToOmit = ([..._relationshipsToOmit, 'PrefixedResponse']);
2652+
export const aPrefixedResponse = (overrides?: Partial<PrefixedResponse>, _relationshipsToOmit: Set<string> = new Set()): PrefixedResponse => {
2653+
const relationshipsToOmit: Set<string> = new Set(_relationshipsToOmit);
2654+
relationshipsToOmit.add('PrefixedResponse');
26502655
return {
26512656
ping: overrides && overrides.hasOwnProperty('ping') ? overrides.ping! : 'sunt',
26522657
};
26532658
};
26542659

2655-
export const anAbcType = (overrides?: Partial<AbcType>, _relationshipsToOmit: Array<string> = []): AbcType => {
2656-
const relationshipsToOmit = ([..._relationshipsToOmit, 'AbcType']);
2660+
export const anAbcType = (overrides?: Partial<AbcType>, _relationshipsToOmit: Set<string> = new Set()): AbcType => {
2661+
const relationshipsToOmit: Set<string> = new Set(_relationshipsToOmit);
2662+
relationshipsToOmit.add('AbcType');
26572663
return {
26582664
abc: overrides && overrides.hasOwnProperty('abc') ? overrides.abc! : 'sit',
26592665
};
26602666
};
26612667

2662-
export const aListType = (overrides?: Partial<ListType>, _relationshipsToOmit: Array<string> = []): ListType => {
2663-
const relationshipsToOmit = ([..._relationshipsToOmit, 'ListType']);
2668+
export const aListType = (overrides?: Partial<ListType>, _relationshipsToOmit: Set<string> = new Set()): ListType => {
2669+
const relationshipsToOmit: Set<string> = new Set(_relationshipsToOmit);
2670+
relationshipsToOmit.add('ListType');
26642671
return {
26652672
stringList: overrides && overrides.hasOwnProperty('stringList') ? overrides.stringList! : ['voluptatem'],
26662673
};
26672674
};
26682675

2669-
export const anUpdateUserInput = (overrides?: Partial<UpdateUserInput>, _relationshipsToOmit: Array<string> = []): UpdateUserInput => {
2670-
const relationshipsToOmit = ([..._relationshipsToOmit, 'UpdateUserInput']);
2676+
export const anUpdateUserInput = (overrides?: Partial<UpdateUserInput>, _relationshipsToOmit: Set<string> = new Set()): UpdateUserInput => {
2677+
const relationshipsToOmit: Set<string> = new Set(_relationshipsToOmit);
2678+
relationshipsToOmit.add('UpdateUserInput');
26712679
return {
26722680
id: overrides && overrides.hasOwnProperty('id') ? overrides.id! : '1d6a9360-c92b-4660-8e5f-04155047bddc',
26732681
login: overrides && overrides.hasOwnProperty('login') ? overrides.login! : 'qui',
2674-
avatar: overrides && overrides.hasOwnProperty('avatar') ? overrides.avatar! : relationshipsToOmit.includes('Avatar') ? {} as Avatar : anAvatar({}, relationshipsToOmit),
2682+
avatar: overrides && overrides.hasOwnProperty('avatar') ? overrides.avatar! : relationshipsToOmit.has('Avatar') ? {} as Avatar : anAvatar({}, relationshipsToOmit),
26752683
};
26762684
};
26772685

2678-
export const aMutation = (overrides?: Partial<Mutation>, _relationshipsToOmit: Array<string> = []): Mutation => {
2679-
const relationshipsToOmit = ([..._relationshipsToOmit, 'Mutation']);
2686+
export const aMutation = (overrides?: Partial<Mutation>, _relationshipsToOmit: Set<string> = new Set()): Mutation => {
2687+
const relationshipsToOmit: Set<string> = new Set(_relationshipsToOmit);
2688+
relationshipsToOmit.add('Mutation');
26802689
return {
2681-
updateUser: overrides && overrides.hasOwnProperty('updateUser') ? overrides.updateUser! : relationshipsToOmit.includes('User') ? {} as User : aUser({}, relationshipsToOmit),
2690+
updateUser: overrides && overrides.hasOwnProperty('updateUser') ? overrides.updateUser! : relationshipsToOmit.has('User') ? {} as User : aUser({}, relationshipsToOmit),
26822691
};
26832692
};
26842693

2685-
export const aQuery = (overrides?: Partial<Query>, _relationshipsToOmit: Array<string> = []): Query => {
2686-
const relationshipsToOmit = ([..._relationshipsToOmit, 'Query']);
2694+
export const aQuery = (overrides?: Partial<Query>, _relationshipsToOmit: Set<string> = new Set()): Query => {
2695+
const relationshipsToOmit: Set<string> = new Set(_relationshipsToOmit);
2696+
relationshipsToOmit.add('Query');
26872697
return {
2688-
user: overrides && overrides.hasOwnProperty('user') ? overrides.user! : relationshipsToOmit.includes('User') ? {} as User : aUser({}, relationshipsToOmit),
2689-
prefixed_query: overrides && overrides.hasOwnProperty('prefixed_query') ? overrides.prefixed_query! : relationshipsToOmit.includes('PrefixedResponse') ? {} as PrefixedResponse : aPrefixedResponse({}, relationshipsToOmit),
2698+
user: overrides && overrides.hasOwnProperty('user') ? overrides.user! : relationshipsToOmit.has('User') ? {} as User : aUser({}, relationshipsToOmit),
2699+
prefixed_query: overrides && overrides.hasOwnProperty('prefixed_query') ? overrides.prefixed_query! : relationshipsToOmit.has('PrefixedResponse') ? {} as PrefixedResponse : aPrefixedResponse({}, relationshipsToOmit),
26902700
};
26912701
};
26922702
"

tests/typescript-mock-data.spec.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -384,10 +384,9 @@ it('should use relationshipsToOmit argument to terminate circular relationships
384384
const result = await plugin(testSchema, [], { terminateCircularRelationships: true });
385385

386386
expect(result).toBeDefined();
387-
expect(result).toMatch(/const relationshipsToOmit = \(\[..._relationshipsToOmit, 'User']\)/);
388-
expect(result).toMatch(
389-
/relationshipsToOmit.includes\('Avatar'\) \? {} as Avatar : anAvatar\({}, relationshipsToOmit\)/,
390-
);
387+
expect(result).toMatch(/const relationshipsToOmit: Set<string> = new Set\(_relationshipsToOmit\);/);
388+
expect(result).toMatch(/relationshipsToOmit.add\('Avatar'\)/);
389+
expect(result).toMatch(/relationshipsToOmit.has\('Avatar'\) \? {} as Avatar : anAvatar\({}, relationshipsToOmit\)/);
391390
expect(result).not.toMatch(/: anAvatar\(\)/);
392391
expect(result).toMatchSnapshot();
393392
});

0 commit comments

Comments
 (0)