From 48fdffcbeb731bd23bc2e0720c5d48f08fe8cd54 Mon Sep 17 00:00:00 2001 From: Felix Mau Date: Mon, 15 Jun 2020 20:55:48 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=85=20::=20Add=20snapshot=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 42 ++++++++++++++- .../CustomColorSnapshotTestCase.swift | 0 .../DefaultColorSnapshotTestCase.swift | 0 ...wShouldContainCorrectColorsInitially.1.png | Bin ...wShouldContainCorrectColorsInitially.1.png | Bin ...GradientLoadingBarControllerTestCase.swift | 49 +++++++++++++++++ ...GradientLoadingBarControllerTestCase.swift | 51 ++++++++++++++++++ .../testGradientLoadingBarController.1.png | Bin 0 -> 83526 bytes ...estNotchGradientLoadingBarController.1.png | Bin 0 -> 96943 bytes Example/SnapshotTests/README.md | 4 ++ .../_Helper/Snapshotting+WindowedImage.swift | 44 +++++++++++++++ .../GradientLoadingBarController.swift | 4 ++ 12 files changed, 192 insertions(+), 2 deletions(-) rename Example/SnapshotTests/{ => GradientActivityIndicatorView}/CustomColorSnapshotTestCase.swift (100%) rename Example/SnapshotTests/{ => GradientActivityIndicatorView}/DefaultColorSnapshotTestCase.swift (100%) rename Example/SnapshotTests/{ => GradientActivityIndicatorView}/__Snapshots__/CustomColorSnapshotTestCase/testGradientProgressIndicatorViewShouldContainCorrectColorsInitially.1.png (100%) rename Example/SnapshotTests/{ => GradientActivityIndicatorView}/__Snapshots__/DefaultColorSnapshotTestCase/testGradientProgressIndicatorViewShouldContainCorrectColorsInitially.1.png (100%) create mode 100644 Example/SnapshotTests/GradientLoadingBarController/GradientLoadingBarControllerTestCase.swift create mode 100644 Example/SnapshotTests/GradientLoadingBarController/NotchGradientLoadingBarControllerTestCase.swift create mode 100644 Example/SnapshotTests/GradientLoadingBarController/__Snapshots__/GradientLoadingBarControllerTestCase/testGradientLoadingBarController.1.png create mode 100644 Example/SnapshotTests/GradientLoadingBarController/__Snapshots__/NotchGradientLoadingBarControllerTestCase/testNotchGradientLoadingBarController.1.png create mode 100644 Example/SnapshotTests/README.md create mode 100644 Example/SnapshotTests/_Helper/Snapshotting+WindowedImage.swift diff --git a/Example/GradientLoadingBar.xcodeproj/project.pbxproj b/Example/GradientLoadingBar.xcodeproj/project.pbxproj index 58ff340..d585593 100644 --- a/Example/GradientLoadingBar.xcodeproj/project.pbxproj +++ b/Example/GradientLoadingBar.xcodeproj/project.pbxproj @@ -28,6 +28,9 @@ 97B6F5FE2143F31F008CFEA5 /* UIColor+CustomColors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97B6F5FA2143F31F008CFEA5 /* UIColor+CustomColors.swift */; }; 97B6F5FF2143F31F008CFEA5 /* BlueFilledButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97B6F5FC2143F31F008CFEA5 /* BlueFilledButton.swift */; }; 97B6F6002143F31F008CFEA5 /* BlueBorderedButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97B6F5FD2143F31F008CFEA5 /* BlueBorderedButton.swift */; }; + DC190F622496A25A0069E2B0 /* NotchGradientLoadingBarControllerTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC190F602496A24F0069E2B0 /* NotchGradientLoadingBarControllerTestCase.swift */; }; + DCE3AB13249761B300889FFA /* Snapshotting+WindowedImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCE3AB11249761AB00889FFA /* Snapshotting+WindowedImage.swift */; }; + DCE3AB16249764BB00889FFA /* GradientLoadingBarControllerTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCE3AB14249764A000889FFA /* GradientLoadingBarControllerTestCase.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -81,6 +84,10 @@ A98CA9F1B0C1BD6864C14E01 /* Pods-GradientLoadingBar_SnapshotTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientLoadingBar_SnapshotTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests.release.xcconfig"; sourceTree = ""; }; ABA9B1EF5F3928BA6E31D3EA /* Pods_GradientLoadingBar_SnapshotTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GradientLoadingBar_SnapshotTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C06CA4DFA1DCB931095ABD3D /* GradientLoadingBar.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = GradientLoadingBar.podspec; path = ../GradientLoadingBar.podspec; sourceTree = ""; }; + DC190F602496A24F0069E2B0 /* NotchGradientLoadingBarControllerTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotchGradientLoadingBarControllerTestCase.swift; sourceTree = ""; }; + DCE3AB11249761AB00889FFA /* Snapshotting+WindowedImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Snapshotting+WindowedImage.swift"; sourceTree = ""; }; + DCE3AB14249764A000889FFA /* GradientLoadingBarControllerTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradientLoadingBarControllerTestCase.swift; sourceTree = ""; }; + DCE3AB172497670400889FFA /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; E7B292793F03D669ACAA92D2 /* Pods-GradientLoadingBar_SnapshotTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientLoadingBar_SnapshotTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests.debug.xcconfig"; sourceTree = ""; }; F76834BE9E43CA11377EC030 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; FECB95A4857728345199461F /* Pods-GradientLoadingBar_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientLoadingBar_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.debug.xcconfig"; sourceTree = ""; }; @@ -196,9 +203,11 @@ 649A163A23770B4400404F3C /* SnapshotTests */ = { isa = PBXGroup; children = ( - 649A163B23770B4400404F3C /* DefaultColorSnapshotTestCase.swift */, - 649A164323770E9300404F3C /* CustomColorSnapshotTestCase.swift */, + DCE3AB102497619600889FFA /* _Helper */, + DC190F5E2496A2290069E2B0 /* GradientActivityIndicatorView */, + DC190F5F2496A2380069E2B0 /* GradientLoadingBarController */, 649A163D23770B4400404F3C /* Info.plist */, + DCE3AB172497670400889FFA /* README.md */, ); path = SnapshotTests; sourceTree = ""; @@ -261,6 +270,32 @@ name = Frameworks; sourceTree = ""; }; + DC190F5E2496A2290069E2B0 /* GradientActivityIndicatorView */ = { + isa = PBXGroup; + children = ( + 649A163B23770B4400404F3C /* DefaultColorSnapshotTestCase.swift */, + 649A164323770E9300404F3C /* CustomColorSnapshotTestCase.swift */, + ); + path = GradientActivityIndicatorView; + sourceTree = ""; + }; + DC190F5F2496A2380069E2B0 /* GradientLoadingBarController */ = { + isa = PBXGroup; + children = ( + DCE3AB14249764A000889FFA /* GradientLoadingBarControllerTestCase.swift */, + DC190F602496A24F0069E2B0 /* NotchGradientLoadingBarControllerTestCase.swift */, + ); + path = GradientLoadingBarController; + sourceTree = ""; + }; + DCE3AB102497619600889FFA /* _Helper */ = { + isa = PBXGroup; + children = ( + DCE3AB11249761AB00889FFA /* Snapshotting+WindowedImage.swift */, + ); + path = _Helper; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -586,6 +621,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + DCE3AB13249761B300889FFA /* Snapshotting+WindowedImage.swift in Sources */, + DC190F622496A25A0069E2B0 /* NotchGradientLoadingBarControllerTestCase.swift in Sources */, + DCE3AB16249764BB00889FFA /* GradientLoadingBarControllerTestCase.swift in Sources */, 649A164423770E9300404F3C /* CustomColorSnapshotTestCase.swift in Sources */, 649A163C23770B4400404F3C /* DefaultColorSnapshotTestCase.swift in Sources */, ); diff --git a/Example/SnapshotTests/CustomColorSnapshotTestCase.swift b/Example/SnapshotTests/GradientActivityIndicatorView/CustomColorSnapshotTestCase.swift similarity index 100% rename from Example/SnapshotTests/CustomColorSnapshotTestCase.swift rename to Example/SnapshotTests/GradientActivityIndicatorView/CustomColorSnapshotTestCase.swift diff --git a/Example/SnapshotTests/DefaultColorSnapshotTestCase.swift b/Example/SnapshotTests/GradientActivityIndicatorView/DefaultColorSnapshotTestCase.swift similarity index 100% rename from Example/SnapshotTests/DefaultColorSnapshotTestCase.swift rename to Example/SnapshotTests/GradientActivityIndicatorView/DefaultColorSnapshotTestCase.swift diff --git a/Example/SnapshotTests/__Snapshots__/CustomColorSnapshotTestCase/testGradientProgressIndicatorViewShouldContainCorrectColorsInitially.1.png b/Example/SnapshotTests/GradientActivityIndicatorView/__Snapshots__/CustomColorSnapshotTestCase/testGradientProgressIndicatorViewShouldContainCorrectColorsInitially.1.png similarity index 100% rename from Example/SnapshotTests/__Snapshots__/CustomColorSnapshotTestCase/testGradientProgressIndicatorViewShouldContainCorrectColorsInitially.1.png rename to Example/SnapshotTests/GradientActivityIndicatorView/__Snapshots__/CustomColorSnapshotTestCase/testGradientProgressIndicatorViewShouldContainCorrectColorsInitially.1.png diff --git a/Example/SnapshotTests/__Snapshots__/DefaultColorSnapshotTestCase/testGradientProgressIndicatorViewShouldContainCorrectColorsInitially.1.png b/Example/SnapshotTests/GradientActivityIndicatorView/__Snapshots__/DefaultColorSnapshotTestCase/testGradientProgressIndicatorViewShouldContainCorrectColorsInitially.1.png similarity index 100% rename from Example/SnapshotTests/__Snapshots__/DefaultColorSnapshotTestCase/testGradientProgressIndicatorViewShouldContainCorrectColorsInitially.1.png rename to Example/SnapshotTests/GradientActivityIndicatorView/__Snapshots__/DefaultColorSnapshotTestCase/testGradientProgressIndicatorViewShouldContainCorrectColorsInitially.1.png diff --git a/Example/SnapshotTests/GradientLoadingBarController/GradientLoadingBarControllerTestCase.swift b/Example/SnapshotTests/GradientLoadingBarController/GradientLoadingBarControllerTestCase.swift new file mode 100644 index 0000000..a16cbe4 --- /dev/null +++ b/Example/SnapshotTests/GradientLoadingBarController/GradientLoadingBarControllerTestCase.swift @@ -0,0 +1,49 @@ +// +// GradientLoadingBarControllerTestCase.swift +// GradientLoadingBar_SnapshotTests +// +// Created by Felix Mau on 06/14/20. +// Copyright © 2020 CocoaPods. All rights reserved. +// + +import XCTest +import SnapshotTesting + +@testable import GradientLoadingBar + +class GradientLoadingBarControllerTestCase: XCTestCase { + // MARK: - Private properties + + private var gradientLoadingBarController: GradientLoadingBarController! + + // MARK: - Public methods + + override func setUpWithError() throws { + try super.setUpWithError() + + gradientLoadingBarController = GradientLoadingBarController() + gradientLoadingBarController.fadeIn(duration: 0) + } + + override func tearDownWithError() throws { + gradientLoadingBarController = nil + + try super.tearDownWithError() + } + + // MARK: - Tests + + func testGradientLoadingBarController() { + // Given + let rootViewController = UIViewController() + + let expectation = self.expectation(description: "Waiting for view to appear.") + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { + expectation.fulfill() + } + + // Then + wait(for: [expectation], timeout: 1) + assertSnapshot(matching: rootViewController, as: .windowedImage) + } +} diff --git a/Example/SnapshotTests/GradientLoadingBarController/NotchGradientLoadingBarControllerTestCase.swift b/Example/SnapshotTests/GradientLoadingBarController/NotchGradientLoadingBarControllerTestCase.swift new file mode 100644 index 0000000..c21db3b --- /dev/null +++ b/Example/SnapshotTests/GradientLoadingBarController/NotchGradientLoadingBarControllerTestCase.swift @@ -0,0 +1,51 @@ +// +// NotchGradientLoadingBarControllerTestCase.swift +// GradientLoadingBar_SnapshotTests +// +// Created by Felix Mau on 06/14/20. +// Copyright © 2020 CocoaPods. All rights reserved. +// + +import XCTest +import SnapshotTesting + +@testable import GradientLoadingBar + +class NotchGradientLoadingBarControllerTestCase: XCTestCase { + // swiftlint:disable:previous type_name + + // MARK: - Private properties + + private var notchGradientLoadingBarController: NotchGradientLoadingBarController! + + // MARK: - Public methods + + override func setUpWithError() throws { + try super.setUpWithError() + + notchGradientLoadingBarController = NotchGradientLoadingBarController() + notchGradientLoadingBarController.fadeIn(duration: 0) + } + + override func tearDownWithError() throws { + notchGradientLoadingBarController = nil + + try super.tearDownWithError() + } + + // MARK: - Tests + + func testNotchGradientLoadingBarController() { + // Given + let rootViewController = UIViewController() + + let expectation = self.expectation(description: "Waiting for view to appear.") + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { + expectation.fulfill() + } + + // Then + wait(for: [expectation], timeout: 1) + assertSnapshot(matching: rootViewController, as: .windowedImage) + } +} diff --git a/Example/SnapshotTests/GradientLoadingBarController/__Snapshots__/GradientLoadingBarControllerTestCase/testGradientLoadingBarController.1.png b/Example/SnapshotTests/GradientLoadingBarController/__Snapshots__/GradientLoadingBarControllerTestCase/testGradientLoadingBarController.1.png new file mode 100644 index 0000000000000000000000000000000000000000..e3a7194004168700dee55239d02e2b8b47c944d8 GIT binary patch literal 83526 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 W-euv}a~h@KkIf?cg=a0DfB6?R5n9Cn literal 0 HcmV?d00001 diff --git a/Example/SnapshotTests/GradientLoadingBarController/__Snapshots__/NotchGradientLoadingBarControllerTestCase/testNotchGradientLoadingBarController.1.png b/Example/SnapshotTests/GradientLoadingBarController/__Snapshots__/NotchGradientLoadingBarControllerTestCase/testNotchGradientLoadingBarController.1.png new file mode 100644 index 0000000000000000000000000000000000000000..91f7d8b3c81e4ff55f4e8c49b973f28a4bf54fff GIT binary patch literal 96943 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 and + static var windowedImage: Snapshotting { + Snapshotting.image(precision: Config.precision).asyncPullback { viewController in + Async { callback in + UIView.setAnimationsEnabled(false) + + guard let keyWindow = UIApplication.shared.windows.first(where: { $0.isKeyWindow }) else { + fatalError("⚠️ – Failed to get key window from application!") + } + keyWindow.rootViewController = viewController + + DispatchQueue.main.async { + let image = UIGraphicsImageRenderer(bounds: keyWindow.bounds).image { _ in + keyWindow.drawHierarchy(in: keyWindow.bounds, afterScreenUpdates: true) + } + callback(image) + + UIView.setAnimationsEnabled(true) + } + } + } + } +} diff --git a/GradientLoadingBar/Classes/GradientLoadingBarController.swift b/GradientLoadingBar/Classes/GradientLoadingBarController.swift index f535983..1f2398e 100644 --- a/GradientLoadingBar/Classes/GradientLoadingBarController.swift +++ b/GradientLoadingBar/Classes/GradientLoadingBarController.swift @@ -80,6 +80,10 @@ open class GradientLoadingBarController { bindViewModelToView() } + deinit { + gradientActivityIndicatorView.removeFromSuperview() + } + // MARK: - Public methods /// Apply layout constraints for gradient loading view.