diff --git a/src/models/Order.ts b/src/models/Order.ts index dbac81b..252b21d 100644 --- a/src/models/Order.ts +++ b/src/models/Order.ts @@ -112,6 +112,14 @@ export class Order { : undefined; } + public get csvOrderId(): string | null { + return this._data.csvOrderId; + } + + public get batchId(): string | undefined { + return this._data.batchId; + } + /** * Get the template of the order * @throws { PrintOneError } If the template could not be fetched. @@ -125,7 +133,9 @@ export class Order { * @throws { PrintOneError } If the order could not be refreshed. */ public async refresh(): Promise { - this._data = await this._protected.client.GET(`orders/${this.id}`); + this._data = await this._protected.client.GET( + `${this.urlPrefix}orders/${this.id}`, + ); } /** @@ -169,8 +179,12 @@ export class Order { } this._data = await this._protected.client.POST( - `orders/${this.id}/cancel`, + `${this.urlPrefix}orders/${this.id}/cancel`, {}, ); } + + protected get urlPrefix(): string { + return this.batchId ? `batches/${this.batchId}/` : "";; + } } diff --git a/src/models/_interfaces/IOrder.ts b/src/models/_interfaces/IOrder.ts index 5bec8ab..082732b 100644 --- a/src/models/_interfaces/IOrder.ts +++ b/src/models/_interfaces/IOrder.ts @@ -20,4 +20,6 @@ export type IOrder = { createdAt: string; updatedAt: string; anonymizedAt: string | null; + csvOrderId: string | null; + batchId?: string; }; diff --git a/test/Batch.spec.ts b/test/Batch.spec.ts index c271fdb..e7a0403 100644 --- a/test/Batch.spec.ts +++ b/test/Batch.spec.ts @@ -12,6 +12,7 @@ import { client } from "./client"; import { BatchStatus } from "../src/enums/BatchStatus"; import * as fs from "fs"; import * as path from "path"; +import { sleep } from "../src/utils"; let batch: Batch = null as unknown as Batch; let template: Template = null as unknown as Template; @@ -124,6 +125,7 @@ describe("createCsvOrder", function () { expect(csvOrder.sendDate.getDay()).toEqual(new Date().getDay()); expect(csvOrder.friendlyStatus).toEqual(expect.any(String)); expect(csvOrder.sender).toEqual(undefined); + expect(csvOrder.format).toEqual(expect.any(String)); expect(csvOrder.recipientMapping).toEqual(mapping.recipient); expect(csvOrder.templateId).toEqual(template.id); expect(csvOrder.mergeVariableMapping).toStrictEqual({}); @@ -167,7 +169,7 @@ describe("getCsvOrder", function () { // arrange // act - const csvOrder = await client.getCsvOrder(csvOrderId); + const csvOrder = await batch.getCsvOrder(csvOrderId); // assert expect(csvOrder).toBeDefined(); @@ -316,6 +318,7 @@ describe("getOrder", function () { expect(result).toBeDefined(); expect(result).toBeInstanceOf(Order); expect(result.id).toEqual(order.id); + expect(result.batchId).toEqual(batch.id); }); it("should not return an non batch order", async function () { @@ -402,3 +405,46 @@ describe("getOrders", function () { expect(result.data).toBeArrayOfSize(1); }); }); + +describe('BatchOrder', function () { + it('should be able to cancel Order', async function() { + // arrange + const order = await batch.createOrder({ + recipient: { + name: "John Doe", + address: "123 Main Street", + postalCode: "1234 AB", + city: "Anytown", + country: "Nederland", + }, + }); + + // act + await order.cancel(); + + // assert + expect(order.status).toEqual('order_cancelled'); + }) + + it('should be able to refresh Order', async function () { + // arrange + const order = await batch.createOrder({ + recipient: { + name: "John Doe", + address: "123 Main Street", + postalCode: "1234 AB", + city: "Anytown", + country: "Nederland", + }, + }); + + // act + while (order.status === "order_created") { + await order.refresh(); + await sleep(1000); + } + + // assert + expect(order.status).not.toEqual("order_created"); + }, 30000); +}) diff --git a/test/PrintOne.spec.ts b/test/PrintOne.spec.ts index 5dde41d..f6d9a82 100644 --- a/test/PrintOne.spec.ts +++ b/test/PrintOne.spec.ts @@ -905,6 +905,12 @@ describe("getOrder", function () { expect(order.isBillable).toEqual(expect.any(Boolean)); expect(order.errors).toEqual(expect.any(Array)); expect(order.definitiveCountryId).toEqual(expect.any(String)); + expect(order.csvOrderId).toEqual( + expect.toBeOneOf([expect.any(String), null]), + ); + expect(order.batchId).toEqual( + expect.toBeOneOf([expect.any(String), undefined]), + ); }); it("should throw an error when the order does not exist", async function () { @@ -1393,6 +1399,7 @@ describe("createBatch", function () { expect(batch.createdAt).toEqual(expect.any(Date)); expect(batch.updatedAt).toEqual(expect.any(Date)); expect(batch.finish).toEqual(Finish.GLOSSY); + expect(batch.format).toEqual(Format.POSTCARD_SQ15); expect(batch.templateId).toEqual(template.id); expect(batch.isBillable).toEqual(expect.any(Boolean)); expect(batch.estimatedPrice).toEqual(0);