11
11
// Copyright © 2021-present Jesse Squires
12
12
//
13
13
14
- @testable import Foil
15
14
import Combine
15
+ @testable import Foil
16
16
import XCTest
17
17
18
18
let timeout = TimeInterval ( 5 )
19
19
20
20
final class ObservationTests : XCTestCase {
21
21
22
- let settings = TestSettings ( )
23
-
24
22
var cancellable = Set < AnyCancellable > ( )
25
23
26
24
var observer : NSKeyValueObservation ?
@@ -31,11 +29,12 @@ final class ObservationTests: XCTestCase {
31
29
}
32
30
33
31
func test_Integration_ProjectedValue( ) {
32
+ let settings = TestSettings ( )
34
33
let expectation = self . expectation ( description: #function)
35
34
let expectedValue = 1_000.0
36
35
var publishedValue : Double ?
37
36
38
- self . settings. $average
37
+ settings. $average
39
38
. sink { newValue in
40
39
publishedValue = newValue
41
40
@@ -48,18 +47,19 @@ final class ObservationTests: XCTestCase {
48
47
}
49
48
. store ( in: & self . cancellable)
50
49
51
- self . settings. average = expectedValue
50
+ settings. average = expectedValue
52
51
self . wait ( for: [ expectation] , timeout: timeout)
53
52
54
- XCTAssertEqual ( self . settings. average, publishedValue)
53
+ XCTAssertEqual ( settings. average, publishedValue)
55
54
}
56
55
57
56
func test_Integration_ProjectedValue_ExternalChange( ) {
57
+ let settings = TestSettings ( )
58
58
let expectation = self . expectation ( description: #function)
59
59
let expectedValue = 1_000.0
60
60
var publishedValue : Double ?
61
61
62
- self . settings. $average
62
+ settings. $average
63
63
. sink { newValue in
64
64
publishedValue = newValue
65
65
@@ -69,31 +69,33 @@ final class ObservationTests: XCTestCase {
69
69
}
70
70
. store ( in: & self . cancellable)
71
71
72
- type ( of: self . settings) . store. set ( expectedValue, forKey: " average " )
72
+ type ( of: settings) . store. set ( expectedValue, forKey: " average " )
73
73
self . wait ( for: [ expectation] , timeout: timeout)
74
74
75
- XCTAssertEqual ( self . settings. average, publishedValue)
75
+ XCTAssertEqual ( settings. average, publishedValue)
76
76
}
77
77
78
78
func test_Integration_Publisher( ) {
79
+ let settings = TestSettings ( )
79
80
let expectation = self . expectation ( description: #function)
80
81
var publishedValue : String ?
81
82
82
- self . settings
83
+ settings
83
84
. publisher ( for: \. userId, options: [ . new] )
84
85
. sink { newValue in
85
86
publishedValue = newValue
86
87
expectation. fulfill ( )
87
88
}
88
89
. store ( in: & self . cancellable)
89
90
90
- self . settings. userId = " test_publisher "
91
+ settings. userId = " test_publisher "
91
92
self . wait ( for: [ expectation] , timeout: timeout)
92
93
93
- XCTAssertEqual ( self . settings. userId, publishedValue)
94
+ XCTAssertEqual ( settings. userId, publishedValue)
94
95
}
95
96
96
97
func test_Integration_KVO( ) {
98
+ let settings = TestSettings ( )
97
99
let expectation = self . expectation ( description: #function)
98
100
var changedValue : String ?
99
101
@@ -105,9 +107,9 @@ final class ObservationTests: XCTestCase {
105
107
expectation. fulfill ( )
106
108
}
107
109
108
- self . settings. userId = " test_kvo "
110
+ settings. userId = " test_kvo "
109
111
self . wait ( for: [ expectation] , timeout: timeout)
110
112
111
- XCTAssertEqual ( self . settings. userId, changedValue)
113
+ XCTAssertEqual ( settings. userId, changedValue)
112
114
}
113
115
}
0 commit comments