Skip to content

Commit 39bfcf6

Browse files
authored
Add cancel with uuid (#42)
1 parent 9f52a0d commit 39bfcf6

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

Sources/SwiftQueue/SwiftQueueManager.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,13 @@ public final class SwiftQueueManager {
6565
}
6666
}
6767

68+
/// All operations with this uuid in all queues will be removed
69+
public func cancelOperations(uuid: String) {
70+
manage.values.forEach { element in
71+
element.cancelOperations(uuid: uuid)
72+
}
73+
}
74+
6875
/// Blocks the current thread until all of the receiver’s queued and executing operations finish executing.
6976
public func waitUntilAllOperationsAreFinished() {
7077
manage.values.forEach { element in

Tests/SwiftQueueTests/SwiftQueueTests.swift

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,43 @@ class SwiftQueueManagerTests: XCTestCase {
6565
XCTAssertEqual(0, persister.removeQueueName.count)
6666
}
6767

68+
func testCancelWithUUID() {
69+
let id = UUID().uuidString
70+
let type = UUID().uuidString
71+
let group = UUID().uuidString
72+
73+
let job = TestJob()
74+
let creator = TestCreator([type: job])
75+
76+
let persister = PersisterTracker(key: UUID().uuidString)
77+
78+
let manager = SwiftQueueManager(creators: [creator], persister: persister)
79+
80+
JobBuilder(type: type)
81+
.singleInstance(forId: id)
82+
.group(name: group)
83+
.delay(time: 3600)
84+
.schedule(manager: manager)
85+
86+
manager.cancelOperations(uuid: id)
87+
88+
job.await()
89+
90+
XCTAssertEqual(job.onRunJobCalled, 0)
91+
XCTAssertEqual(job.onCompleteCalled, 0)
92+
XCTAssertEqual(job.onRetryCalled, 0)
93+
XCTAssertEqual(job.onCancelCalled, 1)
94+
95+
XCTAssertTrue(job.lastError is Canceled)
96+
97+
XCTAssertEqual(0, persister.putQueueName.count)
98+
XCTAssertEqual(0, persister.putJobUUID.count)
99+
XCTAssertEqual(0, persister.putData.count)
100+
101+
XCTAssertEqual(0, persister.removeJobUUID.count)
102+
XCTAssertEqual(0, persister.removeQueueName.count)
103+
}
104+
68105
func testCancelAll() {
69106
let id = UUID().uuidString
70107
let tag = UUID().uuidString

0 commit comments

Comments
 (0)