test_customer.rb

 1# frozen_string_literal: true
 2
 3require "test_helper"
 4require "customer"
 5
 6Customer::REDIS = Minitest::Mock.new
 7Customer::DB = Minitest::Mock.new
 8
 9class CustomerTest < Minitest::Test
10	def test_for_jid
11		Customer::REDIS.expect(
12			:get,
13			EMPromise.resolve(1),
14			["jmp_customer_id-test@example.com"]
15		)
16		Customer::DB.expect(
17			:query_defer,
18			EMPromise.resolve([{ balance: 1234, plan_name: "test_usd" }]),
19			[String, [1]]
20		)
21		customer = Customer.for_jid("test@example.com").sync
22		assert_kind_of Customer, customer
23		assert_equal 1234, customer.balance
24		assert_equal "merchant_usd", customer.merchant_account
25	end
26	em :test_for_jid
27
28	def test_for_jid_not_found
29		Customer::REDIS.expect(
30			:get,
31			EMPromise.resolve(nil),
32			["jmp_customer_id-test2@example.com"]
33		)
34		assert_raises do
35			Customer.for_jid("test2@example.com").sync
36		end
37	end
38	em :test_for_jid_not_found
39
40	def test_for_customer_id_not_found
41		Customer::DB.expect(
42			:query_defer,
43			EMPromise.resolve([]),
44			[String, [7357]]
45		)
46		customer = Customer.for_customer_id(7357).sync
47		assert_equal BigDecimal.new(0), customer.balance
48	end
49	em :test_for_customer_id_not_found
50end