UNPKG

pcp-server-nodejs-sdk

Version:

[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=PAYONE-GmbH_PCP-server-nodeJS-SDK&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=PAYONE-GmbH_PCP-server-nodeJS-SDK) [![Coverage](https://sonarcloud.io/api/pr

212 lines 12.9 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import fetch from 'node-fetch'; import { beforeEach, describe, expect, test, vi } from 'vitest'; import { CommunicatorConfiguration } from '../CommunicatorConfiguration.js'; import { CartItemStatus, OrderType, CancelType, } from '../models/index.js'; import { createResponseMock, createEmptyErrorResponseMock } from '../testutils/mock-response.js'; import { ApiErrorResponseException } from '../errors/ApiErrorResponseException.js'; import { ApiResponseRetrievalException } from '../errors/ApiResponseRetrievalException.js'; import { OrderManagementCheckoutActionsApiClient } from './OrderManagementCheckoutActionsApiClient.js'; vi.mock('node-fetch', (importOriginal) => __awaiter(void 0, void 0, void 0, function* () { return Object.assign(Object.assign({}, (yield importOriginal())), { default: vi.fn() }); })); const mockedFetch = vi.mocked(fetch, true); describe('CheckoutApiClient', () => { let orderManagementCheckoutActionsApiClient; beforeEach(() => { orderManagementCheckoutActionsApiClient = new OrderManagementCheckoutActionsApiClient(new CommunicatorConfiguration('apiKey', 'apiSecret', 'https://test.com')); }); describe('createOrder', () => { test('given request was successful, then return response', () => __awaiter(void 0, void 0, void 0, function* () { const expectedResponse = { createPaymentResponse: { paymentExecutionId: 'paymentExecutionId', }, }; mockedFetch.mockResolvedValueOnce(createResponseMock(200, expectedResponse)); const payload = { orderType: OrderType.Full, items: [ { id: '1', quantity: 2 }, { id: '3', quantity: 1 }, ], }; const res = yield orderManagementCheckoutActionsApiClient.createOrder('merchantId', 'commerceCaseId', 'checkoutId', payload); expect(res).toEqual(expectedResponse); })); test('given request was not successful (400), then return errorresponse', () => __awaiter(void 0, void 0, void 0, function* () { const expectedResponse = { errorId: 'error-id' }; mockedFetch.mockResolvedValueOnce(createResponseMock(400, expectedResponse)); expect.assertions(1); try { yield orderManagementCheckoutActionsApiClient.createOrder('merchantId', 'commerceCaseId', 'checkoutId', {}); } catch (error) { expect(error).toEqual(new ApiErrorResponseException(400, JSON.stringify(expectedResponse))); } })); test('given request was not successful (500), throw ApiResponseRetrievalException', () => __awaiter(void 0, void 0, void 0, function* () { mockedFetch.mockResolvedValueOnce(createEmptyErrorResponseMock(500)); expect.assertions(1); try { yield orderManagementCheckoutActionsApiClient.createOrder('merchantId', 'commerceCaseId', 'checkoutId', {}); } catch (error) { expect(error).toEqual(new ApiResponseRetrievalException(500, '')); } })); test('a required params is empty, throw an error', () => __awaiter(void 0, void 0, void 0, function* () { yield expect(() => orderManagementCheckoutActionsApiClient.createOrder('', 'commerceCaseId', 'checkoutId', {})).rejects.toThrow('Merchant ID is required'); yield expect(() => orderManagementCheckoutActionsApiClient.createOrder('merchantId', '', 'checkoutId', {})).rejects.toThrow('Commerce Case ID is required'); yield expect(() => orderManagementCheckoutActionsApiClient.createOrder('merchantId', 'commerceCaseId', '', {})).rejects.toThrow('Checkout ID is required'); })); }); describe('deliverOrder', () => { const payload = { isFinal: false, }; test('given request was successful, then return response', () => __awaiter(void 0, void 0, void 0, function* () { const expectedResponse = { capturePaymentResponse: {}, shoppingCart: { items: [ { invoiceData: { description: 'some nice thing' }, orderLineDetails: { id: 'abc', status: [{ cartItemStatus: CartItemStatus.RETURNED, quantity: 1 }], productPrice: 1459, quantity: 1, }, }, ], }, }; mockedFetch.mockResolvedValueOnce(createResponseMock(200, expectedResponse)); const res = yield orderManagementCheckoutActionsApiClient.deliverOrder('merchantId', 'commerceCaseId', 'checkoutId', payload); expect(res).toEqual(expectedResponse); })); test('given request was not successful (400), then return errorresponse', () => __awaiter(void 0, void 0, void 0, function* () { const expectedResponse = { errorId: 'error-id' }; mockedFetch.mockResolvedValueOnce(createResponseMock(400, expectedResponse)); expect.assertions(1); try { yield orderManagementCheckoutActionsApiClient.deliverOrder('merchantId', 'commerceCaseId', 'checkoutId', payload); } catch (error) { expect(error).toEqual(new ApiErrorResponseException(400, JSON.stringify(expectedResponse))); } })); test('given request was not successful (500), then return errorresponse', () => __awaiter(void 0, void 0, void 0, function* () { mockedFetch.mockResolvedValueOnce(createEmptyErrorResponseMock(500)); expect.assertions(1); try { yield orderManagementCheckoutActionsApiClient.deliverOrder('merchantId', 'commerceCaseId', 'checkoutId', payload); } catch (error) { expect(error).toEqual(new ApiResponseRetrievalException(500, '')); } })); test('a required param is empty, throw an error', () => __awaiter(void 0, void 0, void 0, function* () { yield expect(() => orderManagementCheckoutActionsApiClient.deliverOrder('', 'commerceCaseId', 'checkoutId', payload)).rejects.toThrowError('Merchant ID is required'); yield expect(() => orderManagementCheckoutActionsApiClient.deliverOrder('merchantId', '', 'checkoutId', payload)).rejects.toThrowError('Commerce Case ID is required'); yield expect(() => orderManagementCheckoutActionsApiClient.deliverOrder('merchantId', 'commerceCaseId', '', payload)).rejects.toThrowError('Checkout ID is required'); })); }); describe('returnOrder', () => { test('given request was successful, then return response', () => __awaiter(void 0, void 0, void 0, function* () { const expectedResponse = { returnPaymentResponse: { refundOutput: { amountOfMoney: { amount: 1199, currencyCode: 'EUR' }, paymentMethod: 'cash', }, }, }; mockedFetch.mockResolvedValueOnce(createResponseMock(200, expectedResponse)); const payload = { returnReason: 'not needed', }; const res = yield orderManagementCheckoutActionsApiClient.returnOrder('merchantId', 'commerceCaseId', 'checkoutId', payload); expect(res).toEqual(expectedResponse); })); test('given request was not successful (400), then return errorresponse', () => __awaiter(void 0, void 0, void 0, function* () { const expectedResponse = { errorId: 'error-id' }; mockedFetch.mockResolvedValueOnce(createResponseMock(400, expectedResponse)); expect.assertions(1); try { yield orderManagementCheckoutActionsApiClient.returnOrder('merchantId', 'commerceCaseId', 'checkoutId', {}); } catch (error) { expect(error).toEqual(new ApiErrorResponseException(400, JSON.stringify(expectedResponse))); } })); test('given request was not successful (500), then return errorresponse', () => __awaiter(void 0, void 0, void 0, function* () { mockedFetch.mockResolvedValueOnce(createEmptyErrorResponseMock(500)); expect.assertions(1); try { yield orderManagementCheckoutActionsApiClient.returnOrder('merchantId', 'commerceCaseId', 'checkoutId', {}); } catch (error) { expect(error).toEqual(new ApiResponseRetrievalException(500, '')); } })); test('a required param is empty, throw an error', () => __awaiter(void 0, void 0, void 0, function* () { yield expect(() => orderManagementCheckoutActionsApiClient.returnOrder('', 'commerceCaseId', 'checkoutId', {})).rejects.toThrowError('Merchant ID is required'); yield expect(() => orderManagementCheckoutActionsApiClient.returnOrder('merchantId', '', 'checkoutId', {})).rejects.toThrowError('Commerce Case ID is required'); yield expect(() => orderManagementCheckoutActionsApiClient.returnOrder('merchantId', 'commerceCaseId', '', {})).rejects.toThrowError('Checkout ID is required'); })); }); describe('cancelOrder', () => { test('given request was successful, then return response', () => __awaiter(void 0, void 0, void 0, function* () { const expectedResponse = { cancelPaymentResponse: { payment: { id: 'payed-id', }, }, }; mockedFetch.mockResolvedValueOnce(createResponseMock(200, expectedResponse)); const payload = { cancelType: CancelType.FULL, }; const res = yield orderManagementCheckoutActionsApiClient.cancelOrder('merchantId', 'commerceCaseId', 'checkoutId', payload); expect(res).toEqual(expectedResponse); })); test('given request was not successful (400), then return errorresponse', () => __awaiter(void 0, void 0, void 0, function* () { const expectedResponse = { errorId: 'error-id' }; mockedFetch.mockResolvedValueOnce(createResponseMock(400, expectedResponse)); expect.assertions(1); try { yield orderManagementCheckoutActionsApiClient.cancelOrder('merchantId', 'commerceCaseId', 'checkoutId', {}); } catch (error) { expect(error).toEqual(new ApiErrorResponseException(400, JSON.stringify(expectedResponse))); } })); test('given request was not successful (500), then return errorresponse', () => __awaiter(void 0, void 0, void 0, function* () { mockedFetch.mockResolvedValueOnce(createEmptyErrorResponseMock(500)); expect.assertions(1); try { yield orderManagementCheckoutActionsApiClient.cancelOrder('merchantId', 'commerceCaseId', 'checkoutId', {}); } catch (error) { expect(error).toEqual(new ApiResponseRetrievalException(500, '')); } })); test('a required param is empty, throw an error', () => __awaiter(void 0, void 0, void 0, function* () { yield expect(() => orderManagementCheckoutActionsApiClient.cancelOrder('', 'commerceCaseId', 'checkoutId', {})).rejects.toThrowError('Merchant ID is required'); yield expect(() => orderManagementCheckoutActionsApiClient.cancelOrder('merchantId', '', 'checkoutId', {})).rejects.toThrowError('Commerce Case ID is required'); yield expect(() => orderManagementCheckoutActionsApiClient.cancelOrder('merchantId', 'commerceCaseId', '', {})).rejects.toThrowError('Checkout ID is required'); })); }); }); //# sourceMappingURL=OrderManagementCheckoutActionsApiClient.test.js.map