Skip to content

Commit 13f43e6

Browse files
authored
tech(unit tests): Don't use EntityStore internal properties (#71)
1 parent ba0173b commit 13f43e6

File tree

2 files changed

+22
-18
lines changed

2 files changed

+22
-18
lines changed

Sources/CohesionKit/EntityStore.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ public class EntityStore {
1212
private let logger: Logger?
1313
private let registry: ObserverRegistry
1414

15-
private(set) var storage: EntitiesStorage = EntitiesStorage()
16-
private(set) var refAliases: AliasStorage = [:]
15+
private var storage: EntitiesStorage = EntitiesStorage()
16+
private var refAliases: AliasStorage = [:]
1717
private lazy var storeVisitor = EntityStoreStoreVisitor(entityStore: self)
1818

1919
/// Create a new EntityStore instance optionally with a queue and a logger

Tests/CohesionKitTests/EntityStoreTests.swift

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,71 +14,75 @@ class EntityStoreTests: XCTestCase {
1414
let entityStore = EntityStore()
1515

1616
withExtendedLifetime(entityStore.store(entity: entity)) { _ in
17-
XCTAssertNotNil(entityStore.storage[SingleNodeFixture.self, id: 1])
18-
XCTAssertNotNil(entityStore.storage[OptionalNodeFixture.self, id: 1])
19-
XCTAssertNotNil(entityStore.storage[ListNodeFixture.self, id: 1])
17+
XCTAssertNotNil(entityStore.find(SingleNodeFixture.self, id: 1))
18+
XCTAssertNotNil(entityStore.find(OptionalNodeFixture.self, id: 1))
19+
XCTAssertNotNil(entityStore.find(ListNodeFixture.self, id: 1))
2020
}
2121
}
2222

23-
func test_storeAggregate_nestedEntityReplacedByNil_entityIsUpdated_aggregateEntityRemainsNil() {
23+
func test_storeAggregate_nestedEntitySetToNil_entityIsUpdated_aggregateNestedEntityRemainsNil() throws {
2424
let entityStore = EntityStore()
2525
let nestedOptional = OptionalNodeFixture(id: 1)
2626
var root = RootFixture(id: 1, primitive: "", singleNode: SingleNodeFixture(id: 1), optional: nestedOptional, listNodes: [])
2727

28-
withExtendedLifetime(entityStore.store(entity: root)) {
28+
try withExtendedLifetime(entityStore.store(entity: root)) {
2929
root.optional = nil
3030

3131
_ = entityStore.store(entity: root)
3232
_ = entityStore.store(entity: nestedOptional)
3333

3434
XCTAssertNotNil(entityStore.find(RootFixture.self, id: 1))
3535
XCTAssertNil(entityStore.find(RootFixture.self, id: 1)!.value.optional)
36+
let root = try XCTUnwrap(entityStore.find(RootFixture.self, id: 1))
37+
XCTAssertNil(root.value.optional)
3638
}
3739
}
3840

3941
/// check that removed relations do not trigger an update
40-
func test_storeAggregate_removeEntityFromNestedArray_removedEntityChange_aggregateArrayNotChanged() {
42+
func test_storeAggregate_removeEntityFromNestedArray_removedEntityChange_aggregateArrayNotChanged() throws {
4143
let entityStore = EntityStore()
4244
var entityToRemove = ListNodeFixture(id: 2)
4345
let nestedArray: [ListNodeFixture] = [entityToRemove, ListNodeFixture(id: 1)]
4446
var root = RootFixture(id: 1, primitive: "", singleNode: SingleNodeFixture(id: 1), optional: OptionalNodeFixture(id: 1), listNodes: nestedArray)
4547

46-
withExtendedLifetime(entityStore.store(entity: root)) {
48+
try withExtendedLifetime(entityStore.store(entity: root)) {
4749
root.listNodes = Array(nestedArray[1...])
4850
entityToRemove.key = "changed"
4951

5052
_ = entityStore.store(entity: root)
5153
_ = entityStore.store(entity: entityToRemove)
5254

53-
let storedRoot = entityStore.find(RootFixture.self, id: 1)!.value
55+
let root = try XCTUnwrap(entityStore.find(RootFixture.self, id: 1))
5456

55-
XCTAssertFalse(storedRoot.listNodes.contains(entityToRemove))
56-
XCTAssertFalse(storedRoot.listNodes.map(\.id).contains(entityToRemove.id))
57+
XCTAssertFalse(root.value.listNodes.contains(entityToRemove))
58+
XCTAssertFalse(root.value.listNodes.map(\.id).contains(entityToRemove.id))
5759
}
5860
}
5961

60-
func test_storeAggregate_nestedWrapperChanged_aggregateIsUpdated() {
62+
func test_storeAggregate_nestedWrapperChanged_aggregateIsUpdated() throws {
6163
let entityStore = EntityStore()
6264
let root = RootFixture(id: 1, primitive: "", singleNode: SingleNodeFixture(id: 1), optional: OptionalNodeFixture(id: 1), listNodes: [], enumWrapper: .single(SingleNodeFixture(id: 2)))
6365
let updatedValue = SingleNodeFixture(id: 2, primitive: "updated")
6466

65-
withExtendedLifetime(entityStore.store(entity: root)) {
67+
try withExtendedLifetime(entityStore.store(entity: root)) {
6668
_ = entityStore.store(entity: updatedValue)
67-
XCTAssertEqual(entityStore.find(RootFixture.self, id: 1)!.value.enumWrapper, .single(updatedValue))
69+
let root = try XCTUnwrap(entityStore.find(RootFixture.self, id: 1))
70+
XCTAssertEqual(root.value.enumWrapper, .single(updatedValue))
6871
}
6972
}
7073

71-
func test_storeAggregate_nestedOptionalWrapperNullified_aggregateIsNullified() {
74+
func test_storeAggregate_nestedOptionalWrapperNullified_aggregateIsNullified() throws {
7275
let entityStore = EntityStore()
7376
var root = RootFixture(id: 1, primitive: "", singleNode: SingleNodeFixture(id: 1), optional: OptionalNodeFixture(id: 1), listNodes: [], enumWrapper: .single(SingleNodeFixture(id: 2)))
7477

75-
withExtendedLifetime(entityStore.store(entity: root)) {
78+
try withExtendedLifetime(entityStore.store(entity: root)) {
7679
root.enumWrapper = nil
7780

7881
_ = entityStore.store(entity: root)
7982
_ = entityStore.store(entity: SingleNodeFixture(id: 2, primitive: "deleted"))
8083

81-
XCTAssertNil(entityStore.find(RootFixture.self, id: 1)!.value.enumWrapper)
84+
let root = try XCTUnwrap(entityStore.find(RootFixture.self, id: 1))
85+
XCTAssertNil(root.value.enumWrapper)
8286
}
8387
}
8488

0 commit comments

Comments
 (0)