Test basic creation of a PaymentRequest object with an Apple Pay payment method.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


Testing PaymentRequest

PASS new PaymentRequest(null, null) threw exception TypeError: Value is not a sequence.
PASS new PaymentRequest([validPaymentMethod()], validPaymentDetails()) did not throw exception.

Testing ApplePayRequest.countryCode

SETUP: paymentMethod = validPaymentMethod(); delete paymentMethod.data.countryCode;
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Member ApplePayRequest.countryCode is required and must be an instance of DOMString.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.countryCode = 'invalid';
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: "invalid" is not a valid country code..

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.countryCode = '';
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: "" is not a valid country code..

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.countryCode = null;
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: "null" is not a valid country code..

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.countryCode = undefined;
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Member ApplePayRequest.countryCode is required and must be an instance of DOMString.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.countryCode = 7;
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: "7" is not a valid country code..

Testing ApplePayRequest.supportedNetworks

SETUP: paymentMethod = validPaymentMethod(); delete paymentMethod.data.supportedNetworks;
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Member ApplePayRequest.supportedNetworks is required and must be an instance of sequence.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.supportedNetworks = '';
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Value is not a sequence.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.supportedNetworks = null;
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Value is not a sequence.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.supportedNetworks = undefined;
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Member ApplePayRequest.supportedNetworks is required and must be an instance of sequence.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.supportedNetworks = 7;
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Value is not a sequence.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.supportedNetworks = [];
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: At least one supported network must be provided..

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.supportedNetworks = ['invalidNetwork'];
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: "invalidNetwork" is not a valid payment network..

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.supportedNetworks = ['invalidNetwork', 'visa'];
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: "invalidNetwork" is not a valid payment network..

Testing ApplePayRequest.merchantCapabilities

SETUP: paymentMethod = validPaymentMethod(); delete paymentMethod.data.merchantCapabilities;
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Member ApplePayRequest.merchantCapabilities is required and must be an instance of sequence.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.merchantCapabilities = '';
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Value is not a sequence.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.merchantCapabilities = null;
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Value is not a sequence.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.merchantCapabilities = undefined;
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Member ApplePayRequest.merchantCapabilities is required and must be an instance of sequence.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.merchantCapabilities = 7;
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Value is not a sequence.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.merchantCapabilities = [];
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: At least one merchant capability must be provided..

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.merchantCapabilities = ['invalidCapability'];
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Type error.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.merchantCapabilities = ['invalidCapability', 'supports3DS'];
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Type error.

Testing ApplePayRequest.requiredBillingContactFields

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.requiredBillingContactFields = '';
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Value is not a sequence.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.requiredBillingContactFields = null;
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Value is not a sequence.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.requiredBillingContactFields = 7;
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Value is not a sequence.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.requiredBillingContactFields = { };
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Type error.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.requiredBillingContactFields = [''];
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Type error.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.requiredBillingContactFields = [null];
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Type error.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.requiredBillingContactFields = [undefined];
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Type error.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.requiredBillingContactFields = [{}];
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Type error.

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.requiredBillingContactFields = ['invalid'];
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with TypeError: Type error.

Testing ApplePayRequest.billingContact

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.billingContact = '';
PASS new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with InvalidStateError: The object is in an invalid state..

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.billingContact = 7;
PASS new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with InvalidStateError: The object is in an invalid state..

Testing ApplePayRequest.applicationData

SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.applicationData = { toString: function() { throw '"Error in toString"'; } };
PASS new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise  with InvalidStateError: The object is in an invalid state..

Testing PaymentDetails.total

SETUP: paymentDetails = validPaymentDetails(); delete paymentDetails.total;
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Member PaymentDetailsInit.total is required and must be an instance of PaymentItem.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.total = '';
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Type error.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.total = null;
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Member PaymentItem.amount is required and must be an instance of PaymentCurrencyAmount.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.total = undefined;
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Member PaymentDetailsInit.total is required and must be an instance of PaymentItem.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.total = 7;
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Type error.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.total = [];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Member PaymentItem.amount is required and must be an instance of PaymentCurrencyAmount.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.total = { };
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Member PaymentItem.amount is required and must be an instance of PaymentCurrencyAmount.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.total = { label: 'label' };
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Member PaymentItem.amount is required and must be an instance of PaymentCurrencyAmount.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.total = { label: 'label', amount: 'amount' };
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Type error.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.total = { label: 'label', amount: { currency: '', value: '0' } };
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception RangeError: "" is not a valid currency code..

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.total = { label: 'label', amount: { currency: 'USD', value: '0' } };
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() rejected promise  with TypeError: Total amount must be greater than zero..

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.total = { label: 'label', amount: { currency: 'USD', value:'-10.00'} };
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Total currency values cannot be negative..

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.total = { label: 'label', amount: { currency: 'USD', value: '10000000000.00' } };
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() rejected promise  with TypeError: Total amount is too big..

Testing PaymentDetails.displayItems

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.displayItems = '';
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Value is not a sequence.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.displayItems = null;
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Value is not a sequence.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.displayItems = 7;
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Value is not a sequence.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.displayItems = { };
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Type error.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.displayItems = [''];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Type error.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.displayItems = [null];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Member PaymentItem.amount is required and must be an instance of PaymentCurrencyAmount.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.displayItems = [undefined];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Member PaymentItem.amount is required and must be an instance of PaymentCurrencyAmount.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.displayItems = [{}];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Member PaymentItem.amount is required and must be an instance of PaymentCurrencyAmount.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.displayItems = [{ label: 'label' }];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Member PaymentItem.amount is required and must be an instance of PaymentCurrencyAmount.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.displayItems = [{ label: 'label', amount: '' }];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Type error.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.displayItems = [{ label: 'label', amount: '10.00', type: 'invalid' }];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Type error.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.displayItems = [{ label: 'label', amount: { currency: 'EUR', value: '10.00' } }];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() rejected promise  with TypeError: "EUR" does not match the expected currency of "USD". Apple Pay requires all PaymentCurrencyAmounts to use the same currency code..
Testing PaymentDetails.shippingOptions

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = '';
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Value is not a sequence.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = 'invalid';
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Value is not a sequence.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = null;
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Value is not a sequence.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = 7;
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Value is not a sequence.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = { };
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Type error.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = [{ }];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Member PaymentShippingOption.amount is required and must be an instance of PaymentCurrencyAmount.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = [{ amount: '', }];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Type error.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = [{ amount: '', detail: '' }];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Type error.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = [{ amount: '', detail: '', identifier: '' }];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Type error.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = [{ amount: '', detail: '', identifier: '', label: '' }];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Type error.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = [{ amount: '-1', detail: '', identifier: '', label: '' }];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Type error.

SETUP: paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = [{ amount: { currency: 'EUR', value: '10.00' }, id: '', label: '' }];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() rejected promise  with TypeError: "EUR" does not match the expected currency of "USD". Apple Pay requires all PaymentCurrencyAmounts to use the same currency code..
Testing PaymentOptions

SETUP: paymentOptions = {}; paymentOptions.shippingType = '';
PASS new PaymentRequest([validPaymentMethod()], validPaymentDetails(), paymentOptions); request.show() threw exception TypeError: Type error.

SETUP: paymentOptions = {}; paymentOptions.shippingType = 'invalid';
PASS new PaymentRequest([validPaymentMethod()], validPaymentDetails(), paymentOptions); request.show() threw exception TypeError: Type error.

SETUP: paymentOptions = {}; paymentOptions.shippingType = null;
PASS new PaymentRequest([validPaymentMethod()], validPaymentDetails(), paymentOptions); request.show() threw exception TypeError: Type error.

SETUP: paymentOptions = {}; paymentOptions.shippingType = 7;
PASS new PaymentRequest([validPaymentMethod()], validPaymentDetails(), paymentOptions); request.show() threw exception TypeError: Type error.

SETUP: paymentOptions = {}; paymentOptions.shippingType = { };
PASS new PaymentRequest([validPaymentMethod()], validPaymentDetails(), paymentOptions); request.show() threw exception TypeError: Type error.

PASS successfullyParsed is true

TEST COMPLETE

