# frozen_string_literal: true
require "test_helper"
require "payment_methods"
class PaymentMethodsTest < Minitest::Test
def test_for_braintree_customer
braintree_customer = Minitest::Mock.new
braintree_customer.expect(:payment_methods, [
OpenStruct.new(card_type: "Test", last_4: "1234")
])
methods = PaymentMethods.for_braintree_customer(braintree_customer)
assert_kind_of PaymentMethods, methods
end
def test_for_braintree_customer_no_methods
braintree_customer = Minitest::Mock.new
braintree_customer.expect(:payment_methods, [])
methods = PaymentMethods.for_braintree_customer(braintree_customer)
assert_raises do
methods.to_list_single
end
end
def test_default_payment_method
methods = PaymentMethods.new([
OpenStruct.new(card_type: "Test", last_4: "1234"),
OpenStruct.new(card_type: "Test", last_4: "1234", default?: true)
])
assert_equal "1", methods.default_payment_method
end
def test_to_options
methods = PaymentMethods.new([
OpenStruct.new(card_type: "Test", last_4: "1234")
])
assert_equal(
[
{ value: "0", label: "Test 1234" }
],
methods.to_options
)
end
def test_to_list_single
methods = PaymentMethods.new([
OpenStruct.new(card_type: "Test", last_4: "1234")
])
assert_equal(
{
var: "payment_method",
type: "list-single",
label: "Credit card to pay with",
required: true,
value: "",
options: [
{ value: "0", label: "Test 1234" }
]
},
methods.to_list_single
)
end
class EmptyTest < Minitest::Test
def test_to_list_single
assert_raises do
PaymentMethods::Empty.new.to_list_single
end
end
end
end