@@ -11,63 +11,83 @@ import XCTest
11
11
final class ActivityManagerTests : XCTestCase {
12
12
var activityManager : ActivityManager !
13
13
14
- override func setUp( ) {
15
- super. setUp ( )
16
- activityManager = ActivityManager ( )
14
+ override func setUp( ) async throws {
15
+ try await super. setUp ( )
16
+ // Initialize on main actor since ActivityManager is main actor-isolated
17
+ await MainActor . run {
18
+ activityManager = ActivityManager ( )
19
+ }
17
20
}
18
21
19
- override func tearDown( ) {
20
- activityManager = nil
21
- super. tearDown ( )
22
+ override func tearDown( ) async throws {
23
+ await MainActor . run {
24
+ activityManager = nil
25
+ }
26
+ try await super. tearDown ( )
22
27
}
23
28
24
- func testCreateTask( ) {
25
- let activity = activityManager. post ( title: " Task Title " )
26
- XCTAssertEqual ( activityManager. activities. first? . id, activity. id)
27
- XCTAssertEqual ( activityManager. activities. first? . title, " Task Title " )
29
+ func testCreateTask( ) async {
30
+ await MainActor . run {
31
+ let activity = activityManager. post ( title: " Task Title " )
32
+ XCTAssertEqual ( activityManager. activities. first? . id, activity. id)
33
+ XCTAssertEqual ( activityManager. activities. first? . title, " Task Title " )
34
+ }
28
35
}
29
36
30
- func testCreateTaskWithPriority( ) {
31
- let activity1 = activityManager. post ( title: " Task Title " )
32
- let activity2 = activityManager. post (
33
- priority: true ,
34
- title: " Priority Task Title "
35
- )
37
+ func testCreateTaskWithPriority( ) async {
38
+ await MainActor . run {
39
+ let activity1 = activityManager. post ( title: " Task Title " )
40
+ let activity2 = activityManager. post (
41
+ priority: true ,
42
+ title: " Priority Task Title "
43
+ )
36
44
37
- XCTAssertEqual ( activityManager. activities. first? . id, activity2. id)
38
- XCTAssertEqual ( activityManager. activities. first? . title, " Priority Task Title " )
39
- XCTAssertEqual ( activityManager. activities. last? . id, activity1. id)
45
+ XCTAssertEqual ( activityManager. activities. first? . id, activity2. id)
46
+ XCTAssertEqual ( activityManager. activities. first? . title, " Priority Task Title " )
47
+ XCTAssertEqual ( activityManager. activities. last? . id, activity1. id)
48
+ }
40
49
}
41
50
42
- func testUpdateTask( ) {
43
- let activity = activityManager. post ( title: " Task Title " )
51
+ func testUpdateTask( ) async {
52
+ await MainActor . run {
53
+ let activity = activityManager. post ( title: " Task Title " )
44
54
45
- activityManager. update (
46
- id: activity. id,
47
- title: " Updated Task Title "
48
- )
55
+ activityManager. update (
56
+ id: activity. id,
57
+ title: " Updated Task Title "
58
+ )
49
59
50
- XCTAssertEqual ( activityManager. activities. first? . title, " Updated Task Title " )
60
+ XCTAssertEqual ( activityManager. activities. first? . title, " Updated Task Title " )
61
+ }
51
62
}
52
63
53
- func testDeleteTask( ) {
54
- let activity = activityManager. post ( title: " Task Title " )
55
- activityManager. delete ( id: activity. id)
64
+ func testDeleteTask( ) async {
65
+ await MainActor . run {
66
+ let activity = activityManager. post ( title: " Task Title " )
67
+ activityManager. delete ( id: activity. id)
56
68
57
- XCTAssertTrue ( activityManager. activities. isEmpty)
69
+ XCTAssertTrue ( activityManager. activities. isEmpty)
70
+ }
58
71
}
59
72
60
- func testDeleteTaskWithDelay( ) {
61
- let activity = activityManager. post ( title: " Task Title " )
62
- activityManager. delete ( id: activity. id, delay: 0.2 )
73
+ func testDeleteTaskWithDelay( ) async throws {
74
+ let expectation = XCTestExpectation ( )
63
75
64
- XCTAssertFalse ( activityManager. activities. isEmpty)
76
+ await MainActor . run {
77
+ let activity = activityManager. post ( title: " Task Title " )
78
+ activityManager. delete ( id: activity. id, delay: 0.2 )
65
79
66
- let expectation = XCTestExpectation ( )
67
- DispatchQueue . main. asyncAfter ( deadline: . now( ) + 0.3 ) {
80
+ XCTAssertFalse ( activityManager. activities. isEmpty)
81
+ }
82
+
83
+ // Wait for deletion
84
+ try await Task . sleep ( nanoseconds: 300_000_000 ) // 0.3 seconds
85
+
86
+ await MainActor . run {
68
87
XCTAssertTrue ( self . activityManager. activities. isEmpty)
69
88
expectation. fulfill ( )
70
89
}
71
- wait ( for: [ expectation] , timeout: 1 )
90
+
91
+ await fulfillment ( of: [ expectation] , timeout: 1 )
72
92
}
73
93
}
0 commit comments