135 lines
4.6 KiB
JavaScript
135 lines
4.6 KiB
JavaScript
|
var assert = require('chai').assert;
|
||
|
var request = require('request-promise');
|
||
|
var config = require('../it.config');
|
||
|
var chai = require('chai');
|
||
|
var chaiSubset = require('chai-subset');
|
||
|
chai.use(chaiSubset);
|
||
|
|
||
|
describe('Edit product bundle', function () {
|
||
|
this.timeout(45000);
|
||
|
|
||
|
var variantPid1 = 'womens-jewelry-bundleM'; // womens jewelry bundle
|
||
|
var qty1 = 1;
|
||
|
|
||
|
var newQty1;
|
||
|
|
||
|
var prodIdUuidMap = {};
|
||
|
var variantUuid1;
|
||
|
|
||
|
var cookieJar = request.jar();
|
||
|
var myRequest = {
|
||
|
url: '',
|
||
|
method: 'POST',
|
||
|
rejectUnauthorized: false,
|
||
|
resolveWithFullResponse: true,
|
||
|
jar: cookieJar,
|
||
|
headers: {
|
||
|
'X-Requested-With': 'XMLHttpRequest'
|
||
|
}
|
||
|
};
|
||
|
|
||
|
before(function () {
|
||
|
// ----- adding product #1:
|
||
|
myRequest.url = config.baseUrl + '/Cart-AddProduct';
|
||
|
myRequest.form = {
|
||
|
pid: variantPid1,
|
||
|
quantity: qty1
|
||
|
};
|
||
|
|
||
|
return request(myRequest)
|
||
|
// ----- select a shipping method. Need to have shipping method so that shipping cost, sales tax,
|
||
|
// and grand total can be calculated
|
||
|
.then(function () {
|
||
|
var shipMethodId = '001'; // 001 = Ground
|
||
|
|
||
|
myRequest.method = 'POST';
|
||
|
myRequest.url = config.baseUrl + '/Cart-SelectShippingMethod?methodID=' + shipMethodId;
|
||
|
return request(myRequest);
|
||
|
})
|
||
|
|
||
|
// ----- Get UUID for each product line items
|
||
|
.then(function (response4) {
|
||
|
var bodyAsJson = JSON.parse(response4.body);
|
||
|
|
||
|
prodIdUuidMap[bodyAsJson.items[0].id] = bodyAsJson.items[0].UUID;
|
||
|
|
||
|
variantUuid1 = prodIdUuidMap[variantPid1];
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should update the bundle quantity', function () {
|
||
|
newQty1 = 3;
|
||
|
var newTotalQty = newQty1;
|
||
|
var expectQty1 = newQty1;
|
||
|
|
||
|
|
||
|
var expectedUpdateRep = {
|
||
|
'action': 'Cart-EditProductLineItem',
|
||
|
'cartModel': {
|
||
|
'totals': {
|
||
|
'subTotal': '$339.00',
|
||
|
'grandTotal': '$397.94',
|
||
|
'totalTax': '$18.95',
|
||
|
'totalShippingCost': '$39.99'
|
||
|
},
|
||
|
'items': [
|
||
|
{
|
||
|
'id': variantPid1,
|
||
|
'productName': 'Turquoise Jewelry Bundle',
|
||
|
'productType': 'bundle',
|
||
|
'price': {
|
||
|
'sales': {
|
||
|
'currency': 'USD',
|
||
|
'value': 113,
|
||
|
'formatted': '$113.00',
|
||
|
'decimalPrice': '113.00'
|
||
|
},
|
||
|
'list': null
|
||
|
},
|
||
|
'availability': {
|
||
|
'messages': [
|
||
|
'2 Item(s) in Stock',
|
||
|
'1 item(s) are available for pre-order'
|
||
|
],
|
||
|
'inStockDate': null
|
||
|
},
|
||
|
'available': true,
|
||
|
'UUID': variantUuid1,
|
||
|
'quantity': expectQty1,
|
||
|
'priceTotal': {
|
||
|
'price': '$339.00'
|
||
|
}
|
||
|
}
|
||
|
],
|
||
|
'numItems': newTotalQty,
|
||
|
'locale': 'en_US',
|
||
|
'resources': {
|
||
|
'numberOfItems': newTotalQty + ' Items',
|
||
|
'emptyCartMsg': 'Your Shopping Cart is Empty'
|
||
|
}
|
||
|
},
|
||
|
'newProductId': variantPid1
|
||
|
};
|
||
|
|
||
|
myRequest.method = 'POST';
|
||
|
myRequest.url = config.baseUrl + '/Cart-EditProductLineItem';
|
||
|
myRequest.form = {
|
||
|
uuid: variantUuid1,
|
||
|
pid: variantPid1,
|
||
|
quantity: newQty1
|
||
|
};
|
||
|
|
||
|
return request(myRequest)
|
||
|
.then(function (updateRsp) {
|
||
|
assert.equal(updateRsp.statusCode, 200, 'Expected statusCode to be 200.');
|
||
|
|
||
|
var bodyAsJson = JSON.parse(updateRsp.body);
|
||
|
|
||
|
assert.containSubset(bodyAsJson.cartModel.totals, expectedUpdateRep.cartModel.totals);
|
||
|
assert.containSubset(bodyAsJson.cartModel.items, expectedUpdateRep.cartModel.items);
|
||
|
assert.equal(bodyAsJson.cartModel.numItems, expectedUpdateRep.cartModel.numItems);
|
||
|
assert.containSubset(bodyAsJson.cartModel.resources, expectedUpdateRep.cartModel.resources);
|
||
|
});
|
||
|
});
|
||
|
});
|