blob: ec9b5f9c36585390d0f6f5df55688ff1b0362f6f [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/payments/core/payment_currency_amount.h"
#include "base/values.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace payments {
// Tests the success case when populating a PaymentCurrencyAmount from a
// dictionary.
TEST(PaymentRequestTest, PaymentCurrencyAmountFromDictionaryValueSuccess) {
mojom::PaymentCurrencyAmount expected;
expected.currency = "AUD";
expected.value = "-438.23";
base::DictionaryValue amount_dict;
amount_dict.SetString("currency", "AUD");
amount_dict.SetString("value", "-438.23");
mojom::PaymentCurrencyAmount actual;
EXPECT_TRUE(PaymentCurrencyAmountFromDictionaryValue(amount_dict, &actual));
EXPECT_TRUE(expected.Equals(actual));
EXPECT_TRUE(PaymentCurrencyAmountFromDictionaryValue(amount_dict, &actual));
EXPECT_TRUE(expected.Equals(actual));
}
// Tests the failure case when populating a PaymentCurrencyAmount from a
// dictionary.
TEST(PaymentRequestTest, PaymentCurrencyAmountFromDictionaryValueFailure) {
// Both a currency and a value are required.
mojom::PaymentCurrencyAmount actual;
base::DictionaryValue amount_dict;
EXPECT_FALSE(PaymentCurrencyAmountFromDictionaryValue(amount_dict, &actual));
// Both values must be strings.
amount_dict.SetInteger("currency", 842);
amount_dict.SetString("value", "-438.23");
EXPECT_FALSE(PaymentCurrencyAmountFromDictionaryValue(amount_dict, &actual));
amount_dict.SetString("currency", "NZD");
amount_dict.SetDouble("value", -438.23);
EXPECT_FALSE(PaymentCurrencyAmountFromDictionaryValue(amount_dict, &actual));
}
// Tests that two currency amount objects are not equal if their property values
// differ or one is missing a value present in the other, and equal otherwise.
TEST(PaymentRequestTest, PaymentCurrencyAmountEquality) {
mojom::PaymentCurrencyAmount currency_amount1;
mojom::PaymentCurrencyAmount currency_amount2;
EXPECT_TRUE(currency_amount1.Equals(currency_amount2));
currency_amount1.currency = "HKD";
EXPECT_FALSE(currency_amount1.Equals(currency_amount2));
currency_amount2.currency = "USD";
EXPECT_FALSE(currency_amount1.Equals(currency_amount2));
currency_amount2.currency = "HKD";
EXPECT_TRUE(currency_amount1.Equals(currency_amount2));
currency_amount1.value = "49.89";
EXPECT_FALSE(currency_amount1.Equals(currency_amount2));
currency_amount2.value = "49.99";
EXPECT_FALSE(currency_amount1.Equals(currency_amount2));
currency_amount2.value = "49.89";
EXPECT_TRUE(currency_amount1.Equals(currency_amount2));
}
// Tests that serializing a default PaymentCurrencyAmount yields the expected
// result.
TEST(PaymentRequestTest, EmptyPaymentCurrencyAmountDictionary) {
base::DictionaryValue expected_value;
expected_value.SetString("currency", "");
expected_value.SetString("value", "");
mojom::PaymentCurrencyAmount payment_currency_amount;
EXPECT_TRUE(expected_value.Equals(
PaymentCurrencyAmountToDictionaryValue(payment_currency_amount).get()));
}
// Tests that serializing a populated PaymentCurrencyAmount yields the expected
// result.
TEST(PaymentRequestTest, PopulatedCurrencyAmountDictionary) {
base::DictionaryValue expected_value;
expected_value.SetString("currency", "AUD");
expected_value.SetString("value", "-438.23");
mojom::PaymentCurrencyAmount payment_currency_amount;
payment_currency_amount.currency = "AUD";
payment_currency_amount.value = "-438.23";
EXPECT_TRUE(expected_value.Equals(
PaymentCurrencyAmountToDictionaryValue(payment_currency_amount).get()));
}
} // namespace payments