Skip to content

Commit

Permalink
Merge pull request #73 from essentialdevelopercom/fix/ios15+
Browse files Browse the repository at this point in the history
Fix for iOS 15+ cell lifecycle changes
mapostolakis authored Feb 2, 2023
2 parents 34db55b + 242a2c0 commit 149d07f
Showing 3 changed files with 25 additions and 0 deletions.
15 changes: 15 additions & 0 deletions EssentialApp/EssentialAppTests/FeedUIIntegrationTests.swift
Original file line number Diff line number Diff line change
@@ -492,6 +492,21 @@ class FeedUIIntegrationTests: XCTestCase {
XCTAssertEqual(view0?.isShowingImageLoadingIndicator, false, "Expected no loading indicator when image loads successfully after view becomes visible again")
}

func test_feedImageView_doesNotShowDataFromPreviousRequestWhenCellIsReused() throws {
let (sut, loader) = makeSUT()

sut.loadViewIfNeeded()
loader.completeFeedLoading(with: [makeImage(), makeImage()])

let view0 = try XCTUnwrap(sut.simulateFeedImageViewVisible(at: 0))
view0.prepareForReuse()

let imageData0 = UIImage.make(withColor: .red).pngData()!
loader.completeImageLoading(with: imageData0, at: 0)

XCTAssertEqual(view0.renderedImage, .none, "Expected no image state change for reused view once image loading completes successfully")
}

func test_feedImageView_doesNotRenderLoadedImageWhenNotVisibleAnymore() {
let (sut, loader) = makeSUT()
sut.loadViewIfNeeded()
Original file line number Diff line number Diff line change
@@ -42,6 +42,9 @@ extension FeedImageCellController: UITableViewDataSource, UITableViewDelegate, U
cell?.onRetry = { [weak self] in
self?.delegate.didRequestImage()
}
cell?.onReuse = { [weak self] in
self?.releaseCellForReuse()
}
delegate.didRequestImage()
return cell!
}
Original file line number Diff line number Diff line change
@@ -13,8 +13,15 @@ public final class FeedImageCell: UITableViewCell {
@IBOutlet private(set) public var descriptionLabel: UILabel!

var onRetry: (() -> Void)?
var onReuse: (() -> Void)?

@IBAction private func retryButtonTapped() {
onRetry?()
}

public override func prepareForReuse() {
super.prepareForReuse()

onReuse?()
}
}

0 comments on commit 149d07f

Please sign in to comment.