diff --git a/CalculatorReplicaSwiftUI.xcodeproj/project.pbxproj b/CalculatorReplicaSwiftUI.xcodeproj/project.pbxproj index 4f1ab10..428b76d 100644 --- a/CalculatorReplicaSwiftUI.xcodeproj/project.pbxproj +++ b/CalculatorReplicaSwiftUI.xcodeproj/project.pbxproj @@ -21,6 +21,11 @@ E24E84C0244276E8007AC7AE /* CalculatorResultDisplayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E24E84BF244276E8007AC7AE /* CalculatorResultDisplayView.swift */; }; E256231124427A3E00AA7CD0 /* CalculatorButtonViewLegacy.swift in Sources */ = {isa = PBXBuildFile; fileRef = E256231024427A3E00AA7CD0 /* CalculatorButtonViewLegacy.swift */; }; E256231324427BB400AA7CD0 /* CalculatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E256231224427BB400AA7CD0 /* CalculatorView.swift */; }; + E2608A522B4E60CB00060A20 /* CalculatorImageButtonTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2608A512B4E60CB00060A20 /* CalculatorImageButtonTests.swift */; }; + E2608A542B4E619F00060A20 /* CalculatorImageButtonProtocolMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2608A532B4E619F00060A20 /* CalculatorImageButtonProtocolMock.swift */; }; + E2608A562B4E61B800060A20 /* CalculatorButtonStyleProtocolMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2608A552B4E61B800060A20 /* CalculatorButtonStyleProtocolMock.swift */; }; + E2608A582B4E634000060A20 /* CalculatorTextButtonTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2608A572B4E634000060A20 /* CalculatorTextButtonTests.swift */; }; + E2608A5A2B4E63B300060A20 /* CalculatorTextButtonProtocolMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2608A592B4E63B300060A20 /* CalculatorTextButtonProtocolMock.swift */; }; E263ED6A244AA99D0001C89B /* String+Digits.swift in Sources */ = {isa = PBXBuildFile; fileRef = E263ED69244AA99D0001C89B /* String+Digits.swift */; }; E263ED6C244ACE260001C89B /* Decimal+Digits.swift in Sources */ = {isa = PBXBuildFile; fileRef = E263ED6B244ACE260001C89B /* Decimal+Digits.swift */; }; E2654C6C244D5304005BA7EC /* CalculatorOperationValidatorProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2654C6B244D5304005BA7EC /* CalculatorOperationValidatorProtocol.swift */; }; @@ -105,6 +110,11 @@ E24E84BF244276E8007AC7AE /* CalculatorResultDisplayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalculatorResultDisplayView.swift; sourceTree = ""; }; E256231024427A3E00AA7CD0 /* CalculatorButtonViewLegacy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalculatorButtonViewLegacy.swift; sourceTree = ""; }; E256231224427BB400AA7CD0 /* CalculatorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalculatorView.swift; sourceTree = ""; }; + E2608A512B4E60CB00060A20 /* CalculatorImageButtonTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalculatorImageButtonTests.swift; sourceTree = ""; }; + E2608A532B4E619F00060A20 /* CalculatorImageButtonProtocolMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalculatorImageButtonProtocolMock.swift; sourceTree = ""; }; + E2608A552B4E61B800060A20 /* CalculatorButtonStyleProtocolMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalculatorButtonStyleProtocolMock.swift; sourceTree = ""; }; + E2608A572B4E634000060A20 /* CalculatorTextButtonTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalculatorTextButtonTests.swift; sourceTree = ""; }; + E2608A592B4E63B300060A20 /* CalculatorTextButtonProtocolMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalculatorTextButtonProtocolMock.swift; sourceTree = ""; }; E263ED69244AA99D0001C89B /* String+Digits.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Digits.swift"; sourceTree = ""; }; E263ED6B244ACE260001C89B /* Decimal+Digits.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Decimal+Digits.swift"; sourceTree = ""; }; E2654C6B244D5304005BA7EC /* CalculatorOperationValidatorProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalculatorOperationValidatorProtocol.swift; sourceTree = ""; }; @@ -195,6 +205,8 @@ E215DE2C2B018CAE00670876 /* Mocks */, E215DE2D2B018DA100670876 /* CalculatorImageButtonLegacyTests.swift */, E215DE302B019BBC00670876 /* CalculatorTextButtonLegacyTests.swift */, + E2608A512B4E60CB00060A20 /* CalculatorImageButtonTests.swift */, + E2608A572B4E634000060A20 /* CalculatorTextButtonTests.swift */, ); path = CalculatorReplicaSwiftUISnapshotTests; sourceTree = ""; @@ -210,6 +222,9 @@ isa = PBXGroup; children = ( E215DDFE2B018B5B00670876 /* CalculatorButtonProtocolMock.swift */, + E2608A532B4E619F00060A20 /* CalculatorImageButtonProtocolMock.swift */, + E2608A552B4E61B800060A20 /* CalculatorButtonStyleProtocolMock.swift */, + E2608A592B4E63B300060A20 /* CalculatorTextButtonProtocolMock.swift */, ); path = Mocks; sourceTree = ""; @@ -619,8 +634,13 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + E2608A5A2B4E63B300060A20 /* CalculatorTextButtonProtocolMock.swift in Sources */, E215DE312B019BBC00670876 /* CalculatorTextButtonLegacyTests.swift in Sources */, E215DE2E2B018DA100670876 /* CalculatorImageButtonLegacyTests.swift in Sources */, + E2608A582B4E634000060A20 /* CalculatorTextButtonTests.swift in Sources */, + E2608A522B4E60CB00060A20 /* CalculatorImageButtonTests.swift in Sources */, + E2608A562B4E61B800060A20 /* CalculatorButtonStyleProtocolMock.swift in Sources */, + E2608A542B4E619F00060A20 /* CalculatorImageButtonProtocolMock.swift in Sources */, E215DE2F2B018EBF00670876 /* CalculatorButtonProtocolMock.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/CalculatorReplicaSwiftUISnapshotTests/CalculatorImageButtonTests.swift b/CalculatorReplicaSwiftUISnapshotTests/CalculatorImageButtonTests.swift new file mode 100644 index 0000000..b682ad0 --- /dev/null +++ b/CalculatorReplicaSwiftUISnapshotTests/CalculatorImageButtonTests.swift @@ -0,0 +1,39 @@ +// +// CalculatorImageButtonTests.swift +// CalculatorReplicaSwiftUISnapshotTests +// +// Created by Alonso on 10/01/24. +// Copyright © 2024 Alonso. All rights reserved. +// + +@testable import Calculator +import SnapshotTesting +import XCTest + +final class CalculatorImageButtonTests: XCTestCase { + + func testCalculatorImageButton() { + let imageButton = CalculatorImageButtonProtocolMock() + let style = CalculatorButtonStyleProtocolMock() + style.gridSpace = 1 + + imageButton.style = style + imageButton.imageName = "plus" + + let view = CalculatorImageButton(button: imageButton) + assertSnapshot(of: view, as: .image) + } + + func testCalculatorImageButtonExpandedGridSpace() { + let imageButton = CalculatorImageButtonProtocolMock() + let style = CalculatorButtonStyleProtocolMock() + style.gridSpace = 2 + + imageButton.style = style + imageButton.imageName = "plus" + + let view = CalculatorImageButton(button: imageButton) + assertSnapshot(of: view, as: .image) + } + +} diff --git a/CalculatorReplicaSwiftUISnapshotTests/CalculatorTextButtonTests.swift b/CalculatorReplicaSwiftUISnapshotTests/CalculatorTextButtonTests.swift new file mode 100644 index 0000000..ba7c992 --- /dev/null +++ b/CalculatorReplicaSwiftUISnapshotTests/CalculatorTextButtonTests.swift @@ -0,0 +1,39 @@ +// +// CalculatorTextButtonTests.swift +// CalculatorReplicaSwiftUISnapshotTests +// +// Created by Alonso on 10/01/24. +// Copyright © 2024 Alonso. All rights reserved. +// + +@testable import Calculator +import SnapshotTesting +import XCTest + +final class CalculatorTextButtonTests: XCTestCase { + + func testCalculatorTextButton() { + let textButton = CalculatorTextButtonProtocolMock() + let style = CalculatorButtonStyleProtocolMock() + style.gridSpace = 1 + + textButton.style = style + textButton.text = "1" + + let view = CalculatorTextButton(button: textButton) + assertSnapshot(of: view, as: .image) + } + + func testCalculatorTextButtonExpandedGridSpace() { + let textButton = CalculatorTextButtonProtocolMock() + let style = CalculatorButtonStyleProtocolMock() + style.gridSpace = 2 + + textButton.style = style + textButton.text = "1" + + let view = CalculatorTextButton(button: textButton) + assertSnapshot(of: view, as: .image) + } + +} diff --git a/CalculatorReplicaSwiftUISnapshotTests/Mocks/CalculatorButtonProtocolMock.swift b/CalculatorReplicaSwiftUISnapshotTests/Mocks/CalculatorButtonProtocolMock.swift index 0ba9017..988bbcc 100644 --- a/CalculatorReplicaSwiftUISnapshotTests/Mocks/CalculatorButtonProtocolMock.swift +++ b/CalculatorReplicaSwiftUISnapshotTests/Mocks/CalculatorButtonProtocolMock.swift @@ -28,11 +28,3 @@ final class CalculatorButtonProtocolMock: CalculatorButtonProtocol { var shouldShowOnResultDisplay: Bool = true } - -final class CalculatorButtonStyleProtocolMock: CalculatorButtonStyleProtocol { - var gridSpace: Int = 0 - - var tintColor: Color = .primary - - var backgroundColor: Color = .accentColor -} diff --git a/CalculatorReplicaSwiftUISnapshotTests/Mocks/CalculatorButtonStyleProtocolMock.swift b/CalculatorReplicaSwiftUISnapshotTests/Mocks/CalculatorButtonStyleProtocolMock.swift new file mode 100644 index 0000000..52276e6 --- /dev/null +++ b/CalculatorReplicaSwiftUISnapshotTests/Mocks/CalculatorButtonStyleProtocolMock.swift @@ -0,0 +1,18 @@ +// +// CalculatorButtonStyleProtocolMock.swift +// CalculatorReplicaSwiftUISnapshotTests +// +// Created by Alonso on 10/01/24. +// Copyright © 2024 Alonso. All rights reserved. +// + +import SwiftUI +@testable import Calculator + +final class CalculatorButtonStyleProtocolMock: CalculatorButtonStyleProtocol { + var gridSpace: Int = 0 + + var tintColor: Color = .primary + + var backgroundColor: Color = .accentColor +} diff --git a/CalculatorReplicaSwiftUISnapshotTests/Mocks/CalculatorImageButtonProtocolMock.swift b/CalculatorReplicaSwiftUISnapshotTests/Mocks/CalculatorImageButtonProtocolMock.swift new file mode 100644 index 0000000..67e7929 --- /dev/null +++ b/CalculatorReplicaSwiftUISnapshotTests/Mocks/CalculatorImageButtonProtocolMock.swift @@ -0,0 +1,20 @@ +// +// CalculatorImageButtonProtocolMock.swift +// CalculatorReplicaSwiftUISnapshotTests +// +// Created by Alonso on 10/01/24. +// Copyright © 2024 Alonso. All rights reserved. +// + +import SwiftUI +@testable import Calculator + +final class CalculatorImageButtonProtocolMock: CalculatorImageButtonProtocol { + var identifier: String = "" + + var imageName: String = "" + + var accessibilityLabel: String = "" + + var style: CalculatorButtonStyleProtocol = CalculatorButtonStyleProtocolMock() +} diff --git a/CalculatorReplicaSwiftUISnapshotTests/Mocks/CalculatorTextButtonProtocolMock.swift b/CalculatorReplicaSwiftUISnapshotTests/Mocks/CalculatorTextButtonProtocolMock.swift new file mode 100644 index 0000000..a479891 --- /dev/null +++ b/CalculatorReplicaSwiftUISnapshotTests/Mocks/CalculatorTextButtonProtocolMock.swift @@ -0,0 +1,20 @@ +// +// CalculatorTextButtonProtocolMock.swift +// CalculatorReplicaSwiftUISnapshotTests +// +// Created by Alonso on 10/01/24. +// Copyright © 2024 Alonso. All rights reserved. +// + +import SwiftUI +@testable import Calculator + +final class CalculatorTextButtonProtocolMock: CalculatorTextButtonProtocol { + var identifier: String = "" + + var text: String = "" + + var accessibilityLabel: String = "" + + var style: CalculatorButtonStyleProtocol = CalculatorButtonStyleProtocolMock() +} diff --git a/CalculatorReplicaSwiftUISnapshotTests/__Snapshots__/CalculatorImageButtonTests/testCalculatorImageButton.1.png b/CalculatorReplicaSwiftUISnapshotTests/__Snapshots__/CalculatorImageButtonTests/testCalculatorImageButton.1.png new file mode 100644 index 0000000..6a8931f Binary files /dev/null and b/CalculatorReplicaSwiftUISnapshotTests/__Snapshots__/CalculatorImageButtonTests/testCalculatorImageButton.1.png differ diff --git a/CalculatorReplicaSwiftUISnapshotTests/__Snapshots__/CalculatorImageButtonTests/testCalculatorImageButtonExpandedGridSpace.1.png b/CalculatorReplicaSwiftUISnapshotTests/__Snapshots__/CalculatorImageButtonTests/testCalculatorImageButtonExpandedGridSpace.1.png new file mode 100644 index 0000000..98e7eff Binary files /dev/null and b/CalculatorReplicaSwiftUISnapshotTests/__Snapshots__/CalculatorImageButtonTests/testCalculatorImageButtonExpandedGridSpace.1.png differ diff --git a/CalculatorReplicaSwiftUISnapshotTests/__Snapshots__/CalculatorTextButtonTests/testCalculatorTextButton.1.png b/CalculatorReplicaSwiftUISnapshotTests/__Snapshots__/CalculatorTextButtonTests/testCalculatorTextButton.1.png new file mode 100644 index 0000000..a64cd64 Binary files /dev/null and b/CalculatorReplicaSwiftUISnapshotTests/__Snapshots__/CalculatorTextButtonTests/testCalculatorTextButton.1.png differ diff --git a/CalculatorReplicaSwiftUISnapshotTests/__Snapshots__/CalculatorTextButtonTests/testCalculatorTextButtonExpandedGridSpace.1.png b/CalculatorReplicaSwiftUISnapshotTests/__Snapshots__/CalculatorTextButtonTests/testCalculatorTextButtonExpandedGridSpace.1.png new file mode 100644 index 0000000..8ffe3b6 Binary files /dev/null and b/CalculatorReplicaSwiftUISnapshotTests/__Snapshots__/CalculatorTextButtonTests/testCalculatorTextButtonExpandedGridSpace.1.png differ