Avoids retaining the view controller until update completes
This commit is contained in:
parent
340a2677f1
commit
cf5901cf80
|
|
@ -41,6 +41,7 @@ extension BaseChatViewController: ChatDataSourceDelegateProtocol {
|
|||
|
||||
let oldItems = sSelf.chatItemCompanionCollection
|
||||
sSelf.updateModels(newItems: newItems, oldItems: oldItems, updateType: updateType, completion: {
|
||||
guard let sSelf = self else { return }
|
||||
if sSelf.updateQueue.isEmpty {
|
||||
sSelf.enqueueMessageCountReductionIfNeeded()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -153,11 +153,10 @@ class ChatViewControllerTests: XCTestCase {
|
|||
}
|
||||
}
|
||||
|
||||
func testThat_ControllerDoesNotLeak() {
|
||||
func testThat_WhenUpdatesFinish_ControllerIsNotRetained() {
|
||||
let asyncExpectation = expectationWithDescription("update")
|
||||
let updateQueue = SerialTaskQueueTestHelper()
|
||||
let presenterBuilder = FakePresenterBuilder()
|
||||
var controller: TesteableChatViewController! = TesteableChatViewController(presenterBuilders: ["fake-type": [presenterBuilder]])
|
||||
var controller: TesteableChatViewController! = TesteableChatViewController(presenterBuilders: ["fake-type": [FakePresenterBuilder()]])
|
||||
weak var weakController = controller
|
||||
controller.updateQueue = updateQueue
|
||||
let fakeDataSource = FakeDataSource()
|
||||
|
|
@ -173,6 +172,14 @@ class ChatViewControllerTests: XCTestCase {
|
|||
}
|
||||
}
|
||||
|
||||
func testThat_WhenLayoutFinishes_ControllerIsNotRetained() {
|
||||
var controller: TesteableChatViewController! = TesteableChatViewController(presenterBuilders: ["fake-type": [FakePresenterBuilder()]])
|
||||
weak var weakController = controller
|
||||
controller.chatDataSource = FakeDataSource()
|
||||
self.fakeDidAppearAndLayout(controller: controller)
|
||||
controller = nil
|
||||
XCTAssertNil(weakController)
|
||||
}
|
||||
|
||||
func testThat_LayoutAdaptsWhenKeyboardIsShown() {
|
||||
let controller = TesteableChatViewController()
|
||||
|
|
|
|||
Loading…
Reference in New Issue