1# frozen_string_literal: true
 2
 3require "trust_level_repo"
 4
 5class TrustLevelRepoTest < Minitest::Test
 6	def test_manual_tomb
 7		trust_level = TrustLevelRepo.new(
 8			db: FakeDB.new,
 9			redis: FakeRedis.new(
10				"jmp_customer_trust_level-test" => "Tomb"
11			)
12		).find(customer(plan_name: "test_usd")).sync
13		assert_equal "Manual(Tomb)", trust_level.to_s
14	end
15	em :test_manual_tomb
16
17	def test_manual_basement
18		trust_level = TrustLevelRepo.new(
19			db: FakeDB.new,
20			redis: FakeRedis.new(
21				"jmp_customer_trust_level-test" => "Basement"
22			)
23		).find(customer(plan_name: "test_usd")).sync
24		assert_equal "Manual(Basement)", trust_level.to_s
25	end
26	em :test_manual_basement
27
28	def test_manual_customer
29		trust_level = TrustLevelRepo.new(
30			db: FakeDB.new,
31			redis: FakeRedis.new(
32				"jmp_customer_trust_level-test" => "Customer"
33			)
34		).find(customer(plan_name: "test_usd")).sync
35		assert_equal "Manual(Customer)", trust_level.to_s
36	end
37	em :test_manual_customer
38
39	def test_manual_paragon
40		trust_level = TrustLevelRepo.new(
41			db: FakeDB.new,
42			redis: FakeRedis.new(
43				"jmp_customer_trust_level-test" => "Paragon"
44			)
45		).find(customer(plan_name: "test_usd")).sync
46		assert_equal "Manual(Paragon)", trust_level.to_s
47	end
48	em :test_manual_paragon
49
50	def test_manual_unknown
51		trust_level = TrustLevelRepo.new(
52			db: FakeDB.new,
53			redis: FakeRedis.new(
54				"jmp_customer_trust_level-test" => "UNKNOWN"
55			)
56		).find(customer(plan_name: "test_usd")).sync
57		assert_equal "Manual(Customer)", trust_level.to_s
58	end
59	em :test_manual_unknown
60
61	def test_new_customer
62		trust_level = TrustLevelRepo.new(
63			db: FakeDB.new,
64			redis: FakeRedis.new
65		).find(customer(plan_name: "test_usd")).sync
66		assert_kind_of TrustLevel::Basement, trust_level
67	end
68	em :test_new_customer
69
70	def test_regular_customer
71		trust_level = TrustLevelRepo.new(
72			db: FakeDB.new(["test"] => [{ "settled_amount" => 15 }]),
73			redis: FakeRedis.new
74		).find(customer(plan_name: "test_usd")).sync
75		assert_kind_of TrustLevel::Customer, trust_level
76	end
77	em :test_regular_customer
78
79	def test_settled_customer
80		trust_level = TrustLevelRepo.new(
81			db: FakeDB.new(["test"] => [{ "settled_amount" => 61 }]),
82			redis: FakeRedis.new
83		).find(customer(plan_name: "test_usd")).sync
84		assert_kind_of TrustLevel::Paragon, trust_level
85	end
86	em :test_settled_customer
87end