From 9561d11ca622a2533e314e47fd1ce2df779d95fc Mon Sep 17 00:00:00 2001 From: Christian Moll Date: Fri, 8 Dec 2023 18:36:08 +0100 Subject: [PATCH] chore(business-unit): split final types into company and division --- .../business-unit/src/company/builder.spec.ts | 8 +-- models/business-unit/src/company/builder.ts | 6 +- models/business-unit/src/company/generator.ts | 4 +- .../business-unit/src/company/transformers.ts | 15 ++-- .../src/division/builder.spec.ts | 8 +-- models/business-unit/src/division/builder.ts | 6 +- .../business-unit/src/division/generator.ts | 4 +- .../src/division/transformers.ts | 68 +++++++++---------- models/business-unit/src/types.ts | 34 +++++++--- 9 files changed, 82 insertions(+), 71 deletions(-) diff --git a/models/business-unit/src/company/builder.spec.ts b/models/business-unit/src/company/builder.spec.ts index b318f883b..a309846e6 100644 --- a/models/business-unit/src/company/builder.spec.ts +++ b/models/business-unit/src/company/builder.spec.ts @@ -2,12 +2,12 @@ /* eslint-disable jest/valid-title */ import { createBuilderSpec } from '@commercetools-test-data/core/test-utils'; -import type { TBusinessUnit, TBusinessUnitGraphql } from '../types'; +import type { TCompany, TCompanyGraphql } from '../types'; import * as BusinessUnit from './index'; describe('builder', () => { it( - ...createBuilderSpec( + ...createBuilderSpec( 'default', BusinessUnit.random(), expect.objectContaining({ @@ -43,7 +43,7 @@ describe('builder', () => { ); it( - ...createBuilderSpec( + ...createBuilderSpec( 'rest', BusinessUnit.random(), expect.objectContaining({ @@ -79,7 +79,7 @@ describe('builder', () => { ); it( - ...createBuilderSpec( + ...createBuilderSpec( 'graphql', BusinessUnit.random(), expect.objectContaining({ diff --git a/models/business-unit/src/company/builder.ts b/models/business-unit/src/company/builder.ts index ea4fdb744..384b38717 100644 --- a/models/business-unit/src/company/builder.ts +++ b/models/business-unit/src/company/builder.ts @@ -1,10 +1,10 @@ import { Builder } from '@commercetools-test-data/core'; -import type { TCreateBusinessUnitBuilder, TBusinessUnit } from '../types'; +import type { TCreateCompanyBuilder, TCompany } from '../types'; import generator from './generator'; import transformers from './transformers'; -const Model: TCreateBusinessUnitBuilder = () => - Builder({ +const Model: TCreateCompanyBuilder = () => + Builder({ generator, transformers, }); diff --git a/models/business-unit/src/company/generator.ts b/models/business-unit/src/company/generator.ts index 185d6f226..45c2b59d4 100644 --- a/models/business-unit/src/company/generator.ts +++ b/models/business-unit/src/company/generator.ts @@ -11,13 +11,13 @@ import { } from '@commercetools-test-data/core'; import { createRelatedDates } from '@commercetools-test-data/utils'; import { status, storeMode, unitType, associateMode } from '../constants'; -import type { TBusinessUnit } from '../types'; +import type { TCompany } from '../types'; const [getOlderDate, getNewerDate] = createRelatedDates(); // https://docs.commercetools.com/api/projects/business-units#company -const generator = Generator({ +const generator = Generator({ fields: { id: fake((f) => f.string.uuid()), version: sequence(), diff --git a/models/business-unit/src/company/transformers.ts b/models/business-unit/src/company/transformers.ts index 18d888d07..f4526e54a 100644 --- a/models/business-unit/src/company/transformers.ts +++ b/models/business-unit/src/company/transformers.ts @@ -1,22 +1,19 @@ import { KeyReference } from '@commercetools-test-data/commons'; import { Transformer } from '@commercetools-test-data/core'; -import type { TBusinessUnit, TBusinessUnitGraphql } from '../types'; +import type { TCompany, TCompanyGraphql } from '../types'; const transformers = { - default: Transformer('default', { + default: Transformer('default', { buildFields: ['addresses', 'createdBy', 'lastModifiedBy', 'topLevelUnit'], }), - rest: Transformer('rest', { + rest: Transformer('rest', { buildFields: ['addresses', 'createdBy', 'lastModifiedBy', 'topLevelUnit'], }), - graphql: Transformer< - TBusinessUnit | TBusinessUnitGraphql, - TBusinessUnitGraphql - >('graphql', { + graphql: Transformer('graphql', { buildFields: ['addresses', 'createdBy', 'lastModifiedBy'], replaceFields: ({ fields }) => { return { - ...(fields as TBusinessUnit), + ...(fields as TCompany), storesRef: KeyReference.random().typeId('store').buildGraphql(), parentUnitRef: null, topLevelUnitRef: KeyReference.random() @@ -27,7 +24,7 @@ const transformers = { fields.topLevelUnit && 'id' in fields.topLevelUnit ? fields.topLevelUnit : { - ...(fields as TBusinessUnit), + ...(fields as TCompany), __typename: 'BusinessUnit', }, ancestors: diff --git a/models/business-unit/src/division/builder.spec.ts b/models/business-unit/src/division/builder.spec.ts index d30c1c05a..abe0fa06a 100644 --- a/models/business-unit/src/division/builder.spec.ts +++ b/models/business-unit/src/division/builder.spec.ts @@ -2,12 +2,12 @@ /* eslint-disable jest/valid-title */ import { createBuilderSpec } from '@commercetools-test-data/core/test-utils'; -import type { TBusinessUnit, TBusinessUnitGraphql } from '../types'; +import type { TDivision, TDivisionGraphql } from '../types'; import * as BusinessUnit from './index'; describe('builder', () => { it( - ...createBuilderSpec( + ...createBuilderSpec( 'default', BusinessUnit.random(), expect.objectContaining({ @@ -44,7 +44,7 @@ describe('builder', () => { ); it( - ...createBuilderSpec( + ...createBuilderSpec( 'rest', BusinessUnit.random(), expect.objectContaining({ @@ -81,7 +81,7 @@ describe('builder', () => { ); it( - ...createBuilderSpec( + ...createBuilderSpec( 'graphql', BusinessUnit.random(), expect.objectContaining({ diff --git a/models/business-unit/src/division/builder.ts b/models/business-unit/src/division/builder.ts index ea4fdb744..ba32726cb 100644 --- a/models/business-unit/src/division/builder.ts +++ b/models/business-unit/src/division/builder.ts @@ -1,10 +1,10 @@ import { Builder } from '@commercetools-test-data/core'; -import type { TCreateBusinessUnitBuilder, TBusinessUnit } from '../types'; +import type { TCreateDivisionBuilder, TDivision } from '../types'; import generator from './generator'; import transformers from './transformers'; -const Model: TCreateBusinessUnitBuilder = () => - Builder({ +const Model: TCreateDivisionBuilder = () => + Builder({ generator, transformers, }); diff --git a/models/business-unit/src/division/generator.ts b/models/business-unit/src/division/generator.ts index 34cc18749..96dd08ca0 100644 --- a/models/business-unit/src/division/generator.ts +++ b/models/business-unit/src/division/generator.ts @@ -11,13 +11,13 @@ import { } from '@commercetools-test-data/core'; import { createRelatedDates } from '@commercetools-test-data/utils'; import { status, storeMode, unitType, associateMode } from '../constants'; -import type { TBusinessUnit } from '../types'; +import type { TDivision } from '../types'; const [getOlderDate, getNewerDate] = createRelatedDates(); // https://docs.commercetools.com/api/projects/business-units#division -const generator = Generator({ +const generator = Generator({ fields: { id: fake((f) => f.string.uuid()), version: sequence(), diff --git a/models/business-unit/src/division/transformers.ts b/models/business-unit/src/division/transformers.ts index 107129eb9..d4a427f4d 100644 --- a/models/business-unit/src/division/transformers.ts +++ b/models/business-unit/src/division/transformers.ts @@ -1,10 +1,10 @@ import { KeyReference } from '@commercetools-test-data/commons'; import { Transformer } from '@commercetools-test-data/core'; import * as Company from '../company'; -import type { TBusinessUnit, TBusinessUnitGraphql } from '../types'; +import type { TDivision, TDivisionGraphql } from '../types'; const transformers = { - default: Transformer('default', { + default: Transformer('default', { buildFields: [ 'addresses', 'createdBy', @@ -13,7 +13,7 @@ const transformers = { 'topLevelUnit', ], }), - rest: Transformer('rest', { + rest: Transformer('rest', { buildFields: [ 'addresses', 'createdBy', @@ -22,37 +22,37 @@ const transformers = { 'topLevelUnit', ], }), - graphql: Transformer< - TBusinessUnit | TBusinessUnitGraphql, - TBusinessUnitGraphql - >('graphql', { - buildFields: ['addresses', 'createdBy', 'lastModifiedBy'], - replaceFields: ({ fields }) => ({ - ...(fields as TBusinessUnit), - storesRef: KeyReference.random().typeId('store').buildGraphql(), - parentUnitRef: KeyReference.random() - .typeId('business-unit') - .buildGraphql(), - parentUnit: - fields.parentUnit && 'id' in fields.parentUnit - ? fields.parentUnit - : Company.random().buildGraphql(), - topLevelUnitRef: KeyReference.random() - .typeId('business-unit') - .buildGraphql(), - topLevelUnit: - fields.topLevelUnit && 'id' in fields.topLevelUnit - ? fields.topLevelUnit - : Company.random().buildGraphql(), - ancestors: - 'ancestors' in fields && fields.ancestors ? fields.ancestors : [], - inheritedStores: - 'inheritedStores' in fields && fields.inheritedStores - ? fields.inheritedStores - : null, - __typename: 'BusinessUnit', - }), - }), + graphql: Transformer( + 'graphql', + { + buildFields: ['addresses', 'createdBy', 'lastModifiedBy'], + replaceFields: ({ fields }) => ({ + ...(fields as TDivision), + storesRef: KeyReference.random().typeId('store').buildGraphql(), + parentUnitRef: KeyReference.random() + .typeId('business-unit') + .buildGraphql(), + parentUnit: + fields.parentUnit && 'id' in fields.parentUnit + ? fields.parentUnit + : Company.random().buildGraphql(), + topLevelUnitRef: KeyReference.random() + .typeId('business-unit') + .buildGraphql(), + topLevelUnit: + fields.topLevelUnit && 'id' in fields.topLevelUnit + ? fields.topLevelUnit + : Company.random().buildGraphql(), + ancestors: + 'ancestors' in fields && fields.ancestors ? fields.ancestors : [], + inheritedStores: + 'inheritedStores' in fields && fields.inheritedStores + ? fields.inheritedStores + : null, + __typename: 'BusinessUnit', + }), + } + ), }; export default transformers; diff --git a/models/business-unit/src/types.ts b/models/business-unit/src/types.ts index 9f76897b9..72376ef41 100644 --- a/models/business-unit/src/types.ts +++ b/models/business-unit/src/types.ts @@ -1,9 +1,10 @@ import type { - BusinessUnit, BusinessUnitDraft, BusinessUnitKeyReference, KeyReference, Store, + Company, + Division, } from '@commercetools/platform-sdk'; import type { TBuilder } from '@commercetools-test-data/core'; @@ -17,19 +18,32 @@ export type TBusinessUnitDraftGraphql = TBusinessUnitDraft & { }; //BusinessUnit -export type TBusinessUnit = BusinessUnit; -export type TBusinessUnitBuilder = TBuilder; -export type TCreateBusinessUnitBuilder = () => TBusinessUnitBuilder; -export type TBusinessUnitGraphql = Omit< - TBusinessUnit, +export type TCompany = Company; +export type TDivision = Division; +export type TCompanyBuilder = TBuilder; +export type TDivisionBuilder = TBuilder; +export type TCreateCompanyBuilder = () => TCompanyBuilder; +export type TCreateDivisionBuilder = () => TDivisionBuilder; +export type TCompanyGraphql = Omit & { + ancestors: []; + inheritedStores: null; + __typename: 'BusinessUnit'; + storesRef: KeyReference; + parentUnitRef: null; + parentUnit?: BusinessUnitKeyReference; + topLevelUnitRef: BusinessUnitKeyReference; + topLevelUnit: TCompany | TCompanyGraphql; +}; +export type TDivisionGraphql = Omit< + TDivision, 'topLevelUnit' | 'parentUnit' > & { - ancestors: Array; + ancestors: Array; inheritedStores: Array | null; __typename: 'BusinessUnit'; storesRef: KeyReference; - parentUnitRef: BusinessUnitKeyReference | null; - parentUnit?: BusinessUnitKeyReference | undefined; + parentUnitRef: BusinessUnitKeyReference; + parentUnit?: TDivisionGraphql | TCompanyGraphql; topLevelUnitRef: BusinessUnitKeyReference; - topLevelUnit: BusinessUnitKeyReference | TBusinessUnit; + topLevelUnit: TCompanyGraphql; };