blob: 78535f1775e7c1fd6776de82679d0c5813539807 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="/js-test-resources/ui-helper.js"></script>
<script src="/resources/js-test-pre.js"></script>
<script src="/resources/payment-request.js"></script>
</head>
<body>
<script>
description("Test ApplePayRequest.shippingContact.");
window.jsTestIsAsync = true;
const expectedGivenName = 'Web';
const expectedFamilyName = 'Test';
const expectedName = [expectedGivenName, expectedFamilyName].join(' ');
const expectedEmailAddress = 'wpt@w3.org';
const expectedPhoneNumber = '+12345678910';
const expectedAddressLines = ['1 wpt street'];
const expectedSubLocality = 'AA';
const expectedLocality = 'BB';
const expectedPostalCode = '12345';
const expectedSubAdministrativeArea = 'CC';
const expectedAdministrativeArea = 'DD';
const expectedCountry = 'United States';
const expectedCountryCode = 'US';
function validShippingContact() {
return {
phoneNumber: expectedPhoneNumber,
emailAddress: expectedEmailAddress,
givenName: expectedGivenName,
familyName: expectedFamilyName,
phoneticGivenName: expectedGivenName,
phoneticFamilyName: expectedFamilyName,
addressLines: expectedAddressLines,
subLocality: expectedSubLocality,
locality: expectedLocality,
postalCode: expectedPostalCode,
subAdministrativeArea: expectedSubAdministrativeArea,
administrativeArea: expectedAdministrativeArea,
country: expectedCountry,
countryCode: expectedCountryCode,
};
}
function validPaymentMethod(version, shippingContact) {
return {
supportedMethods: 'https://apple.com/apple-pay',
data: {
version,
merchantIdentifier: '',
countryCode: 'US',
supportedNetworks: ['visa', 'masterCard'],
merchantCapabilities: ['supports3DS'],
shippingContact,
},
}
}
function validPaymentDetails() {
return {
total: {
label: 'Total',
amount: {
currency: 'USD',
value: '10.00',
},
},
};
}
function validPaymentOptions() {
return {
requestPayerName: true,
requestPayerEmail: true,
requestPayerPhone: true,
requestShipping: true,
};
}
async function runTests() {
await new Promise((resolve, reject) => {
debug("Test setting required contact fields in a version 3 request.");
var paymentMethod = validPaymentMethod(3, validShippingContact());
paymentMethod.data.requiredShippingContactFields = ["phoneticName"];
var paymentRequest = new PaymentRequest([paymentMethod], validPaymentDetails(), validPaymentOptions());
activateThen(() => {
paymentRequest.show().then((response) => {
shouldBe("internals.mockPaymentCoordinator.requiredBillingContactFields.name", "false");
shouldBe("internals.mockPaymentCoordinator.requiredBillingContactFields.phoneticName", "false");
shouldBe("internals.mockPaymentCoordinator.requiredBillingContactFields.email", "false");
shouldBe("internals.mockPaymentCoordinator.requiredBillingContactFields.phone", "false");
shouldBe("internals.mockPaymentCoordinator.requiredBillingContactFields.postalAddress", "false");
shouldBe("internals.mockPaymentCoordinator.requiredShippingContactFields.name", "true");
shouldBe("internals.mockPaymentCoordinator.requiredShippingContactFields.phoneticName", "true");
shouldBe("internals.mockPaymentCoordinator.requiredShippingContactFields.email", "true");
shouldBe("internals.mockPaymentCoordinator.requiredShippingContactFields.phone", "true");
shouldBe("internals.mockPaymentCoordinator.requiredShippingContactFields.postalAddress", "true");
response.complete("success");
resolve();
});
internals.mockPaymentCoordinator.acceptPayment();
});
});
debug("");
await new Promise((resolve, reject) => {
debug("Test setting a default shipping contact in a version 3 request.");
var paymentRequest = new PaymentRequest([validPaymentMethod(3, validShippingContact())], validPaymentDetails(), validPaymentOptions());
activateThen(() => {
paymentRequest.show().then((response) => {
window.paymentResponse = response;
shouldBe("paymentResponse.details.shippingContact.phoneticGivenName", "expectedGivenName");
shouldBe("paymentResponse.details.shippingContact.phoneticFamilyName", "expectedFamilyName");
response.complete("success");
resolve();
});
internals.mockPaymentCoordinator.acceptPayment();
});
});
debug("");
finishJSTest();
}
runTests();
</script>
<script src="/resources/js-test-post.js"></script>
</body>
</html>