| Index: third_party/WebKit/LayoutTests/payments/payment-request-interface.html
|
| diff --git a/third_party/WebKit/LayoutTests/payments/payment-request-interface.html b/third_party/WebKit/LayoutTests/payments/payment-request-interface.html
|
| index d543737711771a3c64596fe152f9c7dd91fe341f..0743981fcc4d763e6b8c38e760ef18d7d5581313 100644
|
| --- a/third_party/WebKit/LayoutTests/payments/payment-request-interface.html
|
| +++ b/third_party/WebKit/LayoutTests/payments/payment-request-interface.html
|
| @@ -25,15 +25,23 @@ function buildItem(optionalSubstituteKeyValuePair) {
|
|
|
| function buildDetails(optionalDetailName, optionalSubstituteKeyValuePair) {
|
| var details = {};
|
| - var detailNames = ['displayItems', 'shippingOptions'];
|
| + var detailNames = ['total', 'displayItems', 'shippingOptions'];
|
|
|
| - assert_true(!optionalDetailName || detailNames.indexOf(optionalDetailName) >= 0, 'Detail name "' + optionalDetailName + '" should be either "displayItems" or "shippingOptions".');
|
| + assert_true(!optionalDetailName || detailNames.indexOf(optionalDetailName) >= 0, 'Detail name "' + optionalDetailName + '" should be either "total", "displayItems", or "shippingOptions".');
|
|
|
| for (var i in detailNames) {
|
| if (optionalDetailName == detailNames[i]) {
|
| - details[detailNames[i]] = [buildItem(optionalSubstituteKeyValuePair)];
|
| + if (detailNames[i] == 'total') {
|
| + details[detailNames[i]] = buildItem(optionalSubstituteKeyValuePair);
|
| + } else {
|
| + details[detailNames[i]] = [buildItem(optionalSubstituteKeyValuePair)];
|
| + }
|
| } else {
|
| - details[detailNames[i]] = [buildItem()];
|
| + if (detailNames[i] == 'total') {
|
| + details[detailNames[i]] = buildItem();
|
| + } else {
|
| + details[detailNames[i]] = [buildItem()];
|
| + }
|
| }
|
| }
|
|
|
| @@ -106,15 +114,42 @@ test(function() {
|
| }, 'Shipping option identifier should default to the single provided option.');
|
|
|
| test(function() {
|
| - var request = new PaymentRequest(['foo'], {'displayItems': [buildItem()]}, {'requestShipping': true});
|
| + var request = new PaymentRequest(['foo'], {'total': buildItem(), 'displayItems': [buildItem()]}, {'requestShipping': true});
|
| assert_equals(null, request.shippingOption);
|
| }, 'Shipping option identifier should be null when no shipping options are provided.');
|
|
|
| test(function() {
|
| - var request = new PaymentRequest(['foo'], {'displayItems': [buildItem()], 'shippingOptions': [buildItem({'id': 'standard'}), buildItem({'id': 'express'})]}, {'requestShipping': true});
|
| + var request = new PaymentRequest(['foo'], {'total': buildItem(), 'displayItems': [buildItem()], 'shippingOptions': [buildItem({'id': 'standard'}), buildItem({'id': 'express'})]}, {'requestShipping': true});
|
| assert_equals(null, request.shippingOption);
|
| }, 'Shipping option identifier should be null at first when multiple shipping options are provided.');
|
|
|
| +test(function() {
|
| + new PaymentRequest(['foo'], {'total': buildItem(), 'displayItems': undefined});
|
| +}, 'Undefined display items should not throw.');
|
| +
|
| +test(function() {
|
| + new PaymentRequest(['foo'], {'total': buildItem(), 'displayItems': []});
|
| +}, 'Empty display items should not throw.');
|
| +
|
| +test(function() {
|
| + new PaymentRequest(['foo'], buildDetails('total', {'value': '0'}));
|
| +}, 'Non-negative total value should not throw.');
|
| +
|
| +test(function() {
|
| + assert_throws(new TypeError(), function() {
|
| + new PaymentRequest(['foo'], buildDetails('total', {'value': '-0.01'}));
|
| + });
|
| +}, 'Negative total value should throw a TypeError.');
|
| +
|
| +test(function() {
|
| + new PaymentRequest(['foo'], buildDetails('displayItems', {'value': '-0.01'}));
|
| +}, 'Negative line item value should not throw.');
|
| +
|
| +test(function() {
|
| + assert_throws(new TypeError(), function() {
|
| + new PaymentRequest(['foo'], {'displayItems': [buildItem()]});
|
| + });
|
| +}, 'Absence of total should throw TypeError.');
|
|
|
| generate_tests(assert_throws, [
|
| ['PaymentRequest constructor should throw for incorrect parameter types.', null, function() {
|
| @@ -135,8 +170,11 @@ generate_tests(assert_throws, [
|
| ['Empty details should throw', null, function() {
|
| new PaymentRequest(['foo'], {})
|
| }],
|
| - ['Empty items should throw', null, function() {
|
| - new PaymentRequest(['foo'], {'displayItems': []})
|
| + ['Null items should throw', new TypeError(), function() {
|
| + new PaymentRequest(['foo'], {'total': buildItem(), 'displayItems': null});
|
| + }],
|
| + ['Null shipping options should throw', new TypeError(), function() {
|
| + new PaymentRequest(['foo'], {'total': buildItem(), 'displayItems': [buildItem()], 'shippingOptions': null});
|
| }],
|
| ['Aborting before showing should throw.', null, function() {
|
| new PaymentRequest(['foo'], buildDetails()).abort()
|
| @@ -170,7 +208,7 @@ generate_tests(assert_throws, [
|
| }],
|
| ]);
|
|
|
| -var detailNames = ['displayItems', 'shippingOptions'];
|
| +var detailNames = ['total', 'displayItems', 'shippingOptions'];
|
| for (var i in detailNames) {
|
| generate_tests(assert_throws, [
|
| // Invalid currency code formats.
|
|
|