blob: 6bb2f385d212a97c4de0f995a0986803a2cffa15 [file] [log] [blame]
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -04001/*
Kateryna Kostiuk41153692023-03-09 14:20:45 -05002 * Copyright (C) 2020-2023 Savoir-faire Linux Inc.
Kateryna Kostiuk1efd0012022-09-13 12:08:36 -04003 *
4 * Author: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 */
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -040020
21import XCTest
22@testable import Ring
23
24class ConferenceMenuItemsManagerTest: XCTestCase {
25
kkostiukd64e5862021-04-20 12:30:14 -040026 func testGetMenuItemsForLocalCallNil() {
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -040027 let manager = ConferenceMenuItemsManager()
28 let conference: CallModel? = nil
29 let active = true
Kateryna Kostiukf940cc32023-06-27 14:07:40 -040030 XCTAssertTrue(manager.getMenuItemsForLocalCall(conference: conference, active: active, isHandRised: true) == [])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -040031 }
32
kkostiukd64e5862021-04-20 12:30:14 -040033 func testGetMenuItemsForeLocalCallWithoutActiveCall() {
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -040034 let manager = ConferenceMenuItemsManager()
35 let conference = CallModel()
36 let active: Bool? = nil
Kateryna Kostiukf940cc32023-06-27 14:07:40 -040037 XCTAssertTrue(manager.getMenuItemsForLocalCall(conference: conference, active: active, isHandRised: true) == [])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -040038 }
39
kkostiukd64e5862021-04-20 12:30:14 -040040 func testGetMenuItemsForLocalCallWithConferenceGridLayout() {
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -040041 let manager = ConferenceMenuItemsManager()
42 let conference = CallModel()
43 conference.layout = .grid
44 let active = true
Kateryna Kostiukf940cc32023-06-27 14:07:40 -040045 XCTAssertTrue(manager.getMenuItemsForLocalCall(conference: conference, active: active, isHandRised: true) == [.lowerHand, .maximize, .muteAudio])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -040046 }
47
kkostiukd64e5862021-04-20 12:30:14 -040048 func testGetMenuItemsForActiveLocalCallWithConferenceOneWithSmalLayout() {
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -040049 let manager = ConferenceMenuItemsManager()
50 let conference = CallModel()
51 conference.layout = .oneWithSmal
52 let active = true
Kateryna Kostiukf940cc32023-06-27 14:07:40 -040053 XCTAssertTrue(manager.getMenuItemsForLocalCall(conference: conference, active: active, isHandRised: true) == [.lowerHand, .maximize, .minimize, .muteAudio])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -040054 }
55
kkostiukd64e5862021-04-20 12:30:14 -040056 func testGetMenuItemsForNotActiveLocalCallWithConferenceOneWithSmalLayout() {
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -040057 let manager = ConferenceMenuItemsManager()
58 let conference = CallModel()
59 conference.layout = .oneWithSmal
60 let active = false
Kateryna Kostiukf940cc32023-06-27 14:07:40 -040061 XCTAssertTrue(manager.getMenuItemsForLocalCall(conference: conference, active: active, isHandRised: true) == [.lowerHand, .maximize, .muteAudio ])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -040062 }
63
kkostiukd64e5862021-04-20 12:30:14 -040064 func testGetMenuItemsForActiveLocalCallWithConferenceOneLayout() {
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -040065 let manager = ConferenceMenuItemsManager()
66 let conference = CallModel()
67 conference.layout = .one
68 let active = true
Kateryna Kostiukf940cc32023-06-27 14:07:40 -040069 XCTAssertTrue(manager.getMenuItemsForLocalCall(conference: conference, active: active, isHandRised: true) == [.lowerHand, .minimize, .muteAudio])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -040070 }
71
kkostiukd64e5862021-04-20 12:30:14 -040072 func testGetMenuItemsForNotActiveLocalCallWithConferenceOneLayout() {
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -040073 let manager = ConferenceMenuItemsManager()
74 let conference = CallModel()
75 conference.layout = .one
76 let active = false
Kateryna Kostiukf940cc32023-06-27 14:07:40 -040077 XCTAssertTrue(manager.getMenuItemsForLocalCall(conference: conference, active: active, isHandRised: true) == [.lowerHand, .maximize, .muteAudio])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -040078 }
79
80 func testGetMenuItemsForNilConference() {
81 let manager = ConferenceMenuItemsManager()
82 let conference: CallModel? = nil
83 let call: CallModel? = CallModel()
84 let active = true
kkostiukd64e5862021-04-20 12:30:14 -040085 let role = RoleInCall.host
86 let isHost = false
Kateryna Kostiukf940cc32023-06-27 14:07:40 -040087 XCTAssertTrue(manager.getMenuItemsFor(call: call, isHost: isHost, conference: conference, active: active, role: role, isHandRised: true) == [])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -040088 }
89
90 func testGetMenuItemsForNilCall() {
91 let manager = ConferenceMenuItemsManager()
92 let conference: CallModel? = CallModel()
93 let call: CallModel? = nil
94 let active = true
kkostiukd64e5862021-04-20 12:30:14 -040095 let role = RoleInCall.host
96 let isHost = false
Kateryna Kostiukf940cc32023-06-27 14:07:40 -040097 XCTAssertTrue(manager.getMenuItemsFor(call: call, isHost: isHost, conference: conference, active: active, role: role, isHandRised: true) == [])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -040098 }
99
100 func testGetMenuItemsWithoutActiveCall() {
101 let manager = ConferenceMenuItemsManager()
102 let conference: CallModel? = CallModel()
103 let call: CallModel? = CallModel()
104 call?.state = .current
kkostiukd64e5862021-04-20 12:30:14 -0400105 let role = RoleInCall.host
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400106 let active: Bool? = nil
kkostiukd64e5862021-04-20 12:30:14 -0400107 let isHost = false
Kateryna Kostiukf940cc32023-06-27 14:07:40 -0400108 XCTAssertTrue(manager.getMenuItemsFor(call: call, isHost: isHost, conference: conference, active: active, role: role, isHandRised: true) == [])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400109 }
110
111 func testGetMenuItemsForConnectingCall() {
112 let manager = ConferenceMenuItemsManager()
113 let conference: CallModel? = CallModel()
114 let call: CallModel? = CallModel()
115 call?.state = .connecting
kkostiukd64e5862021-04-20 12:30:14 -0400116 let role = RoleInCall.host
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400117 let active: Bool? = true
kkostiukd64e5862021-04-20 12:30:14 -0400118 let isHost = false
Kateryna Kostiukf940cc32023-06-27 14:07:40 -0400119 XCTAssertTrue(manager.getMenuItemsFor(call: call, isHost: isHost, conference: conference, active: active, role: role, isHandRised: true) == [.hangup])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400120 }
121
122 func testGetMenuItemsForRingingCall() {
123 let manager = ConferenceMenuItemsManager()
124 let conference: CallModel? = CallModel()
125 let call: CallModel? = CallModel()
126 call?.state = .ringing
kkostiukd64e5862021-04-20 12:30:14 -0400127 let role = RoleInCall.host
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400128 let active: Bool? = true
kkostiukd64e5862021-04-20 12:30:14 -0400129 let isHost = false
Kateryna Kostiukf940cc32023-06-27 14:07:40 -0400130 XCTAssertTrue(manager.getMenuItemsFor(call: call, isHost: isHost, conference: conference, active: active, role: role, isHandRised: true) == [.hangup])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400131 }
132
133 func testGetMenuItemsForHoldingCall() {
134 let manager = ConferenceMenuItemsManager()
135 let conference: CallModel? = CallModel()
136 let call: CallModel? = CallModel()
137 call?.state = .hold
kkostiukd64e5862021-04-20 12:30:14 -0400138 let role = RoleInCall.host
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400139 let active: Bool? = true
kkostiukd64e5862021-04-20 12:30:14 -0400140 let isHost = false
Kateryna Kostiukf940cc32023-06-27 14:07:40 -0400141 XCTAssertTrue(manager.getMenuItemsFor(call: call, isHost: isHost, conference: conference, active: active, role: role, isHandRised: true) == [.hangup])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400142 }
143
144 func testGetMenuItemsForCallWithConferenceGridLayout() {
145 let manager = ConferenceMenuItemsManager()
146 let conference: CallModel? = CallModel()
147 conference?.layout = .grid
148 let call: CallModel? = CallModel()
149 call?.state = .current
kkostiukd64e5862021-04-20 12:30:14 -0400150 let role = RoleInCall.host
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400151 let active: Bool? = true
kkostiukd64e5862021-04-20 12:30:14 -0400152 let isHost = false
Kateryna Kostiukf940cc32023-06-27 14:07:40 -0400153 XCTAssertTrue(manager.getMenuItemsFor(call: call, isHost: isHost, conference: conference, active: active, role: role, isHandRised: true) == [.lowerHand, .maximize, .muteAudio, .setModerator, .hangup])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400154 }
155
156 func testGetMenuItemsForActiveCallWithConferenceOneWithSmalLayout() {
157 let manager = ConferenceMenuItemsManager()
158 let conference: CallModel? = CallModel()
159 conference?.layout = .oneWithSmal
160 let call: CallModel? = CallModel()
kkostiukd64e5862021-04-20 12:30:14 -0400161 let role = RoleInCall.host
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400162 call?.state = .current
163 let active: Bool? = true
kkostiukd64e5862021-04-20 12:30:14 -0400164 let isHost = false
Kateryna Kostiuk41153692023-03-09 14:20:45 -0500165 XCTAssertTrue(manager.getMenuItemsFor(call: call, isHost: isHost, conference: conference, active: active, role: role, isHandRised: true) ==
Kateryna Kostiukf940cc32023-06-27 14:07:40 -0400166 [.lowerHand, .maximize, .minimize, .muteAudio, .setModerator, .hangup])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400167 }
168
169 func testGetMenuItemsForNotActiveCallWithConferenceOneWithSmalLayout() {
170 let manager = ConferenceMenuItemsManager()
171 let conference: CallModel? = CallModel()
172 conference?.layout = .oneWithSmal
173 let call: CallModel? = CallModel()
kkostiukd64e5862021-04-20 12:30:14 -0400174 let role = RoleInCall.host
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400175 call?.state = .current
176 let active: Bool? = false
kkostiukd64e5862021-04-20 12:30:14 -0400177 let isHost = false
Kateryna Kostiuk41153692023-03-09 14:20:45 -0500178 XCTAssertTrue(manager.getMenuItemsFor(call: call, isHost: isHost, conference: conference, active: active, role: role, isHandRised: true) ==
Kateryna Kostiukf940cc32023-06-27 14:07:40 -0400179 [.lowerHand, .maximize, .muteAudio, .setModerator, .hangup])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400180 }
181
182 func testGetMenuItemsForActiveCallWithConferenceOneLayout() {
183 let manager = ConferenceMenuItemsManager()
184 let conference: CallModel? = CallModel()
185 conference?.layout = .one
186 let call: CallModel? = CallModel()
187 call?.state = .current
kkostiukd64e5862021-04-20 12:30:14 -0400188 let role = RoleInCall.host
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400189 let active: Bool? = true
kkostiukd64e5862021-04-20 12:30:14 -0400190 let isHost = false
Kateryna Kostiuk41153692023-03-09 14:20:45 -0500191 XCTAssertTrue(manager.getMenuItemsFor(call: call, isHost: isHost, conference: conference, active: active, role: role, isHandRised: true) ==
Kateryna Kostiukf940cc32023-06-27 14:07:40 -0400192 [.lowerHand, .minimize, .muteAudio, .setModerator, .hangup])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400193 }
194
195 func testGetMenuItemsForNotActiveCallWithConferenceOneLayout() {
196 let manager = ConferenceMenuItemsManager()
197 let conference: CallModel? = CallModel()
198 conference?.layout = .one
199 let call: CallModel? = CallModel()
200 call?.state = .current
kkostiukd64e5862021-04-20 12:30:14 -0400201 let role = RoleInCall.host
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400202 let active: Bool? = false
kkostiukd64e5862021-04-20 12:30:14 -0400203 let isHost = false
Kateryna Kostiuk41153692023-03-09 14:20:45 -0500204 XCTAssertTrue(manager.getMenuItemsFor(call: call, isHost: isHost, conference: conference, active: active, role: role, isHandRised: true) ==
Kateryna Kostiukf940cc32023-06-27 14:07:40 -0400205 [.lowerHand, .maximize, .muteAudio, .setModerator, .hangup])
Kateryna Kostiuke500a8e2020-10-01 10:24:00 -0400206 }
207}