-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathTestSchedulerTests.swift
87 lines (78 loc) · 3.01 KB
/
TestSchedulerTests.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import Dispatch
import MetricsExtensions
import QueueClient
import QueueModels
import RESTMethods
import RequestSenderTestHelpers
import ScheduleStrategy
import TestHelpers
import Types
import XCTest
import QueueModelsTestHelpers
final class TestSchedulerTests: XCTestCase {
private lazy var scheduler = TestSchedulerImpl(
logger: .noOp,
requestSender: requestSender
)
private let callbackQueue = DispatchQueue(label: "callbackQueue")
private let expectation = XCTestExpectation(description: "Response provided")
private let requestSender = FakeRequestSender()
private lazy var individualScheduleStrategy = ScheduleStrategy(testSplitterType: .individual)
private lazy var unsplitScheduleStrategy = ScheduleStrategy(testSplitterType: .unsplit)
private lazy var prioritizedJob = PrioritizedJob(
analyticsConfiguration: AnalyticsConfiguration(),
jobGroupId: "group",
jobGroupPriority: .lowest,
jobId: "job",
jobPriority: .highest
)
private lazy var similarlyConfiguredTestEntries = SimilarlyConfiguredTestEntries(
testEntries: [],
testEntryConfiguration: TestEntryConfigurationFixtures()
.testEntryConfiguration()
)
func test___success_scenario() {
requestSender.result = ScheduleTestsResponse.scheduledTests
requestSender.validateRequest = { sender in
guard let scheduleTestsRequest = sender.request as? ScheduleTestsRequest else {
failTest("Unexpected request")
}
assert {
scheduleTestsRequest.payload
} equals: {
ScheduleTestsPayload(
prioritizedJob: self.prioritizedJob,
scheduleStrategy: self.unsplitScheduleStrategy,
similarlyConfiguredTestEntries: self.similarlyConfiguredTestEntries
)
}
}
scheduler.scheduleTests(
prioritizedJob: prioritizedJob,
scheduleStrategy: unsplitScheduleStrategy,
similarlyConfiguredTestEntries: similarlyConfiguredTestEntries,
callbackQueue: callbackQueue,
completion: { (response: Either<Void, Error>) in
assertDoesNotThrow {
try response.dematerialize()
}
self.expectation.fulfill()
}
)
wait(for: [expectation], timeout: 15)
}
func test___error_scenario() {
requestSender.requestSenderError = .noData
scheduler.scheduleTests(
prioritizedJob: prioritizedJob,
scheduleStrategy: individualScheduleStrategy,
similarlyConfiguredTestEntries: similarlyConfiguredTestEntries,
callbackQueue: callbackQueue,
completion: { response in
XCTAssertTrue(response.isError)
self.expectation.fulfill()
}
)
wait(for: [expectation], timeout: 5)
}
}