Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import {assert} from 'chai';
  2. import sinon from 'sinon';
  3. import proxyquireModule from 'proxyquire';
  4. import Basket from 'dw/order/Basket';
  5. import 'dw-api-mock/demandware-globals';
  6.  
  7. // add cartridges dir as module lookup location, the app-module-path package lets you do this nicely
  8. require('app-module-path').addPath(`${process.cwd()}/cartridges`);
  9.  
  10. const proxyquire = proxyquireModule.noCallThru();
  11. const log = require("dw/system/Logger");
  12.  
  13. const addPersonalDataToGuest = proxyquire('app_asda_headless/cartridge/scripts/checkout/AddPersonalDataToGuestCustomer.js', {
  14.     'app_asda_headless/cartridge/scripts/library/utility/exception/EcsException.js': (context, message) => {
  15.         return {
  16.             toString: () => {
  17.                 return message;
  18.             }
  19.         };
  20.     },
  21. });
  22.  
  23. describe('AddPersonalDataToGuestCustomer.js', () => {
  24.     describe('addPersonalDataToGuest()', () => {
  25.         const TypeCheck       = require('app_asda_headless/cartridge/scripts/library/utility/validation/libTypeCheck.js');
  26.         const HashMap         = require('dw/util/HashMap');
  27.         const Collection      = require("dw/util/Collection");
  28.         const sandbox         = sinon.sandbox.create();
  29.  
  30.         const basket          = new Basket();
  31.         basket.customerName   = 'TesterTitle|TesterFirstName|TesterLastName|TesterSmsPhone';
  32.         basket.defaultShipment = {
  33.             shippingAddress: {
  34.                    title: 'TesterTitle',
  35.                    firstName: 'TesterFirstName',
  36.                    lastName:  'TesterLastName',
  37.                    phone:     'TesterPhone',
  38.                    custom: {
  39.                        smsPhone:  'TesterSmsPhone'
  40.                     }
  41.             }    
  42.         }
  43.  
  44.         const customerName = new HashMap();
  45.         customerName.put('title', 'TesterTitle');
  46.         customerName.put('firstName', 'TesterFirstName');
  47.         customerName.put('lastName', 'TesterLastName');
  48.         customerName.put('phone', '');
  49.         customerName.put('smsPhone', 'TesterSmsPhone');
  50.  
  51.  
  52.         const clickAndCollectShippingMethod = Collection.createFromArray([
  53.             {
  54.                 'getShippingMethodID': () => '99'
  55.             }
  56.         ]);
  57.  
  58.         const notClickAndCollectShippingMethod = Collection.createFromArray([
  59.             {
  60.                 'getShippingMethodID': () => 'Home Delivery'
  61.             }
  62.         ]);
  63.  
  64.         before(() => {
  65.             sandbox.stub(basket, 'getShipments')
  66.             .onCall(0).callsFake(() => {
  67.                 return clickAndCollectShippingMethod;
  68.             })
  69.             .onCall(1).callsFake(() => {
  70.                 return notClickAndCollectShippingMethod;
  71.             })
  72.             .onCall(2).callsFake(() => {
  73.                 return notClickAndCollectShippingMethod;
  74.             });
  75.         });
  76.  
  77.         after(() => {
  78.             sandbox.restore();
  79.         });
  80.  
  81.  
  82.         it('should take customers information from Basket.customerName, when order is only ISC based on shippingMethod', () => {
  83.             basket.customerName = 'TesterTitle|TesterFirstName|TesterLastName|TesterSmsPhone';
  84.             const result = addPersonalDataToGuest(basket, 'notISCs', log);
  85.  
  86.             assert.isObject(result);
  87.             assert.equal(result.error, false);
  88.             assert.equal(result.customerNames.get('title'), customerName.get('title'));
  89.             assert.equal(result.customerNames.get('firstName'), customerName.get('firstName'));
  90.             assert.equal(result.customerNames.get('lastName'), customerName.get('lastName'));
  91.             assert.equal(result.customerNames.get('phone'), customerName.get('phone'));
  92.             assert.equal(result.customerNames.get('smsPhone'), customerName.get('smsPhone'));
  93.         });
  94.  
  95.         it('should take customers information from Basket.customerName when order is only ISC, based on basketLineContent', () => {
  96.             basket.customerName = 'TesterTitle|TesterFirstName|TesterLastName|TesterSmsPhone';
  97.             const result = addPersonalDataToGuest(basket, 'ISCs', log);
  98.  
  99.             assert.isObject(result);
  100.             assert.equal(result.error, false);
  101.             assert.equal(result.customerNames.get('title'), customerName.get('title'));
  102.             assert.equal(result.customerNames.get('firstName'), customerName.get('firstName'));
  103.             assert.equal(result.customerNames.get('lastName'), customerName.get('lastName'));
  104.             assert.equal(result.customerNames.get('phone'), customerName.get('phone'));
  105.             assert.equal(result.customerNames.get('smsPhone'), customerName.get('smsPhone'));
  106.         });
  107.  
  108.         it('should take customers information from default shiping metod', () => {
  109.             customerName.put('phone', 'TesterPhone');
  110.             const result = addPersonalDataToGuest(basket, 'notISCs', log);
  111.  
  112.             assert.isObject(result);
  113.             assert.equal(result.error, false);
  114.             assert.equal(result.customerNames.get('title'), customerName.get('title'));
  115.             assert.equal(result.customerNames.get('firstName'), customerName.get('firstName'));
  116.             assert.equal(result.customerNames.get('lastName'), customerName.get('lastName'));
  117.             assert.equal(result.customerNames.get('phone'), customerName.get('phone'));
  118.             assert.equal(result.customerNames.get('smsPhone'), customerName.get('smsPhone'));
  119.         });
  120.     });
  121. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement