diff --git a/EssentialApp/EssentialAppTests/FeedUIIntegrationTests.swift b/EssentialApp/EssentialAppTests/FeedUIIntegrationTests.swift index 793ee3c1..6b2f652c 100644 --- a/EssentialApp/EssentialAppTests/FeedUIIntegrationTests.swift +++ b/EssentialApp/EssentialAppTests/FeedUIIntegrationTests.swift @@ -518,6 +518,23 @@ class FeedUIIntegrationTests: XCTestCase { XCTAssertEqual(view0.renderedImage, .none, "Expected no image state change for reused view once image loading completes successfully") } + func test_feedImageView_showsDataForNewViewRequestAfterPreviousViewIsReused() throws { + let (sut, loader) = makeSUT() + + sut.simulateAppearance() + loader.completeFeedLoading(with: [makeImage(), makeImage()]) + + let previousView = try XCTUnwrap(sut.simulateFeedImageViewNotVisible(at: 0)) + + let newView = try XCTUnwrap(sut.simulateFeedImageViewVisible(at: 0)) + previousView.prepareForReuse() + + let imageData = UIImage.make(withColor: .red).pngData()! + loader.completeImageLoading(with: imageData, at: 1) + + XCTAssertEqual(newView.renderedImage, imageData) + } + func test_feedImageView_doesNotRenderLoadedImageWhenNotVisibleAnymore() { let (sut, loader) = makeSUT() sut.simulateAppearance() diff --git a/EssentialFeed/EssentialFeediOS/Feed UI/Controllers/FeedImageCellController.swift b/EssentialFeed/EssentialFeediOS/Feed UI/Controllers/FeedImageCellController.swift index 7fff93a1..edfe9ee8 100644 --- a/EssentialFeed/EssentialFeediOS/Feed UI/Controllers/FeedImageCellController.swift +++ b/EssentialFeed/EssentialFeediOS/Feed UI/Controllers/FeedImageCellController.swift @@ -76,6 +76,7 @@ extension FeedImageCellController: UITableViewDataSource, UITableViewDelegate, U } private func releaseCellForReuse() { + cell?.onReuse = nil cell = nil } }