Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import {assert} from 'chai';
- import sinon from 'sinon';
- import proxyquireModule from 'proxyquire';
- import Basket from 'dw/order/Basket';
- import 'dw-api-mock/demandware-globals';
- // add cartridges dir as module lookup location, the app-module-path package lets you do this nicely
- require('app-module-path').addPath(`${process.cwd()}/cartridges`);
- const proxyquire = proxyquireModule.noCallThru();
- const log = require("dw/system/Logger");
- const addPersonalDataToGuest = proxyquire('app_asda_headless/cartridge/scripts/checkout/AddPersonalDataToGuestCustomer.js', {
- 'app_asda_headless/cartridge/scripts/library/utility/exception/EcsException.js': (context, message) => {
- return {
- toString: () => {
- return message;
- }
- };
- },
- });
- describe('AddPersonalDataToGuestCustomer.js', () => {
- describe('addPersonalDataToGuest()', () => {
- const TypeCheck = require('app_asda_headless/cartridge/scripts/library/utility/validation/libTypeCheck.js');
- const HashMap = require('dw/util/HashMap');
- const Collection = require("dw/util/Collection");
- const sandbox = sinon.sandbox.create();
- const basket = new Basket();
- basket.customerName = 'TesterTitle|TesterFirstName|TesterLastName|TesterSmsPhone';
- basket.defaultShipment = {
- shippingAddress: {
- title: 'TesterTitle',
- firstName: 'TesterFirstName',
- lastName: 'TesterLastName',
- phone: 'TesterPhone',
- custom: {
- smsPhone: 'TesterSmsPhone'
- }
- }
- }
- const customerName = new HashMap();
- customerName.put('title', 'TesterTitle');
- customerName.put('firstName', 'TesterFirstName');
- customerName.put('lastName', 'TesterLastName');
- customerName.put('phone', '');
- customerName.put('smsPhone', 'TesterSmsPhone');
- const clickAndCollectShippingMethod = Collection.createFromArray([
- {
- 'getShippingMethodID': () => '99'
- }
- ]);
- const notClickAndCollectShippingMethod = Collection.createFromArray([
- {
- 'getShippingMethodID': () => 'Home Delivery'
- }
- ]);
- before(() => {
- sandbox.stub(basket, 'getShipments')
- .onCall(0).callsFake(() => {
- return clickAndCollectShippingMethod;
- })
- .onCall(1).callsFake(() => {
- return notClickAndCollectShippingMethod;
- })
- .onCall(2).callsFake(() => {
- return notClickAndCollectShippingMethod;
- });
- });
- after(() => {
- sandbox.restore();
- });
- it('should take customers information from Basket.customerName, when order is only ISC based on shippingMethod', () => {
- basket.customerName = 'TesterTitle|TesterFirstName|TesterLastName|TesterSmsPhone';
- const result = addPersonalDataToGuest(basket, 'notISCs', log);
- assert.isObject(result);
- assert.equal(result.error, false);
- assert.equal(result.customerNames.get('title'), customerName.get('title'));
- assert.equal(result.customerNames.get('firstName'), customerName.get('firstName'));
- assert.equal(result.customerNames.get('lastName'), customerName.get('lastName'));
- assert.equal(result.customerNames.get('phone'), customerName.get('phone'));
- assert.equal(result.customerNames.get('smsPhone'), customerName.get('smsPhone'));
- });
- it('should take customers information from Basket.customerName when order is only ISC, based on basketLineContent', () => {
- basket.customerName = 'TesterTitle|TesterFirstName|TesterLastName|TesterSmsPhone';
- const result = addPersonalDataToGuest(basket, 'ISCs', log);
- assert.isObject(result);
- assert.equal(result.error, false);
- assert.equal(result.customerNames.get('title'), customerName.get('title'));
- assert.equal(result.customerNames.get('firstName'), customerName.get('firstName'));
- assert.equal(result.customerNames.get('lastName'), customerName.get('lastName'));
- assert.equal(result.customerNames.get('phone'), customerName.get('phone'));
- assert.equal(result.customerNames.get('smsPhone'), customerName.get('smsPhone'));
- });
- it('should take customers information from default shiping metod', () => {
- customerName.put('phone', 'TesterPhone');
- const result = addPersonalDataToGuest(basket, 'notISCs', log);
- assert.isObject(result);
- assert.equal(result.error, false);
- assert.equal(result.customerNames.get('title'), customerName.get('title'));
- assert.equal(result.customerNames.get('firstName'), customerName.get('firstName'));
- assert.equal(result.customerNames.get('lastName'), customerName.get('lastName'));
- assert.equal(result.customerNames.get('phone'), customerName.get('phone'));
- assert.equal(result.customerNames.get('smsPhone'), customerName.get('smsPhone'));
- });
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement