oficina / meet Public

Clone
git clone https://amadan.net/oficina/meet

Plain git — no account needed to clone.

Download

Download this file

1import Foundation
2import XCTest
3
4@testable import CallsKit
5
6/// The display kept awake through a call (0.4.10): begun once on joining,
7/// ended once on leaving or the call ending, never held twice.
8@MainActor final class CallWakeTests: XCTestCase {
9 final class Recorder: CallWake.Activities {
10 var begun: [String] = []
11 var ended = 0
12 var live = 0
13 func begin(reason: String) -> NSObjectProtocol {
14 begun.append(reason)
15 live += 1
16 return NSObject()
17 }
18 func end(_ activity: NSObjectProtocol) {
19 ended += 1
20 live -= 1
21 }
22 }
23
24 func testHeldFromJoiningUntilLeaving() {
25 let recorder = Recorder()
26 let wake = CallWake(activities: recorder)
27 XCTAssertFalse(wake.holding)
28 wake.update(inCall: true)
29 wake.update(inCall: true)
30 XCTAssertTrue(wake.holding)
31 XCTAssertEqual(recorder.begun, [CallWake.reason], "once, however often it is told")
32 wake.update(inCall: false)
33 wake.update(inCall: false)
34 XCTAssertFalse(wake.holding)
35 XCTAssertEqual(recorder.ended, 1)
36 XCTAssertEqual(recorder.live, 0)
37 }
38
39 func testAnEndedCallLetsTheDisplaySleep() {
40 XCTAssertTrue(CallWake.inCall(joining: true, phase: "admitted"))
41 XCTAssertTrue(CallWake.inCall(joining: true, phase: nil), "joining, before the room has answered")
42 XCTAssertTrue(CallWake.inCall(joining: true, phase: "reconnecting"))
43 XCTAssertFalse(CallWake.inCall(joining: true, phase: "ended"))
44 XCTAssertFalse(CallWake.inCall(joining: false, phase: "admitted"))
45 }
46
47 func testRejoiningHoldsItAgain() {
48 let recorder = Recorder()
49 let wake = CallWake(activities: recorder)
50 for _ in 0..<3 {
51 wake.update(inCall: true)
52 wake.update(inCall: false)
53 }
54 XCTAssertEqual(recorder.begun.count, 3)
55 XCTAssertEqual(recorder.ended, 3)
56 XCTAssertEqual(recorder.live, 0)
57 }
58
59 #if os(macOS)
60 func testTheModelHoldsItWhileJoiningOnly() {
61 let model = CallsModel(store: MemorySessionStore(), remote: .bridge, defaults: UserDefaults(suiteName: "wake-\(UUID())")!)
62 XCTAssertFalse(model.wake.holding)
63 model.joining = true
64 XCTAssertTrue(model.wake.holding)
65 model.joining = false
66 XCTAssertFalse(model.wake.holding)
67 }
68 #endif
69
70 func testTheRealActivityBeginsAndEnds() {
71 let wake = CallWake()
72 wake.update(inCall: true)
73 XCTAssertTrue(wake.holding)
74 wake.update(inCall: false)
75 XCTAssertFalse(wake.holding)
76 }
77}
78