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