# frozen_string_literal: true
require "test_helper"
require "customer"
Customer::REDIS = Minitest::Mock.new
Customer::DB = Minitest::Mock.new
class CustomerTest < Minitest::Test
def test_for_jid
Customer::REDIS.expect(
:get,
EMPromise.resolve(1),
["jmp_customer_id-test@example.com"]
)
Customer::DB.expect(
:query_defer,
EMPromise.resolve([{ balance: 1234, plan_name: "test_usd" }]),
[String, [1]]
)
customer = Customer.for_jid("test@example.com").sync
assert_kind_of Customer, customer
assert_equal 1234, customer.balance
assert_equal "merchant_usd", customer.merchant_account
end
em :test_for_jid
def test_for_jid_not_found
Customer::REDIS.expect(
:get,
EMPromise.resolve(nil),
["jmp_customer_id-test2@example.com"]
)
assert_raises do
Customer.for_jid("test2@example.com").sync
end
end
em :test_for_jid_not_found
def test_for_customer_id_not_found
Customer::DB.expect(
:query_defer,
EMPromise.resolve([]),
[String, [7357]]
)
customer = Customer.for_customer_id(7357).sync
assert_equal BigDecimal.new(0), customer.balance
end
em :test_for_customer_id_not_found
end