11import XCTest
22@testable import CohesionKit
33
4- // MARK: Store
54class EntityStoreTests : XCTestCase {
5+ // MARK: Store Aggregate
66 func test_storeAggregate_nestedEntitiesAreStored( ) {
77 let entity = RootFixture (
88 id: 1 ,
@@ -95,6 +95,20 @@ class EntityStoreTests: XCTestCase {
9595 }
9696 }
9797
98+ func test_storeAggregate_named_itEnqueuesAliasInRegistry( ) {
99+ let root = SingleNodeFixture ( id: 1 )
100+ let registry = ObserverRegistryStub ( )
101+ let identityMap = IdentityMap ( registry: registry)
102+
103+ withExtendedLifetime ( identityMap. store ( entity: root, named: . test) ) {
104+ XCTAssertTrue ( registry. hasPendingChange ( for: AliasContainer< SingleNodeFixture> . self ) )
105+ XCTAssertTrue ( registry. hasPendingChange ( for: SingleNodeFixture . self) )
106+ }
107+ }
108+ }
109+
110+ // MARK: Store Entities
111+ extension EntityStoreTests {
98112 /// make sure when inserting multiple time the same entity that it actually gets inserted only once
99113 func test_storeEntities_sameEntityPresentMultipleTimes_itIsInsertedOnce( ) {
100114 let registry = ObserverRegistryStub ( queue: . main)
@@ -108,6 +122,20 @@ class EntityStoreTests: XCTestCase {
108122 XCTAssertEqual ( registry. pendingChangeCount ( for: commonEntity) , 1 )
109123 }
110124
125+ func test_storeEntities_named_calledMultipleTimes_lastValueIsStored( ) {
126+ let identityMap = IdentityMap ( )
127+ let root = SingleNodeFixture ( id: 1 )
128+ let root2 = SingleNodeFixture ( id: 2 )
129+
130+ _ = identityMap. store ( entities: [ root] , named: . listOfNodes)
131+ _ = identityMap. store ( entities: [ root, root2] , named: . listOfNodes)
132+
133+ XCTAssertEqual ( identityMap. find ( named: . listOfNodes) . value, [ root, root2] )
134+ }
135+ }
136+
137+ // MARK: Store Identifiable
138+ extension EntityStoreTests {
111139 func test_storeIdentifiable_entityIsInsertedForThe1stTime_loggerIsCalled( ) {
112140 let logger = LoggerMock ( )
113141 let identityMap = IdentityMap ( logger: logger)
@@ -140,17 +168,6 @@ class EntityStoreTests: XCTestCase {
140168
141169 wait ( for: [ expectation] , timeout: 0 )
142170 }
143-
144- func test_storeAggregate_named_itEnqueuesAliasInRegistry( ) {
145- let root = SingleNodeFixture ( id: 1 )
146- let registry = ObserverRegistryStub ( )
147- let identityMap = IdentityMap ( registry: registry)
148-
149- withExtendedLifetime ( identityMap. store ( entity: root, named: . test) ) {
150- XCTAssertTrue ( registry. hasPendingChange ( for: AliasContainer< SingleNodeFixture> . self ) )
151- XCTAssertTrue ( registry. hasPendingChange ( for: SingleNodeFixture . self) )
152- }
153- }
154171}
155172
156173// MARK: Find
0 commit comments