1# frozen_string_literal: true
2
3require "admin_command"
4
5BackendSgx::IQ_MANAGER = Minitest::Mock.new
6Customer::BLATHER = Minitest::Mock.new
7
8class AdminCommandTest < Minitest::Test
9 def admin_command(tel="+15556667777")
10 sgx = Minitest::Mock.new(OpenStruct.new(
11 registered?: OpenStruct.new(phone: tel)
12 ))
13 [sgx, AdminCommand.new(customer(sgx: sgx), CustomerRepo.new)]
14 end
15
16 def test_action_cancel_account
17 sgx, admin = admin_command
18
19 Customer::BLATHER.expect(
20 :<<,
21 EMPromise.resolve(nil),
22 [
23 Matching.new do |m|
24 assert_equal "Your JMP account has been cancelled.", m.body
25 assert_equal "test@example.net", m.to.to_s
26 assert_equal "notify_from@component", m.from.to_s
27 end
28 ]
29 )
30
31 Customer::BLATHER.expect(
32 :<<,
33 EMPromise.resolve(nil),
34 [
35 Matching.new do |iq|
36 assert iq.remove?
37 assert_equal "test@example.net", iq.to.to_s
38 assert_equal "component", iq.from.to_s
39 end
40 ]
41 )
42
43 sgx.expect(:deregister!, EMPromise.resolve(nil))
44
45 stub_request(
46 :post,
47 "https://dashboard.bandwidth.com/v1.0/accounts//disconnects"
48 ).with(
49 body: {
50 name: "test",
51 DisconnectTelephoneNumberOrderType: {
52 TelephoneNumberList: {
53 TelephoneNumber: "5556667777"
54 }
55 }
56 }.to_xml(indent: 0, root: "DisconnectTelephoneNumberOrder")
57 ).to_return(status: 200, body: "")
58
59 admin.action_cancel_account.sync
60
61 assert_mock sgx
62 assert_mock BackendSgx::IQ_MANAGER
63 assert_mock Customer::BLATHER
64 end
65 em :test_action_cancel_account
66
67 def test_action_cancel_account_keep_number
68 sgx, admin = admin_command("+15566667777")
69
70 Customer::BLATHER.expect(
71 :<<,
72 EMPromise.resolve(nil),
73 [
74 Matching.new do |m|
75 assert_equal "Your JMP account has been cancelled.", m.body
76 assert_equal "test@example.net", m.to.to_s
77 assert_equal "notify_from@component", m.from.to_s
78 end
79 ]
80 )
81
82 Customer::BLATHER.expect(
83 :<<,
84 EMPromise.resolve(nil),
85 [
86 Matching.new do |iq|
87 assert iq.remove?
88 assert_equal "test@example.net", iq.to.to_s
89 assert_equal "component", iq.from.to_s
90 end
91 ]
92 )
93
94 sgx.expect(:deregister!, EMPromise.resolve(nil))
95
96 stub_request(
97 :post,
98 "https://dashboard.bandwidth.com/v1.0/accounts/moveto/moveTns"
99 ).with(
100 body: {
101 CustomerOrderId: "test",
102 SourceAccountId: "test_bw_account",
103 SiteId: "movetosite",
104 SipPeerId: "movetopeer",
105 TelephoneNumbers: { TelephoneNumber: "5566667777" }
106 }.to_xml(indent: 0, root: "MoveTnsOrder")
107 ).to_return(status: 200, body: "")
108
109 admin.action_cancel_account.sync
110
111 assert_mock sgx
112 assert_mock BackendSgx::IQ_MANAGER
113 assert_mock Customer::BLATHER
114 end
115 em :test_action_cancel_account_keep_number
116end