LearningSalesForceCommerceC.../storefront-reference-architecture/test/integration/bundles/removeBundles.js
2021-12-21 10:57:31 -08:00

89 lines
4.0 KiB
JavaScript

var assert = require('chai').assert;
var request = require('request-promise');
var config = require('../it.config');
describe('Remove bundle from product line item', function () {
this.timeout(50000);
var cookieJar = request.jar();
var UUID;
var bundlePid = 'womens-jewelry-bundleM';
var qty = 1;
var childProducts = [
{ pid: '013742002836M' },
{ pid: '013742002805M' },
{ pid: '013742002799M' }
];
var myRequest = {
url: config.baseUrl + '/Cart-AddProduct',
method: 'POST',
rejectUnauthorized: false,
resolveWithFullResponse: true,
jar: cookieJar,
form: {
pid: bundlePid,
childProducts: childProducts,
quantity: qty,
options: []
},
headers: {
'X-Requested-With': 'XMLHttpRequest'
}
};
before(function () {
return request(myRequest, function (error, response) {
assert.equal(response.statusCode, 200, 'Expected Cart-AddProduct bundles statusCode to be 200.');
var bodyAsJson = JSON.parse(response.body);
UUID = bodyAsJson.cart.items[0].UUID;
});
});
it('1. should be able to remove a bundle from product line item', function () {
myRequest.method = 'GET';
myRequest.url = config.baseUrl + '/Cart-RemoveProductLineItem?pid=' + bundlePid + '&uuid=' + UUID;
return request(myRequest)
.then(function (removedItemResponse) {
assert.equal(removedItemResponse.statusCode, 200, 'Expected removeProductLineItem call statusCode to be 200.');
var bodyAsJson = JSON.parse(removedItemResponse.body);
assert.equal(bodyAsJson.basket.resources.emptyCartMsg, 'Your Shopping Cart is Empty', 'actual response from removing bundles not are expected');
assert.equal(bodyAsJson.basket.resources.numberOfItems, '0 Items', 'should return 0 items in basket');
});
});
it('2. should return error if UUID does not match', function () {
var bogusUUID = UUID + '3';
myRequest.url = config.baseUrl + '/Cart-RemoveProductLineItem?pid=' + bundlePid + '&uuid=' + bogusUUID;
return request(myRequest)
.then(function (removedItemResponse) {
assert.equal(removedItemResponse.statusCode, 500, 'Expected removeProductLineItem request to fail when UUID is incorrect.');
})
.catch(function (error) {
assert.equal(error.statusCode, 500, 'Expected statusCode to be 500 for removing product item with bogus UUID.');
var bodyAsJson = JSON.parse(error.response.body);
assert.equal(bodyAsJson.errorMessage,
'Unable to remove item from the cart. Please try again! If the issue continues please contact customer service.',
'Actual error message from removing product item with non-matching PID and UUID not as expected');
});
});
it('3. should return error if bundle does not exist in Cart', function () {
var bogusBundleId = 'mens-jewelry-bundle';
myRequest.url = config.baseUrl + '/Cart-RemoveProductLineItem?pid=' + bogusBundleId + '&uuid=' + UUID;
return request(myRequest)
.then(function (removedItemResponse) {
assert.equal(removedItemResponse.statusCode, 500, 'Expected removeProductLineItem call to fail when UUID is incorrect.');
})
.catch(function (error) {
assert.equal(error.statusCode, 500, 'Expected statusCode to be 500 for removing product item with bogus pid.');
var bodyAsJson = JSON.parse(error.response.body);
assert.equal(bodyAsJson.errorMessage,
'Unable to remove item from the cart. Please try again! If the issue continues please contact customer service.',
'Actual error message from removing product item with non-matching PID and UUID not as expected');
});
});
});