Skip to content

Commit

Permalink
chore(business-unit): split final types into company and division
Browse files Browse the repository at this point in the history
  • Loading branch information
ChristianMoll committed Dec 8, 2023
1 parent 0fa2f8b commit 6d70521
Show file tree
Hide file tree
Showing 9 changed files with 82 additions and 71 deletions.
8 changes: 4 additions & 4 deletions models/business-unit/src/company/builder.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<TBusinessUnit, TBusinessUnit>(
...createBuilderSpec<TCompany, TCompany>(
'default',
BusinessUnit.random(),
expect.objectContaining({
Expand Down Expand Up @@ -43,7 +43,7 @@ describe('builder', () => {
);

it(
...createBuilderSpec<TBusinessUnit, TBusinessUnit>(
...createBuilderSpec<TCompany, TCompany>(
'rest',
BusinessUnit.random(),
expect.objectContaining({
Expand Down Expand Up @@ -79,7 +79,7 @@ describe('builder', () => {
);

it(
...createBuilderSpec<TBusinessUnit, TBusinessUnitGraphql>(
...createBuilderSpec<TCompany, TCompanyGraphql>(
'graphql',
BusinessUnit.random(),
expect.objectContaining({
Expand Down
6 changes: 3 additions & 3 deletions models/business-unit/src/company/builder.ts
Original file line number Diff line number Diff line change
@@ -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<TBusinessUnit>({
const Model: TCreateCompanyBuilder = () =>
Builder<TCompany>({
generator,
transformers,
});
Expand Down
4 changes: 2 additions & 2 deletions models/business-unit/src/company/generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<TBusinessUnit>({
const generator = Generator<TCompany>({
fields: {
id: fake((f) => f.string.uuid()),
version: sequence(),
Expand Down
15 changes: 6 additions & 9 deletions models/business-unit/src/company/transformers.ts
Original file line number Diff line number Diff line change
@@ -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<TBusinessUnit, TBusinessUnit>('default', {
default: Transformer<TCompany, TCompany>('default', {
buildFields: ['addresses', 'createdBy', 'lastModifiedBy', 'topLevelUnit'],
}),
rest: Transformer<TBusinessUnit, TBusinessUnit>('rest', {
rest: Transformer<TCompany, TCompany>('rest', {
buildFields: ['addresses', 'createdBy', 'lastModifiedBy', 'topLevelUnit'],
}),
graphql: Transformer<
TBusinessUnit | TBusinessUnitGraphql,
TBusinessUnitGraphql
>('graphql', {
graphql: Transformer<TCompany | TCompanyGraphql, TCompanyGraphql>('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()
Expand All @@ -27,7 +24,7 @@ const transformers = {
fields.topLevelUnit && 'id' in fields.topLevelUnit
? fields.topLevelUnit
: {
...(fields as TBusinessUnit),
...(fields as TCompany),
__typename: 'BusinessUnit',
},
ancestors:
Expand Down
8 changes: 4 additions & 4 deletions models/business-unit/src/division/builder.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<TBusinessUnit, TBusinessUnit>(
...createBuilderSpec<TDivision, TDivision>(
'default',
BusinessUnit.random(),
expect.objectContaining({
Expand Down Expand Up @@ -44,7 +44,7 @@ describe('builder', () => {
);

it(
...createBuilderSpec<TBusinessUnit, TBusinessUnit>(
...createBuilderSpec<TDivision, TDivision>(
'rest',
BusinessUnit.random(),
expect.objectContaining({
Expand Down Expand Up @@ -81,7 +81,7 @@ describe('builder', () => {
);

it(
...createBuilderSpec<TBusinessUnit, TBusinessUnitGraphql>(
...createBuilderSpec<TDivision, TDivisionGraphql>(
'graphql',
BusinessUnit.random(),
expect.objectContaining({
Expand Down
6 changes: 3 additions & 3 deletions models/business-unit/src/division/builder.ts
Original file line number Diff line number Diff line change
@@ -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<TBusinessUnit>({
const Model: TCreateDivisionBuilder = () =>
Builder<TDivision>({
generator,
transformers,
});
Expand Down
4 changes: 2 additions & 2 deletions models/business-unit/src/division/generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<TBusinessUnit>({
const generator = Generator<TDivision>({
fields: {
id: fake((f) => f.string.uuid()),
version: sequence(),
Expand Down
68 changes: 34 additions & 34 deletions models/business-unit/src/division/transformers.ts
Original file line number Diff line number Diff line change
@@ -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<TBusinessUnit, TBusinessUnit>('default', {
default: Transformer<TDivision, TDivisionGraphql>('default', {
buildFields: [
'addresses',
'createdBy',
Expand All @@ -13,7 +13,7 @@ const transformers = {
'topLevelUnit',
],
}),
rest: Transformer<TBusinessUnit, TBusinessUnit>('rest', {
rest: Transformer<TDivision, TDivisionGraphql>('rest', {
buildFields: [
'addresses',
'createdBy',
Expand All @@ -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<TDivision | TDivisionGraphql, TDivisionGraphql>(
'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;
34 changes: 24 additions & 10 deletions models/business-unit/src/types.ts
Original file line number Diff line number Diff line change
@@ -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';

Expand All @@ -17,19 +18,32 @@ export type TBusinessUnitDraftGraphql = TBusinessUnitDraft & {
};

//BusinessUnit
export type TBusinessUnit = BusinessUnit;
export type TBusinessUnitBuilder = TBuilder<TBusinessUnit>;
export type TCreateBusinessUnitBuilder = () => TBusinessUnitBuilder;
export type TBusinessUnitGraphql = Omit<
TBusinessUnit,
export type TCompany = Company;
export type TDivision = Division;
export type TCompanyBuilder = TBuilder<TCompany>;
export type TDivisionBuilder = TBuilder<TDivision>;
export type TCreateCompanyBuilder = () => TCompanyBuilder;
export type TCreateDivisionBuilder = () => TDivisionBuilder;
export type TCompanyGraphql = Omit<TCompany, 'topLevelUnit' | 'parentUnit'> & {
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<TBusinessUnitGraphql>;
ancestors: Array<TCompanyGraphql | TDivisionGraphql>;
inheritedStores: Array<Store> | null;
__typename: 'BusinessUnit';
storesRef: KeyReference;
parentUnitRef: BusinessUnitKeyReference | null;
parentUnit?: BusinessUnitKeyReference | undefined;
parentUnitRef: BusinessUnitKeyReference;
parentUnit?: TDivisionGraphql | TCompanyGraphql;
topLevelUnitRef: BusinessUnitKeyReference;
topLevelUnit: BusinessUnitKeyReference | TBusinessUnit;
topLevelUnit: TCompanyGraphql;
};

0 comments on commit 6d70521

Please sign in to comment.