Emcee
70 строк · 2.0 Кб
1import EmceeLogging
2import EmceeLoggingModels
3import Foundation
4import Kibana
5import TestHelpers
6import XCTest
7
8final class KibanaLoggerHandlerTests: XCTestCase {
9lazy var kibanaClient = FakeKibanaClient()
10lazy var handler = KibanaLoggerHandler(kibanaClient: kibanaClient)
11
12func test___via_log_entry() {
13handler.handle(
14logEntry: LogEntry(
15file: "file",
16line: 42,
17coordinates: [
18LogEntryCoordinate(name: "some", value: "data"),
19LogEntryCoordinate(name: "withoutValue"),
20],
21message: "hello",
22timestamp: Date(),
23verbosity: .info
24)
25)
26
27let event = kibanaClient.capturedEvents[0]
28
29assertTrue { event.level == "info" }
30assertTrue { event.message == "hello" }
31assert {
32event.metadata
33} equals: {
34[
35"some": "data",
36"withoutValue": "null",
37"fileLine": "file:42",
38]
39}
40}
41
42func test___waits_for_completions_after_tear_down() {
43handler.handle(
44logEntry: LogEntry(
45file: "file",
46line: 42,
47coordinates: [
48LogEntryCoordinate(name: "some", value: "data"),
49LogEntryCoordinate(name: "withoutValue"),
50],
51message: "hello",
52timestamp: Date(),
53verbosity: .info
54)
55)
56
57let event = kibanaClient.capturedEvents[0]
58
59let completionInvoked = XCTestExpectation(description: "")
60
61let impactQueue = DispatchQueue(label: "impactQueue")
62impactQueue.asyncAfter(deadline: .now() + 0.05) {
63event.completion(nil)
64completionInvoked.fulfill()
65}
66
67handler.tearDownLogging(timeout: 15)
68wait(for: [completionInvoked], timeout: 0)
69}
70}
71
72