89 lines
4.0 KiB
JavaScript
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');
|
|
});
|
|
});
|
|
});
|