From 369d3660fa7f6c2db509604b545d146ab487c9f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20P=C3=A9ru?= Date: Wed, 30 Oct 2024 13:51:07 +0100 Subject: [PATCH 1/2] Added organizationUnit property in OrderProduct entity --- package.json | 2 +- .../organizationUnit/organizationUnit.ts | 39 +++++++++++++++++++ .../entities/orders/products/products.ts | 20 ++++++++++ tests/orders/mocks/orders.mocks.ts | 7 ++++ 4 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 src/orders/entities/orders/products/organizationUnit/organizationUnit.ts diff --git a/package.json b/package.json index 268d7217..442a9ca1 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "type": "git", "url": "https://github.com/ArrowSphere/nodejs-api-client.git" }, - "version": "3.155.0", + "version": "3.156.0-rc-cpe-1", "description": "Node.js client for ArrowSphere's public API", "main": "build/index.js", "types": "build/index.d.ts", diff --git a/src/orders/entities/orders/products/organizationUnit/organizationUnit.ts b/src/orders/entities/orders/products/organizationUnit/organizationUnit.ts new file mode 100644 index 00000000..bd59d4ed --- /dev/null +++ b/src/orders/entities/orders/products/organizationUnit/organizationUnit.ts @@ -0,0 +1,39 @@ +import { AbstractEntity } from '../../../../../abstractEntity'; + +export enum OrganizationUnitTypeFields { + COLUMN_ORGANIZATION_UNIT_REF = 'organizationUnitRef', + COLUMN_NAME = 'name', +} + +export type OrganizationUnitType = { + [OrganizationUnitTypeFields.COLUMN_ORGANIZATION_UNIT_REF]?: string; + [OrganizationUnitTypeFields.COLUMN_NAME]?: string; +}; + +export class OrganizationUnit extends AbstractEntity { + readonly #organizationUnitRef?: string; + readonly #name?: string; + + public constructor(data: OrganizationUnit) { + super(data); + + this.#organizationUnitRef = + data[OrganizationUnitTypeFields.COLUMN_ORGANIZATION_UNIT_REF]; + this.#name = data[OrganizationUnitTypeFields.COLUMN_NAME]; + } + + get organizationUnitRef(): string | undefined { + return this.#organizationUnitRef; + } + get name(): string | undefined { + return this.#name; + } + + public toJSON(): OrganizationUnitType { + return { + [OrganizationUnitTypeFields.COLUMN_ORGANIZATION_UNIT_REF]: this + .organizationUnitRef, + [OrganizationUnitTypeFields.COLUMN_NAME]: this.name, + }; + } +} diff --git a/src/orders/entities/orders/products/products.ts b/src/orders/entities/orders/products/products.ts index e3c8fdb6..413408b5 100644 --- a/src/orders/entities/orders/products/products.ts +++ b/src/orders/entities/orders/products/products.ts @@ -7,6 +7,10 @@ import { ProductIdentifiersType, } from './identifiers/productIdentifiers'; import { PriceBand, PriceBandType } from './priceBand/priceBand'; +import { + OrganizationUnit, + OrganizationUnitType, +} from './organizationUnit/organizationUnit'; export enum OrderProductsFields { COLUMN_SKU = 'sku', @@ -25,6 +29,7 @@ export enum OrderProductsFields { COLUMN_PROGRAM = 'program', COLUMN_IDENTIFIERS = 'identifiers', COLUMN_ORGANIZATION_UNIT_REF = 'organizationUnitRef', + COLUMN_ORGANIZATION_UNIT = 'organizationUnit', COLUMN_PRICE_BAND = 'priceBand', } @@ -45,6 +50,7 @@ export type OrderProductsType = { [OrderProductsFields.COLUMN_PROGRAM]: ProductProgramType; [OrderProductsFields.COLUMN_IDENTIFIERS]: ProductIdentifiersType; [OrderProductsFields.COLUMN_ORGANIZATION_UNIT_REF]?: string; + [OrderProductsFields.COLUMN_ORGANIZATION_UNIT]?: OrganizationUnitType; [OrderProductsFields.COLUMN_PRICE_BAND]?: PriceBandType; }; @@ -65,6 +71,7 @@ export class OrderProduct extends AbstractEntity { readonly #program: ProductProgram; readonly #identifier: ProductIdentifiers; readonly #organizationUnitRef?: string; + readonly #organizationUnit?: OrganizationUnit; readonly #priceBand?: PriceBand; public constructor(getOrderProducts: OrderProductsType) { @@ -107,6 +114,15 @@ export class OrderProduct extends AbstractEntity { ); this.#organizationUnitRef = getOrderProducts[OrderProductsFields.COLUMN_ORGANIZATION_UNIT_REF]; + this.#organizationUnit = getOrderProducts[ + OrderProductsFields.COLUMN_ORGANIZATION_UNIT + ] + ? new OrganizationUnit( + getOrderProducts[ + OrderProductsFields.COLUMN_ORGANIZATION_UNIT + ] as OrganizationUnit, + ) + : undefined; this.#priceBand = getOrderProducts[OrderProductsFields.COLUMN_PRICE_BAND] ? new PriceBand( getOrderProducts[OrderProductsFields.COLUMN_PRICE_BAND] as PriceBand, @@ -165,6 +181,9 @@ export class OrderProduct extends AbstractEntity { get priceBand(): PriceBand | undefined { return this.#priceBand; } + get organizationUnit(): OrganizationUnit | undefined { + return this.#organizationUnit; + } public toJSON(): OrderProductsType { return { @@ -185,6 +204,7 @@ export class OrderProduct extends AbstractEntity { [OrderProductsFields.COLUMN_IDENTIFIERS]: this.identifier.toJSON(), [OrderProductsFields.COLUMN_ORGANIZATION_UNIT_REF]: this .organizationUnitRef, + [OrderProductsFields.COLUMN_ORGANIZATION_UNIT]: this.organizationUnit?.toJSON(), [OrderProductsFields.COLUMN_PRICE_BAND]: this.priceBand?.toJSON(), }; } diff --git a/tests/orders/mocks/orders.mocks.ts b/tests/orders/mocks/orders.mocks.ts index c04994c9..d8b546cf 100644 --- a/tests/orders/mocks/orders.mocks.ts +++ b/tests/orders/mocks/orders.mocks.ts @@ -19,6 +19,7 @@ import { } from '../../../src'; import { UpdateOrderResultData } from '../../../src/orders/entities/orders/updateOrderResult'; import { PriceBandFields } from '../../../src/orders/entities/orders/products/priceBand/priceBand'; +import { OrganizationUnitTypeFields } from '../../../src/orders/entities/orders/products/organizationUnit/organizationUnit'; export const PAYLOAD_ORDERS: GetData = { [GetResultFields.COLUMN_STATUS]: 200, @@ -83,6 +84,12 @@ export const PAYLOAD_ORDERS: GetData = { }, }, [OrderProductsFields.COLUMN_ORGANIZATION_UNIT_REF]: 'XSPOU321', + [OrderProductsFields.COLUMN_ORGANIZATION_UNIT]: { + [OrganizationUnitTypeFields.COLUMN_ORGANIZATION_UNIT_REF]: + 'XSPOU321', + [OrganizationUnitTypeFields.COLUMN_NAME]: + 'organization_unit_name', + }, [OrderProductsFields.COLUMN_PRICE_BAND]: { [PriceBandFields.COLUMN_ATTRIBUTES]: [ { name: 'Attribute1', value: 'value1' }, From d1d6e3f73a3484818025128651442587d511bc90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20P=C3=A9ru?= Date: Thu, 7 Nov 2024 10:06:15 +0100 Subject: [PATCH 2/2] chore(package): version 3.156.0 --- CHANGELOG.md | 5 +++++ package.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab542965..7c9c0c4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [3.156.0] - 2024.11.07 + +### Added +- [orders] Added organizationUnit property in order product entity + ## [3.155.0] - 2024.10.30 ### Added diff --git a/package.json b/package.json index 442a9ca1..c73e655c 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "type": "git", "url": "https://github.com/ArrowSphere/nodejs-api-client.git" }, - "version": "3.156.0-rc-cpe-1", + "version": "3.156.0", "description": "Node.js client for ArrowSphere's public API", "main": "build/index.js", "types": "build/index.d.ts",