134 lines
6.0 KiB
JavaScript
134 lines
6.0 KiB
JavaScript
|
|
var assert = require('chai').assert;
|
|
var request = require('request-promise');
|
|
var config = require('../it.config');
|
|
|
|
// Test Case
|
|
// pid=799927767720M
|
|
// 1. Product PDP page contains the promotional messages
|
|
// 2. Add 2 products to Cart, should return approaching order/shipping promotion messages
|
|
// 3. shipping cost and order discount
|
|
// 4. Shipping form updates
|
|
|
|
describe('Approaching order level promotion', function () {
|
|
this.timeout(5000);
|
|
|
|
var mainPid = '25594767M';
|
|
var variantPid = '799927767720M';
|
|
var qty = 2;
|
|
var cookieString;
|
|
var cookieJar = request.jar();
|
|
var UUID;
|
|
var myShippingMethodForm = {
|
|
methodID: '001'
|
|
};
|
|
var myNewShippingMethodForm = {
|
|
methodID: '021'
|
|
};
|
|
var myRequest = {
|
|
url: '',
|
|
method: 'GET',
|
|
rejectUnauthorized: false,
|
|
resolveWithFullResponse: true,
|
|
jar: cookieJar,
|
|
headers: {
|
|
'X-Requested-With': 'XMLHttpRequest'
|
|
}
|
|
};
|
|
var myNewRequest = {
|
|
url: '',
|
|
method: 'GET',
|
|
rejectUnauthorized: false,
|
|
resolveWithFullResponse: true,
|
|
jar: cookieJar,
|
|
headers: {
|
|
'X-Requested-With': 'XMLHttpRequest'
|
|
}
|
|
};
|
|
var myShippingRequest = {
|
|
url: '',
|
|
method: 'POST',
|
|
rejectUnauthorized: false,
|
|
resolveWithFullResponse: true,
|
|
jar: cookieJar,
|
|
headers: {
|
|
'X-Requested-With': 'XMLHttpRequest'
|
|
}
|
|
};
|
|
var orderDiscountMsg = 'Purchase $24.00 or more and receive 20% off on your order';
|
|
var shippingDiscountMsg = 'Purchase $24.00 or more and receive Free Shipping with USPS (7-10 Business Days)';
|
|
|
|
it('1. should return a response containing promotional messages for the order and shipping discounts on PDP', function () {
|
|
myRequest.url = config.baseUrl + '/Product-Variation?pid='
|
|
+ mainPid + '&dwvar_' + mainPid + '_color=BLUJEFB&quantity=1';
|
|
return request(myRequest, function (error, response) {
|
|
var bodyAsJson = JSON.parse(response.body);
|
|
assert.equal(response.statusCode, 200, 'Expected GET Product-Variation statusCode to be 200.');
|
|
assert.isTrue(bodyAsJson.product.promotions[0].calloutMsg === '20% off on your order');
|
|
assert.isTrue(bodyAsJson.product.promotions[1].calloutMsg === 'Free Shipping with USPS (7-10 Business Days)');
|
|
});
|
|
});
|
|
it('2. should return a response containing approaching promotional call out messages', function () {
|
|
// add 2 product to Cart
|
|
myRequest.url = config.baseUrl + '/Cart-AddProduct';
|
|
myRequest.form = {
|
|
pid: variantPid,
|
|
quantity: qty
|
|
};
|
|
myRequest.method = 'POST';
|
|
return request(myRequest)
|
|
.then(function (response) {
|
|
assert.equal(response.statusCode, 200, 'expected add variant to Cart call to return status code 200');
|
|
var bodyAsJson = JSON.parse(response.body);
|
|
UUID = bodyAsJson.cart.items[0].UUID;
|
|
assert.isTrue(bodyAsJson.quantityTotal === 2, 'should have 2 items added to Cart');
|
|
assert.isTrue(bodyAsJson.message === 'Product added to cart');
|
|
cookieString = cookieJar.getCookieString(myRequest.url);
|
|
})
|
|
// select a shipping method with Form is required before going to Cart
|
|
.then(function () {
|
|
myRequest.form = myShippingMethodForm; // Ground Shipping method
|
|
myRequest.method = 'POST';
|
|
myRequest.url = config.baseUrl + '/Cart-SelectShippingMethod';
|
|
var cookie = request.cookie(cookieString);
|
|
cookieJar.setCookie(cookie, myRequest.url);
|
|
return request(myRequest);
|
|
})
|
|
.then(function (response) {
|
|
assert.equal(response.statusCode, 200, 'expected add shipping method to return status code 200');
|
|
var bodyAsJson = JSON.parse(response.body);
|
|
assert.equal(bodyAsJson.approachingDiscounts[0].discountMsg, orderDiscountMsg);
|
|
assert.equal(bodyAsJson.approachingDiscounts[1].discountMsg, shippingDiscountMsg);
|
|
});
|
|
});
|
|
it('3. should return a response with Approaching Order Discount -$30.40 in Cart', function () {
|
|
// update the quantity to 4 to trigger the order level discount
|
|
myNewRequest.url = config.baseUrl + '/Cart-UpdateQuantity?pid=' + variantPid + '&quantity=4&uuid=' + UUID;
|
|
return request(myNewRequest)
|
|
.then(function (response) {
|
|
assert.equal(response.statusCode, 200, 'expected update quantity call to return status code 200');
|
|
var bodyAsJson = JSON.parse(response.body);
|
|
var discounts = bodyAsJson.totals.discounts[0];
|
|
assert.equal(bodyAsJson.totals.orderLevelDiscountTotal.formatted, '$30.40');
|
|
assert.equal(discounts.lineItemText, 'Approaching Order Discount Test');
|
|
assert.equal(discounts.price, '-$30.40');
|
|
assert.equal(discounts.type, 'promotion');
|
|
});
|
|
});
|
|
it('4. should return a response with Approaching Shipping Discount -$7.99 in Cart', function () {
|
|
// update the shipping methods to be USPS to meet the promotion requirement
|
|
myShippingRequest.form = myNewShippingMethodForm; // Ground Shipping method
|
|
myShippingRequest.url = config.baseUrl + '/Cart-SelectShippingMethod';
|
|
return request(myShippingRequest)
|
|
.then(function (response) {
|
|
assert.equal(response.statusCode, 200, 'expected selectShippingMethod call to return status code 200');
|
|
var bodyAsJson = JSON.parse(response.body);
|
|
var discounts = bodyAsJson.totals.discounts[1];
|
|
assert.equal(bodyAsJson.totals.shippingLevelDiscountTotal.formatted, '$7.99');
|
|
assert.equal(discounts.lineItemText, 'Approaching Shipping Discount Test');
|
|
assert.equal(discounts.price, '-$7.99');
|
|
assert.equal(discounts.type, 'promotion');
|
|
});
|
|
});
|
|
});
|