From afb7250e135282fbbc4e4ea625ae7c1f8e3de749 Mon Sep 17 00:00:00 2001 From: Blackfaded Date: Mon, 12 Aug 2024 11:47:00 +0200 Subject: [PATCH] test: add query tests --- src/models/PaymentChannel.ts | 4 +- src/models/StatusCheckout.ts | 12 +- src/queries/GetCheckoutsQuery.test.ts | 153 ++++++++++++++++++++++ src/queries/GetCommerceCasesQuery.test.ts | 61 +++++++++ 4 files changed, 222 insertions(+), 8 deletions(-) create mode 100644 src/queries/GetCheckoutsQuery.test.ts create mode 100644 src/queries/GetCommerceCasesQuery.test.ts diff --git a/src/models/PaymentChannel.ts b/src/models/PaymentChannel.ts index 2a98c14..da822b3 100644 --- a/src/models/PaymentChannel.ts +++ b/src/models/PaymentChannel.ts @@ -1,4 +1,4 @@ export enum PaymentChannel { - Ecommerce = 'ECOMMERCE', - Pos = 'POS', + ECOMMERCE = 'ECOMMERCE', + POS = 'POS', } diff --git a/src/models/StatusCheckout.ts b/src/models/StatusCheckout.ts index db6022a..85f2b73 100644 --- a/src/models/StatusCheckout.ts +++ b/src/models/StatusCheckout.ts @@ -2,10 +2,10 @@ * Current high-level status of the Checkout */ export enum StatusCheckout { - Open = 'OPEN', - PendingCompletion = 'PENDING_COMPLETION', - Completed = 'COMPLETED', - Billed = 'BILLED', - Chargebacked = 'CHARGEBACKED', - Deleted = 'DELETED', + OPEN = 'OPEN', + PENDINGCOMPLETION = 'PENDING_COMPLETION', + COMPLETED = 'COMPLETED', + BILLED = 'BILLED', + CHARGEBACKED = 'CHARGEBACKED', + DELETED = 'DELETED', } diff --git a/src/queries/GetCheckoutsQuery.test.ts b/src/queries/GetCheckoutsQuery.test.ts new file mode 100644 index 0000000..d69f8e2 --- /dev/null +++ b/src/queries/GetCheckoutsQuery.test.ts @@ -0,0 +1,153 @@ +import { describe, test, expect } from 'vitest'; +import { ExtendedCheckoutStatus } from '../models/ExtendedCheckoutStatus.js'; +import { PaymentChannel } from '../models/PaymentChannel.js'; +import { StatusCheckout } from '../models/StatusCheckout.js'; +import { GetCheckoutsQuery } from './GetCheckoutsQuery.js'; + +describe('GetCheckoutsQuery', () => { + test('toQueryMap', () => { + const query = new GetCheckoutsQuery(); + query.setOffset(1); + query.setSize(10); + query.setFromDate('2021-01-01'); + query.setToDate('2021-01-31'); + query.setFromCheckoutAmount(100); + query.setToCheckoutAmount(200); + query.setFromOpenAmount(50); + query.setToOpenAmount(150); + query.setFromCollectedAmount(10); + query.setToCollectedAmount(20); + query.setFromCancelledAmount(5); + query.setToCancelledAmount(15); + query.setFromRefundAmount(1); + query.setToRefundAmount(2); + query.setFromChargebackAmount(100); + query.setToChargebackAmount(200); + query.setCheckoutId('123456'); + query.setMerchantReference('7890'); + query.setMerchantCustomerId('1234'); + query.setIncludePaymentProductId([12, 456]); + query.setIncludeCheckoutStatus([StatusCheckout.BILLED, StatusCheckout.CHARGEBACKED]); + query.setIncludeExtendedCheckoutStatus([ExtendedCheckoutStatus.OPEN, ExtendedCheckoutStatus.DELETED]); + query.setIncludePaymentChannel([PaymentChannel.ECOMMERCE, PaymentChannel.POS]); + query.setPaymentReference('1234'); + query.setPaymentId('5678'); + query.setFirstName('John'); + query.setSurname('Doe'); + query.setEmail('john.doe@example.com'); + query.setPhoneNumber('1234567890'); + query.setDateOfBirth('1980-01-01'); + query.setCompanyInformation('Company Inc.'); + + const queryMap = query.toQueryMap(); + + expect(queryMap.get('offset')).toEqual('1'); + expect(queryMap.get('size')).toEqual('10'); + expect(queryMap.get('fromDate')).toEqual('2021-01-01'); + expect(queryMap.get('toDate')).toEqual('2021-01-31'); + expect(queryMap.get('fromCheckoutAmount')).toEqual('100'); + expect(queryMap.get('toCheckoutAmount')).toEqual('200'); + expect(queryMap.get('fromOpenAmount')).toEqual('50'); + expect(queryMap.get('toOpenAmount')).toEqual('150'); + expect(queryMap.get('fromCollectedAmount')).toEqual('10'); + expect(queryMap.get('toCollectedAmount')).toEqual('20'); + expect(queryMap.get('fromCancelledAmount')).toEqual('5'); + expect(queryMap.get('toCancelledAmount')).toEqual('15'); + expect(queryMap.get('fromRefundAmount')).toEqual('1'); + expect(queryMap.get('toRefundAmount')).toEqual('2'); + expect(queryMap.get('fromChargebackAmount')).toEqual('100'); + expect(queryMap.get('toChargebackAmount')).toEqual('200'); + expect(queryMap.get('checkoutId')).toEqual('123456'); + expect(queryMap.get('merchantReference')).toEqual('7890'); + expect(queryMap.get('merchantCustomerId')).toEqual('1234'); + expect(queryMap.get('includePaymentProductId')).toEqual('12,456'); + expect(queryMap.get('includeCheckoutStatus')).toEqual('BILLED,CHARGEBACKED'); + expect(queryMap.get('includeExtendedCheckoutStatus')).toEqual('OPEN,DELETED'); + expect(queryMap.get('includePaymentChannel')).toEqual('ECOMMERCE,POS'); + expect(queryMap.get('paymentReference')).toEqual('1234'); + expect(queryMap.get('paymentId')).toEqual('5678'); + expect(queryMap.get('firstName')).toEqual('John'); + expect(queryMap.get('surname')).toEqual('Doe'); + expect(queryMap.get('email')).toEqual('john.doe@example.com'); + expect(queryMap.get('phoneNumber')).toEqual('1234567890'); + expect(queryMap.get('dateOfBirth')).toEqual('1980-01-01'); + expect(queryMap.get('companyInformation')).toEqual('Company Inc.'); + }); + + test('getters', () => { + const query = new GetCheckoutsQuery(); + query.setOffset(1); + query.setSize(10); + query.setFromDate('2021-01-01'); + query.setToDate('2021-01-31'); + query.setFromCheckoutAmount(100); + query.setToCheckoutAmount(200); + query.setFromOpenAmount(50); + query.setToOpenAmount(150); + query.setFromCollectedAmount(10); + query.setToCollectedAmount(20); + query.setFromCancelledAmount(5); + query.setToCancelledAmount(15); + query.setFromRefundAmount(1); + query.setToRefundAmount(2); + query.setFromChargebackAmount(100); + query.setToChargebackAmount(200); + query.setCheckoutId('123456'); + query.setMerchantReference('7890'); + query.setMerchantCustomerId('1234'); + query.setIncludePaymentProductId([12, 456]); + query.setIncludeCheckoutStatus([StatusCheckout.BILLED, StatusCheckout.CHARGEBACKED]); + query.setIncludeExtendedCheckoutStatus([ExtendedCheckoutStatus.OPEN, ExtendedCheckoutStatus.DELETED]); + query.setIncludePaymentChannel([PaymentChannel.ECOMMERCE, PaymentChannel.POS]); + query.setPaymentReference('1234'); + query.setPaymentId('5678'); + query.setFirstName('John'); + query.setSurname('Doe'); + query.setEmail('john.doe@example.com'); + query.setPhoneNumber('1234567890'); + query.setDateOfBirth('1980-01-01'); + query.setCompanyInformation('Company Inc.'); + + expect(query.getOffset()).toEqual(1); + expect(query.getSize()).toEqual(10); + expect(query.getFromDate()).toEqual('2021-01-01'); + expect(query.getToDate()).toEqual('2021-01-31'); + expect(query.getFromCheckoutAmount()).toEqual(100); + expect(query.getToCheckoutAmount()).toEqual(200); + expect(query.getFromOpenAmount()).toEqual(50); + expect(query.getToOpenAmount()).toEqual(150); + expect(query.getFromCollectedAmount()).toEqual(10); + expect(query.getToCollectedAmount()).toEqual(20); + expect(query.getFromCancelledAmount()).toEqual(5); + expect(query.getToCancelledAmount()).toEqual(15); + expect(query.getFromRefundAmount()).toEqual(1); + expect(query.getToRefundAmount()).toEqual(2); + expect(query.getFromChargebackAmount()).toEqual(100); + expect(query.getToChargebackAmount()).toEqual(200); + expect(query.getCheckoutId()).toEqual('123456'); + expect(query.getMerchantReference()).toEqual('7890'); + expect(query.getMerchantCustomerId()).toEqual('1234'); + expect(query.getIncludePaymentProductId()).toEqual([12, 456]); + expect(query.getIncludeCheckoutStatus()).toEqual([StatusCheckout.BILLED, StatusCheckout.CHARGEBACKED]); + expect(query.getIncludeExtendedCheckoutStatus()).toEqual([ + ExtendedCheckoutStatus.OPEN, + ExtendedCheckoutStatus.DELETED, + ]); + expect(query.getIncludePaymentChannel()).toEqual([PaymentChannel.ECOMMERCE, PaymentChannel.POS]); + expect(query.getPaymentReference()).toEqual('1234'); + expect(query.getPaymentId()).toEqual('5678'); + expect(query.getFirstName()).toEqual('John'); + expect(query.getSurname()).toEqual('Doe'); + expect(query.getEmail()).toEqual('john.doe@example.com'); + expect(query.getPhoneNumber()).toEqual('1234567890'); + expect(query.getDateOfBirth()).toEqual('1980-01-01'); + expect(query.getCompanyInformation()).toEqual('Company Inc.'); + }); + + test('nulls', () => { + const query = new GetCheckoutsQuery(); + const queryMap = query.toQueryMap(); + + expect(Object.keys(queryMap).length).toBe(0); + }); +}); diff --git a/src/queries/GetCommerceCasesQuery.test.ts b/src/queries/GetCommerceCasesQuery.test.ts new file mode 100644 index 0000000..9371d20 --- /dev/null +++ b/src/queries/GetCommerceCasesQuery.test.ts @@ -0,0 +1,61 @@ +import { describe, test, expect } from 'vitest'; +import { PaymentChannel } from '../models/PaymentChannel.js'; +import { StatusCheckout } from '../models/StatusCheckout.js'; +import { GetCommerceCasesQuery } from './GetCommerceCasesQuery.js'; + +describe('GetCommerceCasesQuery', () => { + test('toQueryMap', () => { + const query = new GetCommerceCasesQuery(); + query.setOffset(1); + query.setSize(10); + query.setFromDate('2021-01-01'); + query.setToDate('2021-01-31'); + query.setCommerceCaseId('123456'); + query.setMerchantReference('7890'); + query.setMerchantCustomerId('1234'); + query.setIncludeCheckoutStatus([StatusCheckout.BILLED, StatusCheckout.CHARGEBACKED]); + query.setIncludePaymentChannel([PaymentChannel.ECOMMERCE, PaymentChannel.POS]); + + const queryMap = query.toQueryMap(); + + expect(queryMap.get('offset')).toEqual('1'); + expect(queryMap.get('size')).toEqual('10'); + expect(queryMap.get('fromDate')).toEqual('2021-01-01'); + expect(queryMap.get('toDate')).toEqual('2021-01-31'); + expect(queryMap.get('commerceCaseId')).toEqual('123456'); + expect(queryMap.get('merchantReference')).toEqual('7890'); + expect(queryMap.get('merchantCustomerId')).toEqual('1234'); + expect(queryMap.get('includeCheckoutStatus')).toEqual('BILLED,CHARGEBACKED'); + expect(queryMap.get('includePaymentChannel')).toEqual('ECOMMERCE,POS'); + }); + + test('getters', () => { + const query = new GetCommerceCasesQuery(); + query.setOffset(1); + query.setSize(10); + query.setFromDate('2021-01-01'); + query.setToDate('2021-01-31'); + query.setCommerceCaseId('123456'); + query.setMerchantReference('7890'); + query.setMerchantCustomerId('1234'); + query.setIncludeCheckoutStatus([StatusCheckout.BILLED, StatusCheckout.CHARGEBACKED]); + query.setIncludePaymentChannel([PaymentChannel.ECOMMERCE, PaymentChannel.POS]); + + expect(query.getOffset()).toEqual(1); + expect(query.getSize()).toEqual(10); + expect(query.getFromDate()).toEqual('2021-01-01'); + expect(query.getToDate()).toEqual('2021-01-31'); + expect(query.getCommerceCaseId()).toEqual('123456'); + expect(query.getMerchantReference()).toEqual('7890'); + expect(query.getMerchantCustomerId()).toEqual('1234'); + expect(query.getIncludeCheckoutStatus()).toEqual([StatusCheckout.BILLED, StatusCheckout.CHARGEBACKED]); + expect(query.getIncludePaymentChannel()).toEqual([PaymentChannel.ECOMMERCE, PaymentChannel.POS]); + }); + + test('nulls', () => { + const query = new GetCommerceCasesQuery(); + const queryMap = query.toQueryMap(); + + expect(Object.keys(queryMap).length).toBe(0); + }); +});