Skip to content

Commit 5ffc4e3

Browse files
authored
Merge pull request #34 from PortoCode/feature/image-feed/snapshot-tests
UI Snapshot Tests with Dark Mode support
2 parents f0d8d75 + 3256284 commit 5ffc4e3

34 files changed

Lines changed: 354 additions & 892 deletions

EssentialFeed/EssentialFeed.xcodeproj/project.pbxproj

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,13 @@
7575
5BA598BE2CE1998D007B1795 /* XCTestCase+MemoryLeakTracking.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B8BB9982C02719F00D40D42 /* XCTestCase+MemoryLeakTracking.swift */; };
7676
5BA598BF2CE19E50007B1795 /* FeedCacheTestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B034B422CA3A0C800FB65F8 /* FeedCacheTestHelpers.swift */; };
7777
5BA598C02CE19EE0007B1795 /* SharedTestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B034B442CA3A1A100FB65F8 /* SharedTestHelpers.swift */; };
78+
5BB735132D7CD33B00189186 /* UIImage+TestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB735122D7CD33B00189186 /* UIImage+TestHelpers.swift */; };
79+
5BB735152D7CD9F900189186 /* UITableView+HeaderSizing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB735142D7CD9F900189186 /* UITableView+HeaderSizing.swift */; };
80+
5BB735172D7D0BEE00189186 /* UIViewController+Snapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB735162D7D0BEE00189186 /* UIViewController+Snapshot.swift */; };
81+
5BB735192D7D0CB000189186 /* XCTestCase+Snapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB735182D7D0CB000189186 /* XCTestCase+Snapshot.swift */; };
7882
5BBDA00E2D6FCCF000D68DF0 /* FeedCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BBDA00D2D6FCCF000D68DF0 /* FeedCache.swift */; };
7983
5BBDA01A2D6FF5F100D68DF0 /* FeedImageDataCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BBDA0192D6FF5F100D68DF0 /* FeedImageDataCache.swift */; };
84+
5BBDA1AD2D7CCA8000D68DF0 /* FeedSnapshotTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BBDA1AC2D7CCA8000D68DF0 /* FeedSnapshotTests.swift */; };
8085
5BC4F6CB2CDAF0B20002D4CF /* CoreDataHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BC4F6CA2CDAF0B20002D4CF /* CoreDataHelpers.swift */; };
8186
5BC4F6CD2CDAF1B30002D4CF /* ManagedCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BC4F6CC2CDAF1B30002D4CF /* ManagedCache.swift */; };
8287
5BC4F6CF2CDAF1C60002D4CF /* ManagedFeedImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BC4F6CE2CDAF1C60002D4CF /* ManagedFeedImage.swift */; };
@@ -212,8 +217,13 @@
212217
5BA598BA2CE194BC007B1795 /* EssentialFeedCacheIntegrationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EssentialFeedCacheIntegrationTests.swift; sourceTree = "<group>"; };
213218
5BA598BD2CE1954B007B1795 /* EssentialFeedCacheIntegrationTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = EssentialFeedCacheIntegrationTests.xctestplan; sourceTree = "<group>"; };
214219
5BA598EA2CFABE45007B1795 /* EssentialFeedAPIEndToEndTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = EssentialFeedAPIEndToEndTests.xctestplan; sourceTree = "<group>"; };
220+
5BB735122D7CD33B00189186 /* UIImage+TestHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+TestHelpers.swift"; sourceTree = "<group>"; };
221+
5BB735142D7CD9F900189186 /* UITableView+HeaderSizing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITableView+HeaderSizing.swift"; sourceTree = "<group>"; };
222+
5BB735162D7D0BEE00189186 /* UIViewController+Snapshot.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIViewController+Snapshot.swift"; sourceTree = "<group>"; };
223+
5BB735182D7D0CB000189186 /* XCTestCase+Snapshot.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "XCTestCase+Snapshot.swift"; sourceTree = "<group>"; };
215224
5BBDA00D2D6FCCF000D68DF0 /* FeedCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedCache.swift; sourceTree = "<group>"; };
216225
5BBDA0192D6FF5F100D68DF0 /* FeedImageDataCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedImageDataCache.swift; sourceTree = "<group>"; };
226+
5BBDA1AC2D7CCA8000D68DF0 /* FeedSnapshotTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedSnapshotTests.swift; sourceTree = "<group>"; };
217227
5BC4F6CA2CDAF0B20002D4CF /* CoreDataHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDataHelpers.swift; sourceTree = "<group>"; };
218228
5BC4F6CC2CDAF1B30002D4CF /* ManagedCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManagedCache.swift; sourceTree = "<group>"; };
219229
5BC4F6CE2CDAF1C60002D4CF /* ManagedFeedImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManagedFeedImage.swift; sourceTree = "<group>"; };
@@ -393,7 +403,9 @@
393403
5B4BAE8D2CFBA12700CE079A /* EssentialFeediOSTests */ = {
394404
isa = PBXGroup;
395405
children = (
406+
5BB735112D7CD30C00189186 /* Helpers */,
396407
5B4BAE922CFBA29600CE079A /* EssentialFeediOS.xctestplan */,
408+
5BBDA1AC2D7CCA8000D68DF0 /* FeedSnapshotTests.swift */,
397409
);
398410
path = EssentialFeediOSTests;
399411
sourceTree = "<group>";
@@ -449,6 +461,7 @@
449461
children = (
450462
5B6992D82D0662B200DD47E9 /* UIView+Shimmering.swift */,
451463
5B8AB3672D52D73200CDDDEB /* UITableView+Dequeueing.swift */,
464+
5BB735142D7CD9F900189186 /* UITableView+HeaderSizing.swift */,
452465
5B8AB3692D52DC3600CDDDEB /* UIImageView+Animations.swift */,
453466
5B74FD1E2D64A821007478DC /* UIRefreshControl+Helpers.swift */,
454467
);
@@ -544,6 +557,16 @@
544557
path = EssentialFeedCacheIntegrationTests;
545558
sourceTree = "<group>";
546559
};
560+
5BB735112D7CD30C00189186 /* Helpers */ = {
561+
isa = PBXGroup;
562+
children = (
563+
5BB735122D7CD33B00189186 /* UIImage+TestHelpers.swift */,
564+
5BB735162D7D0BEE00189186 /* UIViewController+Snapshot.swift */,
565+
5BB735182D7D0CB000189186 /* XCTestCase+Snapshot.swift */,
566+
);
567+
path = Helpers;
568+
sourceTree = "<group>";
569+
};
547570
5BC4F6C82CDAEF750002D4CF /* Infrastructure */ = {
548571
isa = PBXGroup;
549572
children = (
@@ -907,6 +930,7 @@
907930
isa = PBXSourcesBuildPhase;
908931
buildActionMask = 2147483647;
909932
files = (
933+
5BB735152D7CD9F900189186 /* UITableView+HeaderSizing.swift in Sources */,
910934
5B74FD1A2D649D0E007478DC /* ErrorView.swift in Sources */,
911935
5B74FD1F2D64A821007478DC /* UIRefreshControl+Helpers.swift in Sources */,
912936
5B8AB3682D52D73200CDDDEB /* UITableView+Dequeueing.swift in Sources */,
@@ -923,6 +947,10 @@
923947
buildActionMask = 2147483647;
924948
files = (
925949
5B6992972CFE8D8B00DD47E9 /* XCTestCase+MemoryLeakTracking.swift in Sources */,
950+
5BBDA1AD2D7CCA8000D68DF0 /* FeedSnapshotTests.swift in Sources */,
951+
5BB735192D7D0CB000189186 /* XCTestCase+Snapshot.swift in Sources */,
952+
5BB735172D7D0BEE00189186 /* UIViewController+Snapshot.swift in Sources */,
953+
5BB735132D7CD33B00189186 /* UIImage+TestHelpers.swift in Sources */,
926954
);
927955
runOnlyForDeploymentPostprocessing = 0;
928956
};

EssentialFeed/EssentialFeediOS/Feed UI/Composers/FeedImageDataLoaderPresentationAdapter.swift

Lines changed: 0 additions & 38 deletions
This file was deleted.

EssentialFeed/EssentialFeediOS/Feed UI/Composers/FeedLoaderPresentationAdapter.swift

Lines changed: 0 additions & 29 deletions
This file was deleted.

EssentialFeed/EssentialFeediOS/Feed UI/Composers/FeedUIComposer.swift

Lines changed: 0 additions & 38 deletions
This file was deleted.

EssentialFeed/EssentialFeediOS/Feed UI/Composers/FeedViewAdapter.swift

Lines changed: 0 additions & 30 deletions
This file was deleted.

EssentialFeed/EssentialFeediOS/Feed UI/Composers/MainQueueDispatchDecorator.swift

Lines changed: 0 additions & 39 deletions
This file was deleted.

EssentialFeed/EssentialFeediOS/Feed UI/Composers/WeakRefVirtualProxy.swift

Lines changed: 0 additions & 33 deletions
This file was deleted.

EssentialFeed/EssentialFeediOS/Feed UI/Controllers/FeedViewController.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ public final class FeedViewController: UITableViewController, UITableViewDataSou
3232
}
3333
}
3434

35+
public override func viewDidLayoutSubviews() {
36+
super.viewDidLayoutSubviews()
37+
38+
tableView.sizeTableHeaderToFit()
39+
}
40+
3541
@IBAction private func refresh() {
3642
delegate?.didRequestFeedRefresh()
3743
}

EssentialFeed/EssentialFeediOS/Feed UI/Views/ErrorView.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,24 @@
66
import UIKit
77

88
public final class ErrorView: UIView {
9-
@IBOutlet private(set) public var button: UIButton!
9+
@IBOutlet private(set) public var label: UILabel!
1010

1111
public var message: String? {
12-
get { return isVisible ? button.title(for: .normal) : nil }
12+
get { return isVisible ? label.text : nil }
1313
set { setMessageAnimated(newValue) }
1414
}
1515

16-
private var isVisible: Bool {
17-
return alpha > 0
18-
}
19-
2016
public override func awakeFromNib() {
2117
super.awakeFromNib()
2218

23-
button.setTitle(nil, for: .normal)
19+
label.text = nil
2420
alpha = 0
2521
}
2622

23+
private var isVisible: Bool {
24+
return alpha > 0
25+
}
26+
2727
private func setMessageAnimated(_ message: String?) {
2828
if let message = message {
2929
showAnimated(message)
@@ -33,7 +33,7 @@ public final class ErrorView: UIView {
3333
}
3434

3535
private func showAnimated(_ message: String) {
36-
button.setTitle(message, for: .normal)
36+
label.text = message
3737

3838
UIView.animate(withDuration: 0.25) {
3939
self.alpha = 1
@@ -46,7 +46,7 @@ public final class ErrorView: UIView {
4646
animations: { self.alpha = 0 },
4747
completion: { completed in
4848
if completed {
49-
self.button.setTitle(nil, for: .normal)
49+
self.label.text = nil
5050
}
5151
})
5252
}

0 commit comments

Comments
 (0)