test_command_list.rb

 1# frozen_string_literal: true
 2
 3require "test_helper"
 4require "command_list"
 5
 6CommandList::Customer = Minitest::Mock.new
 7CommandList::REDIS = Minitest::Mock.new
 8
 9class CommandListTest < Minitest::Test
10	def test_for_no_customer
11		CommandList::Customer.expect(
12			:for_jid,
13			EMPromise.reject("not found"),
14			["none"]
15		)
16		assert_instance_of CommandList, CommandList.for("none").sync
17	end
18	em :test_for_no_customer
19
20	def test_for_unregistered
21		CommandList::Customer.expect(
22			:for_jid,
23			EMPromise.resolve(OpenStruct.new(registered?: false)),
24			["unregistered"]
25		)
26		assert_instance_of CommandList, CommandList.for("unregistered").sync
27	end
28	em :test_for_unregistered
29
30	def test_for_registered
31		CommandList::REDIS.expect(
32			:get,
33			EMPromise.resolve(nil),
34			["catapult_fwd-1"]
35		)
36		CommandList::Customer.expect(
37			:for_jid,
38			EMPromise.resolve(OpenStruct.new(registered?: OpenStruct.new(phone: "1"))),
39			["registered"]
40		)
41		assert_instance_of CommandList::Registered, CommandList.for("registered").sync
42	end
43	em :test_for_registered
44
45	def test_for_registered_with_fwd
46		CommandList::REDIS.expect(
47			:get,
48			EMPromise.resolve("tel:1"),
49			["catapult_fwd-1"]
50		)
51		CommandList::Customer.expect(
52			:for_jid,
53			EMPromise.resolve(OpenStruct.new(registered?: OpenStruct.new(phone: "1"))),
54			["registered"]
55		)
56		assert_instance_of(
57			CommandList::RegisteredAndHasForwarding,
58			CommandList.for("registered").sync
59		)
60	end
61	em :test_for_registered_with_fwd
62end