blob: 36d2e9d8a5f7f0e935407ed3f76076db8b914a76 [file] [log] [blame] [edit]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="/js-test-resources/ui-helper.js"></script>
<script src="/js-test-resources/js-test.js"></script>
<script src="/resources/payment-request.js"></script>
</head>
<body>
<script>
description("Tests for providing `features` as part of `ApplePayRequest`.");
window.jsTestIsAsync = true;
function logAndShouldThrow(setup, test) {
return activateThen(() => {
debug("SETUP: " + setup);
eval(setup);
shouldThrow(test);
debug("");
});
}
function logAndShouldNotThrow(setup, test) {
return activateThen(() => {
debug("SETUP: " + setup);
eval(setup);
shouldNotThrow(test);
debug("");
});
}
async function go() {
debug("Testing ApplePayRequest.features")
debug("")
await logAndShouldNotThrow("paymentMethod = validPaymentMethod(); delete paymentMethod.data.features", "new PaymentRequest([paymentMethod], validPaymentDetails())")
await logAndShouldNotThrow("paymentMethod = validPaymentMethod(); paymentMethod.data.features = [ ]", "new PaymentRequest([paymentMethod], validPaymentDetails())")
await logAndShouldNotThrow("paymentMethod = validPaymentMethod(); paymentMethod.data.features = [ 'lineItemPaymentTiming' ]", "new PaymentRequest([paymentMethod], validPaymentDetails())")
await logAndShouldNotThrow("paymentMethod = validPaymentMethod(); paymentMethod.data.features = [ 'lineItemPaymentTiming', 'paymentTimingImmediate' ]", "new PaymentRequest([paymentMethod], validPaymentDetails())")
await logAndShouldThrow("paymentMethod = validPaymentMethod(); paymentMethod.data.features = [ '' ]", "new PaymentRequest([paymentMethod], validPaymentDetails())")
await logAndShouldThrow("paymentMethod = validPaymentMethod(); paymentMethod.data.features = [ 'invalid' ]", "new PaymentRequest([paymentMethod], validPaymentDetails())")
await logAndShouldThrow("paymentMethod = validPaymentMethod(); paymentMethod.data.features = [ 'null' ]", "new PaymentRequest([paymentMethod], validPaymentDetails())")
await logAndShouldThrow("paymentMethod = validPaymentMethod(); paymentMethod.data.features = [ 7 ]", "new PaymentRequest([paymentMethod], validPaymentDetails())")
await logAndShouldThrow("paymentMethod = validPaymentMethod(); paymentMethod.data.features = [ 'lineItemPaymentTiming', '' ]", "new PaymentRequest([paymentMethod], validPaymentDetails())")
await logAndShouldThrow("paymentMethod = validPaymentMethod(); paymentMethod.data.features = [ 'lineItemPaymentTiming', 'invalid' ]", "new PaymentRequest([paymentMethod], validPaymentDetails())")
await logAndShouldThrow("paymentMethod = validPaymentMethod(); paymentMethod.data.features = [ 'lineItemPaymentTiming', 'null' ]", "new PaymentRequest([paymentMethod], validPaymentDetails())")
await logAndShouldThrow("paymentMethod = validPaymentMethod(); paymentMethod.data.features = [ 'lineItemPaymentTiming', 7 ]", "new PaymentRequest([paymentMethod], validPaymentDetails())")
await logAndShouldThrow("paymentMethod = validPaymentMethod(); paymentMethod.data.features = { }", "new PaymentRequest([paymentMethod], validPaymentDetails())")
await logAndShouldThrow("paymentMethod = validPaymentMethod(); paymentMethod.data.features = false", "new PaymentRequest([paymentMethod], validPaymentDetails())")
debug("")
document.querySelector("button").remove();
finishJSTest();
}
window.onload = function() {
UIHelper.activateElement(document.querySelector("button"));
}
</script>
<button onclick='go()'>Go</button>
</body>
</html>