diff --git a/core/Sources/Components/Button/Enum/ButtonIntentColor.swift b/core/Sources/Components/Button/Enum/ButtonIntent.swift similarity index 89% rename from core/Sources/Components/Button/Enum/ButtonIntentColor.swift rename to core/Sources/Components/Button/Enum/ButtonIntent.swift index 5d259ce17..c34984fba 100644 --- a/core/Sources/Components/Button/Enum/ButtonIntentColor.swift +++ b/core/Sources/Components/Button/Enum/ButtonIntent.swift @@ -1,5 +1,5 @@ // -// ButtonIntentColor.swift +// ButtonIntent.swift // Spark // // Created by janniklas.freundt.ext on 02.05.23. @@ -10,7 +10,7 @@ import Foundation /// A button intent is used to apply a color scheme to a button. @frozen -public enum ButtonIntentColor: CaseIterable { +public enum ButtonIntent: CaseIterable { /// Intent used for warning-feedback. case alert diff --git a/core/Sources/Components/Button/Properties/Internal/Border/ButtonBorder+ExtensionTests.swift b/core/Sources/Components/Button/Properties/Internal/Border/ButtonBorder+ExtensionTests.swift new file mode 100644 index 000000000..6d39541b2 --- /dev/null +++ b/core/Sources/Components/Button/Properties/Internal/Border/ButtonBorder+ExtensionTests.swift @@ -0,0 +1,25 @@ +// +// ButtonBorder.swift +// SparkCore +// +// Created by robin.lemaire on 23/06/2023. +// Copyright © 2023 Adevinta. All rights reserved. +// + +import Foundation +@testable import SparkCore + +extension ButtonBorder { + + // MARK: - Properties + + static func mocked( + width: CGFloat = 2, + radius: CGFloat = 8 + ) -> Self { + return .init( + width: width, + radius: radius + ) + } +} diff --git a/core/Sources/Components/Button/Properties/Internal/ButtonBorder.swift b/core/Sources/Components/Button/Properties/Internal/Border/ButtonBorder.swift similarity index 60% rename from core/Sources/Components/Button/Properties/Internal/ButtonBorder.swift rename to core/Sources/Components/Button/Properties/Internal/Border/ButtonBorder.swift index d87ecb7bc..d821486f9 100644 --- a/core/Sources/Components/Button/Properties/Internal/ButtonBorder.swift +++ b/core/Sources/Components/Button/Properties/Internal/Border/ButtonBorder.swift @@ -8,13 +8,7 @@ import Foundation -// sourcery: AutoMockable -protocol ButtonBorder { - var width: CGFloat { get } - var radius: CGFloat { get } -} - -struct ButtonBorderDefault: ButtonBorder { +struct ButtonBorder: Equatable { // MARK: - Properties diff --git a/core/Sources/Components/Button/Properties/Internal/ButtonColors.swift b/core/Sources/Components/Button/Properties/Internal/ButtonColors.swift deleted file mode 100644 index 24acd923b..000000000 --- a/core/Sources/Components/Button/Properties/Internal/ButtonColors.swift +++ /dev/null @@ -1,28 +0,0 @@ -// -// ButtonColors.swift -// Spark -// -// Created by janniklas.freundt.ext on 02.05.23. -// Copyright © 2023 Adevinta. All rights reserved. -// - -// sourcery: AutoMockable -protocol ButtonColors { - var foregroundColor: any ColorToken { get } - var backgroundColor: any ColorToken { get } - var pressedBackgroundColor: any ColorToken { get } - var borderColor: any ColorToken { get } - var pressedBorderColor: any ColorToken { get } -} - -/// All Button Colors from a theme, variant and intent colors -struct ButtonColorsDefault: ButtonColors { - - // MARK: - Properties - - let foregroundColor: any ColorToken - let backgroundColor: any ColorToken - let pressedBackgroundColor: any ColorToken - let borderColor: any ColorToken - let pressedBorderColor: any ColorToken -} diff --git a/core/Sources/Components/Button/Properties/Internal/ButtonContent.swift b/core/Sources/Components/Button/Properties/Internal/ButtonContent.swift deleted file mode 100644 index b4da1f0f5..000000000 --- a/core/Sources/Components/Button/Properties/Internal/ButtonContent.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// ButtonContent.swift -// SparkCore -// -// Created by robin.lemaire on 27/06/2023. -// Copyright © 2023 Adevinta. All rights reserved. -// - -// sourcery: AutoMockable -protocol ButtonContent { - var showIconImage: Bool { get } - var isIconImageOnRight: Bool { get } - var iconImage: ImageEither? { get } - - var showText: Bool { get } -} - -struct ButtonContentDefault: ButtonContent { - - // MARK: - Properties - - let showIconImage: Bool - let isIconImageOnRight: Bool - let iconImage: ImageEither? - - let showText: Bool -} diff --git a/core/Sources/Components/Button/Properties/Internal/ButtonCurrentColors.swift b/core/Sources/Components/Button/Properties/Internal/ButtonCurrentColors.swift deleted file mode 100644 index 8d9d01f2d..000000000 --- a/core/Sources/Components/Button/Properties/Internal/ButtonCurrentColors.swift +++ /dev/null @@ -1,24 +0,0 @@ -// -// ButtonCurrentColors.swift -// SparkCore -// -// Created by robin.lemaire on 27/06/2023. -// Copyright © 2023 Adevinta. All rights reserved. -// - -// sourcery: AutoMockable -protocol ButtonCurrentColors { - var foregroundColor: any ColorToken { get } - var backgroundColor: any ColorToken { get } - var borderColor: any ColorToken { get } -} - -/// Current Button Colors properties from a button colors and state -struct ButtonCurrentColorsDefault: ButtonCurrentColors { - - // MARK: - Properties - - let foregroundColor: any ColorToken - let backgroundColor: any ColorToken - let borderColor: any ColorToken -} diff --git a/core/Sources/Components/Button/Properties/Internal/Colors/ButtonColors+ExtensionTests.swift b/core/Sources/Components/Button/Properties/Internal/Colors/ButtonColors+ExtensionTests.swift new file mode 100644 index 000000000..35bbae3a6 --- /dev/null +++ b/core/Sources/Components/Button/Properties/Internal/Colors/ButtonColors+ExtensionTests.swift @@ -0,0 +1,30 @@ +// +// ButtonColors.swift +// Spark +// +// Created by janniklas.freundt.ext on 02.05.23. +// Copyright © 2023 Adevinta. All rights reserved. +// + +@testable import SparkCore + +extension ButtonColors { + + // MARK: - Properties + + static func mocked( + foregroundColor: any ColorToken = ColorTokenGeneratedMock.random(), + backgroundColor: any ColorToken = ColorTokenGeneratedMock.random(), + pressedBackgroundColor: any ColorToken = ColorTokenGeneratedMock.random(), + borderColor: any ColorToken = ColorTokenGeneratedMock.random(), + pressedBorderColor: any ColorToken = ColorTokenGeneratedMock.random() + ) -> Self { + return .init( + foregroundColor: foregroundColor, + backgroundColor: backgroundColor, + pressedBackgroundColor: pressedBackgroundColor, + borderColor: borderColor, + pressedBorderColor: pressedBorderColor + ) + } +} diff --git a/core/Sources/Components/Button/Properties/Internal/Colors/ButtonColors.swift b/core/Sources/Components/Button/Properties/Internal/Colors/ButtonColors.swift new file mode 100644 index 000000000..681e30879 --- /dev/null +++ b/core/Sources/Components/Button/Properties/Internal/Colors/ButtonColors.swift @@ -0,0 +1,36 @@ +// +// ButtonColors.swift +// Spark +// +// Created by janniklas.freundt.ext on 02.05.23. +// Copyright © 2023 Adevinta. All rights reserved. +// + +/// All Button Colors from a theme, variant and intents +struct ButtonColors { + + // MARK: - Properties + + let foregroundColor: any ColorToken + let backgroundColor: any ColorToken + let pressedBackgroundColor: any ColorToken + let borderColor: any ColorToken + let pressedBorderColor: any ColorToken +} + +// MARK: Hashable & Equatable + +extension ButtonColors: Hashable, Equatable { + + func hash(into hasher: inout Hasher) { + hasher.combine(self.foregroundColor) + hasher.combine(self.backgroundColor) + hasher.combine(self.pressedBackgroundColor) + hasher.combine(self.borderColor) + hasher.combine(self.pressedBorderColor) + } + + static func == (lhs: ButtonColors, rhs: ButtonColors) -> Bool { + return lhs.hashValue == rhs.hashValue + } +} diff --git a/core/Sources/Components/Button/Properties/Internal/Content/ButtonContent+ExtensionTests.swift b/core/Sources/Components/Button/Properties/Internal/Content/ButtonContent+ExtensionTests.swift new file mode 100644 index 000000000..8f4dd7cda --- /dev/null +++ b/core/Sources/Components/Button/Properties/Internal/Content/ButtonContent+ExtensionTests.swift @@ -0,0 +1,28 @@ +// +// ButtonContent.swift +// SparkCore +// +// Created by robin.lemaire on 27/06/2023. +// Copyright © 2023 Adevinta. All rights reserved. +// + +@testable import SparkCore + +extension ButtonContent { + + // MARK: - Properties + + static func mocked( + shouldShowIconImage: Bool = true , + isIconImageOnRight: Bool = false, + iconImage: ImageEither? = .left(IconographyTests.shared.arrow), + shouldShowText: Bool = true + ) -> Self { + return .init( + shouldShowIconImage: shouldShowIconImage, + isIconImageOnRight: isIconImageOnRight, + iconImage: iconImage, + shouldShowText: shouldShowText + ) + } +} diff --git a/core/Sources/Components/Button/Properties/Internal/Content/ButtonContent.swift b/core/Sources/Components/Button/Properties/Internal/Content/ButtonContent.swift new file mode 100644 index 000000000..0f2ee5283 --- /dev/null +++ b/core/Sources/Components/Button/Properties/Internal/Content/ButtonContent.swift @@ -0,0 +1,18 @@ +// +// ButtonContent.swift +// SparkCore +// +// Created by robin.lemaire on 27/06/2023. +// Copyright © 2023 Adevinta. All rights reserved. +// + +struct ButtonContent: Equatable { + + // MARK: - Properties + + let shouldShowIconImage: Bool + let isIconImageOnRight: Bool + let iconImage: ImageEither? + + let shouldShowText: Bool +} diff --git a/core/Sources/Components/Button/Properties/Internal/CurrentColors/ButtonCurrentColors+ExtensionTests.swift b/core/Sources/Components/Button/Properties/Internal/CurrentColors/ButtonCurrentColors+ExtensionTests.swift new file mode 100644 index 000000000..d6179e7e3 --- /dev/null +++ b/core/Sources/Components/Button/Properties/Internal/CurrentColors/ButtonCurrentColors+ExtensionTests.swift @@ -0,0 +1,26 @@ +// +// ButtonCurrentColors.swift +// SparkCore +// +// Created by robin.lemaire on 27/06/2023. +// Copyright © 2023 Adevinta. All rights reserved. +// + +@testable import SparkCore + +extension ButtonCurrentColors { + + // MARK: - Properties + + static func mocked( + foregroundColor: any ColorToken = ColorTokenGeneratedMock.random(), + backgroundColor: any ColorToken = ColorTokenGeneratedMock.random(), + borderColor: any ColorToken = ColorTokenGeneratedMock.random() + ) -> Self { + return .init( + foregroundColor: foregroundColor, + backgroundColor: backgroundColor, + borderColor: borderColor + ) + } +} diff --git a/core/Sources/Components/Button/Properties/Internal/CurrentColors/ButtonCurrentColors.swift b/core/Sources/Components/Button/Properties/Internal/CurrentColors/ButtonCurrentColors.swift new file mode 100644 index 000000000..3c7bb5052 --- /dev/null +++ b/core/Sources/Components/Button/Properties/Internal/CurrentColors/ButtonCurrentColors.swift @@ -0,0 +1,33 @@ +// +// ButtonCurrentColors.swift +// SparkCore +// +// Created by robin.lemaire on 27/06/2023. +// Copyright © 2023 Adevinta. All rights reserved. +// + +/// Current Button Colors properties from a button colors and state +struct ButtonCurrentColors { + + // MARK: - Properties + + let foregroundColor: any ColorToken + let backgroundColor: any ColorToken + let borderColor: any ColorToken +} + +// MARK: Hashable & Equatable + +extension ButtonCurrentColors: Hashable, Equatable { + + func hash(into hasher: inout Hasher) { + hasher.combine(self.foregroundColor) + hasher.combine(self.backgroundColor) + hasher.combine(self.borderColor) + } + + static func == (lhs: ButtonCurrentColors, rhs: ButtonCurrentColors) -> Bool { + return lhs.hashValue == rhs.hashValue + } +} + diff --git a/core/Sources/Components/Button/Properties/Internal/Sizes/ButtonSizes+ExtensionTests.swift b/core/Sources/Components/Button/Properties/Internal/Sizes/ButtonSizes+ExtensionTests.swift new file mode 100644 index 000000000..1d9c0a96b --- /dev/null +++ b/core/Sources/Components/Button/Properties/Internal/Sizes/ButtonSizes+ExtensionTests.swift @@ -0,0 +1,25 @@ +// +// ButtonSizes.swift +// SparkCore +// +// Created by robin.lemaire on 30/06/2023. +// Copyright © 2023 Adevinta. All rights reserved. +// + +import Foundation +@testable import SparkCore + +extension ButtonSizes { + + // MARK: - Properties + + static func mocked( + height: CGFloat = 30, + iconSize: CGFloat = 20 + ) -> Self { + return .init( + height: height, + iconSize: iconSize + ) + } +} diff --git a/core/Sources/Components/Button/Properties/Internal/ButtonSizes.swift b/core/Sources/Components/Button/Properties/Internal/Sizes/ButtonSizes.swift similarity index 60% rename from core/Sources/Components/Button/Properties/Internal/ButtonSizes.swift rename to core/Sources/Components/Button/Properties/Internal/Sizes/ButtonSizes.swift index 4eac1225f..189a5cb43 100644 --- a/core/Sources/Components/Button/Properties/Internal/ButtonSizes.swift +++ b/core/Sources/Components/Button/Properties/Internal/Sizes/ButtonSizes.swift @@ -8,13 +8,7 @@ import Foundation -// sourcery: AutoMockable -protocol ButtonSizes { - var height: CGFloat { get } - var iconSize: CGFloat { get } -} - -struct ButtonSizesDefault: ButtonSizes { +struct ButtonSizes: Equatable { // MARK: - Properties diff --git a/core/Sources/Components/Button/Properties/Internal/Spacings/ButtonSpacings+ExtensionTests.swift b/core/Sources/Components/Button/Properties/Internal/Spacings/ButtonSpacings+ExtensionTests.swift new file mode 100644 index 000000000..1ef929dec --- /dev/null +++ b/core/Sources/Components/Button/Properties/Internal/Spacings/ButtonSpacings+ExtensionTests.swift @@ -0,0 +1,27 @@ +// +// ButtonSpacings.swift +// SparkCore +// +// Created by robin.lemaire on 23/06/2023. +// Copyright © 2023 Adevinta. All rights reserved. +// + +import Foundation +@testable import SparkCore + +extension ButtonSpacings { + + // MARK: - Properties + + static func mocked( + verticalSpacing: CGFloat = 10, + horizontalSpacing: CGFloat = 11, + horizontalPadding: CGFloat = 12 + ) -> Self { + return .init( + verticalSpacing: verticalSpacing, + horizontalSpacing: horizontalSpacing, + horizontalPadding: horizontalPadding + ) + } +} diff --git a/core/Sources/Components/Button/Properties/Internal/ButtonSpacings.swift b/core/Sources/Components/Button/Properties/Internal/Spacings/ButtonSpacings.swift similarity index 56% rename from core/Sources/Components/Button/Properties/Internal/ButtonSpacings.swift rename to core/Sources/Components/Button/Properties/Internal/Spacings/ButtonSpacings.swift index e08ed74d3..38e9bd874 100644 --- a/core/Sources/Components/Button/Properties/Internal/ButtonSpacings.swift +++ b/core/Sources/Components/Button/Properties/Internal/Spacings/ButtonSpacings.swift @@ -8,14 +8,7 @@ import Foundation -// sourcery: AutoMockable -protocol ButtonSpacings { - var verticalSpacing: CGFloat { get } - var horizontalSpacing: CGFloat { get } - var horizontalPadding: CGFloat { get } -} - -struct ButtonSpacingsDefault: ButtonSpacings { +struct ButtonSpacings: Equatable { // MARK: - Properties diff --git a/core/Sources/Components/Button/Properties/Internal/State/ButtonState+ExtensionTests.swift b/core/Sources/Components/Button/Properties/Internal/State/ButtonState+ExtensionTests.swift new file mode 100644 index 000000000..52c42d837 --- /dev/null +++ b/core/Sources/Components/Button/Properties/Internal/State/ButtonState+ExtensionTests.swift @@ -0,0 +1,25 @@ +// +// ButtonState.swift +// SparkCore +// +// Created by robin.lemaire on 27/06/2023. +// Copyright © 2023 Adevinta. All rights reserved. +// + +import Foundation +@testable import SparkCore + +extension ButtonState { + + // MARK: - Properties + + static func mocked( + isInteractionEnabled: Bool = true, + opacity: CGFloat = 1.0 + ) -> Self { + return .init( + isInteractionEnabled: isInteractionEnabled, + opacity: opacity + ) + } +} diff --git a/core/Sources/Components/Button/Properties/Internal/ButtonState.swift b/core/Sources/Components/Button/Properties/Internal/State/ButtonState.swift similarity index 59% rename from core/Sources/Components/Button/Properties/Internal/ButtonState.swift rename to core/Sources/Components/Button/Properties/Internal/State/ButtonState.swift index 65cf00401..32409ca3d 100644 --- a/core/Sources/Components/Button/Properties/Internal/ButtonState.swift +++ b/core/Sources/Components/Button/Properties/Internal/State/ButtonState.swift @@ -8,13 +8,7 @@ import Foundation -// sourcery: AutoMockable -protocol ButtonState { - var isInteractionEnabled: Bool { get } - var opacity: CGFloat { get } -} - -struct ButtonStateDefault: ButtonState { +struct ButtonState: Equatable { // MARK: - Properties diff --git a/core/Sources/Components/Button/UseCase/GetBorder/ButtonGetBorderUseCase.swift b/core/Sources/Components/Button/UseCase/GetBorder/ButtonGetBorderUseCase.swift index 68fd03a9d..082470b2f 100644 --- a/core/Sources/Components/Button/UseCase/GetBorder/ButtonGetBorderUseCase.swift +++ b/core/Sources/Components/Button/UseCase/GetBorder/ButtonGetBorderUseCase.swift @@ -10,7 +10,7 @@ import Foundation // sourcery: AutoMockable protocol ButtonGetBorderUseCaseable { - func execute(forShape shape: ButtonShape, + func execute(for shape: ButtonShape, border: Border, variant: ButtonVariant) -> ButtonBorder } @@ -20,7 +20,7 @@ struct ButtonGetBorderUseCase: ButtonGetBorderUseCaseable { // MARK: - Methods func execute( - forShape shape: ButtonShape, + for shape: ButtonShape, border: Border, variant: ButtonVariant ) -> ButtonBorder { @@ -36,7 +36,7 @@ struct ButtonGetBorderUseCase: ButtonGetBorderUseCaseable { let width = (variant == .outlined) ? border.width.small : 0 - return ButtonBorderDefault( + return .init( width: width, radius: radius ) diff --git a/core/Sources/Components/Button/UseCase/GetBorder/ButtonGetBorderUseCaseTests.swift b/core/Sources/Components/Button/UseCase/GetBorder/ButtonGetBorderUseCaseTests.swift index 21f3118e7..e33227a70 100644 --- a/core/Sources/Components/Button/UseCase/GetBorder/ButtonGetBorderUseCaseTests.swift +++ b/core/Sources/Components/Button/UseCase/GetBorder/ButtonGetBorderUseCaseTests.swift @@ -92,7 +92,7 @@ private extension ButtonGetBorderUseCaseTests { // WHEN let border = useCase.execute( - forShape: givenShape, + for: givenShape, border: self.borderMock, variant: .filled ) @@ -114,7 +114,7 @@ private extension ButtonGetBorderUseCaseTests { // WHEN let border = useCase.execute( - forShape: .pill, + for: .pill, border: self.borderMock, variant: givenVariant ) diff --git a/core/Sources/Components/Button/UseCase/GetColors/ButtonGetColorsUseCase.swift b/core/Sources/Components/Button/UseCase/GetColors/ButtonGetColorsUseCase.swift index 25958c151..f283a8837 100644 --- a/core/Sources/Components/Button/UseCase/GetColors/ButtonGetColorsUseCase.swift +++ b/core/Sources/Components/Button/UseCase/GetColors/ButtonGetColorsUseCase.swift @@ -8,8 +8,8 @@ // sourcery: AutoMockable protocol ButtonGetColorsUseCaseable { - func execute(forTheme theme: Theme, - intentColor: ButtonIntentColor, + func execute(for theme: Theme, + intent: ButtonIntent, variant: ButtonVariant) -> ButtonColors } @@ -41,8 +41,8 @@ struct ButtonGetColorsUseCase: ButtonGetColorsUseCaseable { // MARK: - Methods func execute( - forTheme theme: Theme, - intentColor: ButtonIntentColor, + for theme: Theme, + intent: ButtonIntent, variant: ButtonVariant ) -> ButtonColors { let colors = theme.colors @@ -63,7 +63,7 @@ struct ButtonGetColorsUseCase: ButtonGetColorsUseCaseable { } return useCase.colors( - forIntentColor: intentColor, + for: intent, colors: colors, dims: dims ) diff --git a/core/Sources/Components/Button/UseCase/GetColors/ButtonGetColorsUseCaseTests.swift b/core/Sources/Components/Button/UseCase/GetColors/ButtonGetColorsUseCaseTests.swift index 23a704e1f..74bdbafa3 100644 --- a/core/Sources/Components/Button/UseCase/GetColors/ButtonGetColorsUseCaseTests.swift +++ b/core/Sources/Components/Button/UseCase/GetColors/ButtonGetColorsUseCaseTests.swift @@ -18,22 +18,17 @@ final class ButtonGetColorsUseCaseTests: XCTestCase { // GIVEN let variants: [ButtonVariant] = [.filled, .outlined, .contrast, .tinted, .ghost] let items = variants.map { - let intentColorsMock = ButtonColorsGeneratedMock() - intentColorsMock.underlyingForegroundColor = ColorTokenGeneratedMock.random() - intentColorsMock.underlyingBackgroundColor = ColorTokenGeneratedMock.random() - intentColorsMock.underlyingPressedBackgroundColor = ColorTokenGeneratedMock.random() - intentColorsMock.underlyingBorderColor = ColorTokenGeneratedMock.random() - intentColorsMock.underlyingPressedBorderColor = ColorTokenGeneratedMock.random() + let intentsMock = ButtonColors.mocked() return GetColors( - givenIntentColor: .primary, + givenIntent: .primary, givenVariant: $0, - givenColorables: intentColorsMock, - expectedforegroundColorToken: intentColorsMock.foregroundColor, - expectedBackgroundToken: intentColorsMock.backgroundColor, - expectedPressedBackgroundToken: intentColorsMock.pressedBackgroundColor, - expectedBorderToken: intentColorsMock.borderColor, - expectedPressedBorderToken: intentColorsMock.pressedBorderColor + givenColors: intentsMock, + expectedforegroundColorToken: intentsMock.foregroundColor, + expectedBackgroundToken: intentsMock.backgroundColor, + expectedPressedBackgroundToken: intentsMock.pressedBackgroundColor, + expectedBorderToken: intentsMock.borderColor, + expectedPressedBorderToken: intentsMock.pressedBorderColor ) } @@ -66,9 +61,9 @@ final class ButtonGetColorsUseCaseTests: XCTestCase { case .tinted: mockedUseCase = getTintedUseCaseMock } - mockedUseCase.colorsWithIntentColorAndColorsAndDimsReturnValue = item.givenColorables + mockedUseCase.colorsWithIntentAndColorsAndDimsReturnValue = item.givenColors - let getIntentColorsUseCaseMock = ButtonGetColorsUseCase( + let getIntentsUseCaseMock = ButtonGetColorsUseCase( getContrastUseCase: getContrastUseCaseMock, getFilledUseCase: getFilledUseCaseMock, getGhostUseCase: getGhostUseCaseMock, @@ -77,16 +72,16 @@ final class ButtonGetColorsUseCaseTests: XCTestCase { ) // WHEN - let colors = getIntentColorsUseCaseMock.execute( - forTheme: themeMock, - intentColor: item.givenIntentColor, + let colors = getIntentsUseCaseMock.execute( + for: themeMock, + intent: item.givenIntent, variant: item.givenVariant ) // Other UseCase Tester.testColorsUseCaseExecuteCalling( givenColorsUseCase: mockedUseCase, - givenIntentColor: item.givenIntentColor, + givenIntent: item.givenIntent, givenColors: themeColorsMock, givenDims: dimsMock ) @@ -104,17 +99,17 @@ private struct Tester { static func testColorsUseCaseExecuteCalling( givenColorsUseCase: ButtonGetVariantUseCaseableGeneratedMock, - givenIntentColor: ButtonIntentColor, + givenIntent: ButtonIntent, givenColors: ColorsGeneratedMock, givenDims: DimsGeneratedMock ) { - let arguments = givenColorsUseCase.colorsWithIntentColorAndColorsAndDimsReceivedArguments - XCTAssertEqual(givenColorsUseCase.colorsWithIntentColorAndColorsAndDimsCallsCount, + let arguments = givenColorsUseCase.colorsWithIntentAndColorsAndDimsReceivedArguments + XCTAssertEqual(givenColorsUseCase.colorsWithIntentAndColorsAndDimsCallsCount, 1, "Wrong call number on execute") - XCTAssertEqual(arguments?.intentColor, - givenIntentColor, - "Wrong intentColor parameter on execute") + XCTAssertEqual(arguments?.intent, + givenIntent, + "Wrong intent parameter on execute") XCTAssertIdentical(arguments?.colors as? ColorsGeneratedMock, givenColors, "Wrong colors parameter on execute") @@ -131,7 +126,7 @@ private struct Tester { try self.testColor( givenColorProperty: givenColors.foregroundColor, givenPropertyName: "foregroundColor", - givenIntentColor: getColors.givenIntentColor, + givenIntent: getColors.givenIntent, expectedColorToken: getColors.expectedforegroundColorToken ) @@ -139,7 +134,7 @@ private struct Tester { try self.testColor( givenColorProperty: givenColors.backgroundColor, givenPropertyName: "backgroundColor", - givenIntentColor: getColors.givenIntentColor, + givenIntent: getColors.givenIntent, expectedColorToken: getColors.expectedBackgroundToken ) @@ -147,7 +142,7 @@ private struct Tester { try self.testColor( givenColorProperty: givenColors.pressedBackgroundColor, givenPropertyName: "pressedBackgroundColor", - givenIntentColor: getColors.givenIntentColor, + givenIntent: getColors.givenIntent, expectedColorToken: getColors.expectedPressedBackgroundToken ) @@ -155,7 +150,7 @@ private struct Tester { try self.testColor( givenColorProperty: givenColors.borderColor, givenPropertyName: "borderColor", - givenIntentColor: getColors.givenIntentColor, + givenIntent: getColors.givenIntent, expectedColorToken: getColors.expectedBorderToken ) @@ -163,18 +158,18 @@ private struct Tester { try self.testColor( givenColorProperty: givenColors.pressedBorderColor, givenPropertyName: "pressedBorderColor", - givenIntentColor: getColors.givenIntentColor, + givenIntent: getColors.givenIntent, expectedColorToken: getColors.expectedPressedBorderToken ) } private static func testColor( - givenColorProperty: ColorToken?, + givenColorProperty: (any ColorToken)?, givenPropertyName: String, - givenIntentColor: ButtonIntentColor, - expectedColorToken: ColorToken? + givenIntent: ButtonIntent, + expectedColorToken: (any ColorToken)? ) throws { - let errorSuffixMessage = " \(givenPropertyName) for .\(givenIntentColor) case" + let errorSuffixMessage = " \(givenPropertyName) for .\(givenIntent) case" if let givenColorProperty { let color = try XCTUnwrap(givenColorProperty as? ColorTokenGeneratedMock, @@ -193,13 +188,13 @@ private struct Tester { // MARK: - Others Strucs private struct GetColors { - let givenIntentColor: ButtonIntentColor + let givenIntent: ButtonIntent let givenVariant: ButtonVariant - let givenColorables: ButtonColorsGeneratedMock + let givenColors: ButtonColors - let expectedforegroundColorToken: ColorToken - let expectedBackgroundToken: ColorToken - let expectedPressedBackgroundToken: ColorToken - let expectedBorderToken: ColorToken - let expectedPressedBorderToken: ColorToken + let expectedforegroundColorToken: any ColorToken + let expectedBackgroundToken: any ColorToken + let expectedPressedBackgroundToken: any ColorToken + let expectedBorderToken: any ColorToken + let expectedPressedBorderToken: any ColorToken } diff --git a/core/Sources/Components/Button/UseCase/GetContent/ButtonGetContentUseCase.swift b/core/Sources/Components/Button/UseCase/GetContent/ButtonGetContentUseCase.swift index 134e427a1..ac6eec00f 100644 --- a/core/Sources/Components/Button/UseCase/GetContent/ButtonGetContentUseCase.swift +++ b/core/Sources/Components/Button/UseCase/GetContent/ButtonGetContentUseCase.swift @@ -8,7 +8,7 @@ // sourcery: AutoMockable protocol ButtonGetContentUseCaseable { - func execute(forAlignment alignment: ButtonAlignment, + func execute(for alignment: ButtonAlignment, iconImage: ImageEither?, text: String?, attributedText: AttributedStringEither?) -> ButtonContent @@ -19,22 +19,22 @@ struct ButtonGetContentUseCase: ButtonGetContentUseCaseable { // MARK: - Methods func execute( - forAlignment alignment: ButtonAlignment, + for alignment: ButtonAlignment, iconImage: ImageEither?, text: String?, attributedText: AttributedStringEither? ) -> ButtonContent { - let showIconImage = (iconImage != nil) ? true : false - let isIconImageOnRight = (showIconImage && alignment == .trailingIcon) ? true : false - let iconImage = showIconImage ? iconImage : nil + let shouldShowIconImage = (iconImage != nil) ? true : false + let isIconImageOnRight = (shouldShowIconImage && alignment == .trailingIcon) ? true : false + let iconImage = shouldShowIconImage ? iconImage : nil - let showText = (text != nil) || (attributedText != nil) + let shouldShowText = (text != nil) || (attributedText != nil) - return ButtonContentDefault( - showIconImage: showIconImage, + return .init( + shouldShowIconImage: shouldShowIconImage, isIconImageOnRight: isIconImageOnRight, iconImage: iconImage, - showText: showText + shouldShowText: shouldShowText ) } } diff --git a/core/Sources/Components/Button/UseCase/GetContent/ButtonGetContentUseCaseTests.swift b/core/Sources/Components/Button/UseCase/GetContent/ButtonGetContentUseCaseTests.swift index 0bd0a94d8..1e7197266 100644 --- a/core/Sources/Components/Button/UseCase/GetContent/ButtonGetContentUseCaseTests.swift +++ b/core/Sources/Components/Button/UseCase/GetContent/ButtonGetContentUseCaseTests.swift @@ -27,10 +27,10 @@ final class ButtonGetContentUseCaseTests: XCTestCase { givenText: nil, givenAttributedText: nil, expectedContent: .init( - showIconImage: true, + shouldShowIconImage: true, isIconImageOnRight: false, iconImage: .left(self.imageMock), - showText: false + shouldShowText: false ) ) } @@ -42,10 +42,10 @@ final class ButtonGetContentUseCaseTests: XCTestCase { givenText: nil, givenAttributedText: nil, expectedContent: .init( - showIconImage: true, + shouldShowIconImage: true, isIconImageOnRight: true, iconImage: .left(self.imageMock), - showText: false + shouldShowText: false ) ) } @@ -57,10 +57,10 @@ final class ButtonGetContentUseCaseTests: XCTestCase { givenText: self.textMock, givenAttributedText: nil, expectedContent: .init( - showIconImage: true, + shouldShowIconImage: true, isIconImageOnRight: false, iconImage: .left(self.imageMock), - showText: true + shouldShowText: true ) ) } @@ -72,10 +72,10 @@ final class ButtonGetContentUseCaseTests: XCTestCase { givenText: nil, givenAttributedText: self.attributedText, expectedContent: .init( - showIconImage: true, + shouldShowIconImage: true, isIconImageOnRight: false, iconImage: .left(self.imageMock), - showText: true + shouldShowText: true ) ) } @@ -87,10 +87,10 @@ final class ButtonGetContentUseCaseTests: XCTestCase { givenText: self.textMock, givenAttributedText: nil, expectedContent: .init( - showIconImage: false, + shouldShowIconImage: false, isIconImageOnRight: false, iconImage: nil, - showText: true + shouldShowText: true ) ) } @@ -102,10 +102,10 @@ final class ButtonGetContentUseCaseTests: XCTestCase { givenText: nil, givenAttributedText: self.attributedText, expectedContent: .init( - showIconImage: false, + shouldShowIconImage: false, isIconImageOnRight: false, iconImage: nil, - showText: true + shouldShowText: true ) ) } @@ -120,7 +120,7 @@ private extension ButtonGetContentUseCaseTests { givenIconImage: UIImage?, givenText: String?, givenAttributedText: NSAttributedString?, - expectedContent: ButtonContentDefault + expectedContent: ButtonContent ) { // GIVEN var errorSuffixMessage = " for \(givenAlignment) alignment case" @@ -152,16 +152,16 @@ private extension ButtonGetContentUseCaseTests { // GIVEN let content = useCase.execute( - forAlignment: givenAlignment, + for: givenAlignment, iconImage: iconImage, text: givenText, attributedText: attributedString ) // THEN - XCTAssertEqual(content.showIconImage, - expectedContent.showIconImage, - "Wrong showIconImage" + errorSuffixMessage) + XCTAssertEqual(content.shouldShowIconImage, + expectedContent.shouldShowIconImage, + "Wrong shouldShowIconImage" + errorSuffixMessage) XCTAssertEqual(content.isIconImageOnRight, expectedContent.isIconImageOnRight, "Wrong isIconImageOnRight" + errorSuffixMessage) @@ -169,8 +169,8 @@ private extension ButtonGetContentUseCaseTests { expectedContent.iconImage?.leftValue, "Wrong iconImage" + errorSuffixMessage) - XCTAssertEqual(content.showText, - expectedContent.showText, - "Wrong showText" + errorSuffixMessage) + XCTAssertEqual(content.shouldShowText, + expectedContent.shouldShowText, + "Wrong shouldShowText" + errorSuffixMessage) } } diff --git a/core/Sources/Components/Button/UseCase/GetCurrentColors/ButtonGetCurrentColorsUseCase.swift b/core/Sources/Components/Button/UseCase/GetCurrentColors/ButtonGetCurrentColorsUseCase.swift index 2672d5bb6..26d3428b6 100644 --- a/core/Sources/Components/Button/UseCase/GetCurrentColors/ButtonGetCurrentColorsUseCase.swift +++ b/core/Sources/Components/Button/UseCase/GetCurrentColors/ButtonGetCurrentColorsUseCase.swift @@ -8,7 +8,7 @@ // sourcery: AutoMockable protocol ButtonGetCurrentColorsUseCaseable { - func execute(forColors colors: any ButtonColors, isPressed: Bool) -> ButtonCurrentColors + func execute(for colors: ButtonColors, isPressed: Bool) -> ButtonCurrentColors } struct ButtonGetCurrentColorsUseCase: ButtonGetCurrentColorsUseCaseable { @@ -16,17 +16,17 @@ struct ButtonGetCurrentColorsUseCase: ButtonGetCurrentColorsUseCaseable { // MARK: - Methods func execute( - forColors colors: any ButtonColors, + for colors: ButtonColors, isPressed: Bool ) -> ButtonCurrentColors { if isPressed { - return ButtonCurrentColorsDefault( + return .init( foregroundColor: colors.foregroundColor, backgroundColor: colors.pressedBackgroundColor, borderColor: colors.pressedBorderColor ) } else { - return ButtonCurrentColorsDefault( + return .init( foregroundColor: colors.foregroundColor, backgroundColor: colors.backgroundColor, borderColor: colors.borderColor diff --git a/core/Sources/Components/Button/UseCase/GetCurrentColors/ButtonGetCurrentColorsUseCaseTests.swift b/core/Sources/Components/Button/UseCase/GetCurrentColors/ButtonGetCurrentColorsUseCaseTests.swift index c78a9ddb2..e5db165b9 100644 --- a/core/Sources/Components/Button/UseCase/GetCurrentColors/ButtonGetCurrentColorsUseCaseTests.swift +++ b/core/Sources/Components/Button/UseCase/GetCurrentColors/ButtonGetCurrentColorsUseCaseTests.swift @@ -20,14 +20,14 @@ final class ButtonGetCurrentColorsUseCaseTests: XCTestCase { private let borderColorMock = ColorTokenGeneratedMock() private let pressedBorderColorMock = ColorTokenGeneratedMock() - private lazy var colorsMock: ButtonColorsGeneratedMock = { - let mock = ButtonColorsGeneratedMock() - mock.underlyingForegroundColor = self.foregroundColorMock - mock.underlyingBackgroundColor = self.backgroundColorMock - mock.underlyingPressedBackgroundColor = self.pressedBackgroundColorMock - mock.underlyingBorderColor = self.borderColorMock - mock.underlyingPressedBorderColor = self.pressedBorderColorMock - return mock + private lazy var colorsMock: ButtonColors = { + return .init( + foregroundColor: self.foregroundColorMock, + backgroundColor: self.backgroundColorMock, + pressedBackgroundColor: self.pressedBackgroundColorMock, + borderColor: self.borderColorMock, + pressedBorderColor: self.pressedBorderColorMock + ) }() // MARK: - Tests @@ -68,7 +68,7 @@ private extension ButtonGetCurrentColorsUseCaseTests { // GIVEN let currentColors = useCase.execute( - forColors: self.colorsMock, + for: self.colorsMock, isPressed: givenIsPressed ) diff --git a/core/Sources/Components/Button/UseCase/GetIsOnlyIcon/ButtonGetIsOnlyIconUseCase.swift b/core/Sources/Components/Button/UseCase/GetIsOnlyIcon/ButtonGetIsOnlyIconUseCase.swift index 1c7bda926..3497b526d 100644 --- a/core/Sources/Components/Button/UseCase/GetIsOnlyIcon/ButtonGetIsOnlyIconUseCase.swift +++ b/core/Sources/Components/Button/UseCase/GetIsOnlyIcon/ButtonGetIsOnlyIconUseCase.swift @@ -8,7 +8,7 @@ // sourcery: AutoMockable protocol ButtonGetIsOnlyIconUseCaseable { - func execute(forIconImage iconImage: ImageEither?, + func execute(for iconImage: ImageEither?, text: String?, attributedText: AttributedStringEither?) -> Bool } @@ -18,7 +18,7 @@ struct ButtonGetIsOnlyIconUseCase: ButtonGetIsOnlyIconUseCaseable { // MARK: - Methods func execute( - forIconImage iconImage: ImageEither?, + for iconImage: ImageEither?, text: String?, attributedText: AttributedStringEither? ) -> Bool { diff --git a/core/Sources/Components/Button/UseCase/GetIsOnlyIcon/ButtonGetIsOnlyIconUseCaseTests.swift b/core/Sources/Components/Button/UseCase/GetIsOnlyIcon/ButtonGetIsOnlyIconUseCaseTests.swift index 018107b79..14cb57d21 100644 --- a/core/Sources/Components/Button/UseCase/GetIsOnlyIcon/ButtonGetIsOnlyIconUseCaseTests.swift +++ b/core/Sources/Components/Button/UseCase/GetIsOnlyIcon/ButtonGetIsOnlyIconUseCaseTests.swift @@ -26,7 +26,7 @@ final class ButtonGetIsOnlyIconUseCaseTests: XCTestCase { // WHEN let isIconOnly = useCase.execute( - forIconImage: .left(imageMock), + for: .left(imageMock), text: nil, attributedText: nil ) @@ -41,7 +41,7 @@ final class ButtonGetIsOnlyIconUseCaseTests: XCTestCase { // WHEN let isIconOnly = useCase.execute( - forIconImage: .left(imageMock), + for: .left(imageMock), text: self.textMock, attributedText: nil ) @@ -56,7 +56,7 @@ final class ButtonGetIsOnlyIconUseCaseTests: XCTestCase { // WHEN let isIconOnly = useCase.execute( - forIconImage: .left(imageMock), + for: .left(imageMock), text: nil, attributedText: .left(self.attributedText) ) @@ -71,7 +71,7 @@ final class ButtonGetIsOnlyIconUseCaseTests: XCTestCase { // WHEN let isIconOnly = useCase.execute( - forIconImage: .left(imageMock), + for: .left(imageMock), text: self.textMock, attributedText: .left(self.attributedText) ) @@ -88,7 +88,7 @@ final class ButtonGetIsOnlyIconUseCaseTests: XCTestCase { // WHEN let isIconOnly = useCase.execute( - forIconImage: nil, + for: nil, text: self.textMock, attributedText: nil ) @@ -103,7 +103,7 @@ final class ButtonGetIsOnlyIconUseCaseTests: XCTestCase { // WHEN let isIconOnly = useCase.execute( - forIconImage: nil, + for: nil, text: nil, attributedText: .left(self.attributedText) ) @@ -118,7 +118,7 @@ final class ButtonGetIsOnlyIconUseCaseTests: XCTestCase { // WHEN let isIconOnly = useCase.execute( - forIconImage: nil, + for: nil, text: self.textMock, attributedText: .left(self.attributedText) ) @@ -133,7 +133,7 @@ final class ButtonGetIsOnlyIconUseCaseTests: XCTestCase { // WHEN let isIconOnly = useCase.execute( - forIconImage: nil, + for: nil, text: nil, attributedText: nil ) diff --git a/core/Sources/Components/Button/UseCase/GetSizes/ButtonGetSizesUseCase.swift b/core/Sources/Components/Button/UseCase/GetSizes/ButtonGetSizesUseCase.swift index acc5bfe1d..0bc40bba7 100644 --- a/core/Sources/Components/Button/UseCase/GetSizes/ButtonGetSizesUseCase.swift +++ b/core/Sources/Components/Button/UseCase/GetSizes/ButtonGetSizesUseCase.swift @@ -10,7 +10,7 @@ import Foundation // sourcery: AutoMockable protocol ButtonGetSizesUseCaseable { - func execute(forSize size: ButtonSize, + func execute(for size: ButtonSize, isOnlyIcon: Bool) -> ButtonSizes } @@ -18,7 +18,7 @@ struct ButtonGetSizesUseCase: ButtonGetSizesUseCaseable { // MARK: - Methods - func execute(forSize size: ButtonSize, + func execute(for size: ButtonSize, isOnlyIcon: Bool) -> ButtonSizes { let height: CGFloat switch size { @@ -33,6 +33,6 @@ struct ButtonGetSizesUseCase: ButtonGetSizesUseCaseable { // The value is differente only when there is only an icon and the size is large let iconSize: CGFloat = (isOnlyIcon && size == .large) ? 24 : 16 - return ButtonSizesDefault(height: height, iconSize: iconSize) + return .init(height: height, iconSize: iconSize) } } diff --git a/core/Sources/Components/Button/UseCase/GetSizes/ButtonGetSizesUseCaseTests.swift b/core/Sources/Components/Button/UseCase/GetSizes/ButtonGetSizesUseCaseTests.swift index 315258e3b..acc481fd3 100644 --- a/core/Sources/Components/Button/UseCase/GetSizes/ButtonGetSizesUseCaseTests.swift +++ b/core/Sources/Components/Button/UseCase/GetSizes/ButtonGetSizesUseCaseTests.swift @@ -20,7 +20,7 @@ final class ButtonGetSizesUseCaseTests: XCTestCase { // WHEN let sizes = useCase.execute( - forSize: .small, + for: .small, isOnlyIcon: true ) @@ -35,7 +35,7 @@ final class ButtonGetSizesUseCaseTests: XCTestCase { // WHEN let sizes = useCase.execute( - forSize: .medium, + for: .medium, isOnlyIcon: true ) @@ -50,7 +50,7 @@ final class ButtonGetSizesUseCaseTests: XCTestCase { // WHEN let sizes = useCase.execute( - forSize: .large, + for: .large, isOnlyIcon: true ) @@ -67,7 +67,7 @@ final class ButtonGetSizesUseCaseTests: XCTestCase { // WHEN let sizes = useCase.execute( - forSize: .small, + for: .small, isOnlyIcon: false ) @@ -82,7 +82,7 @@ final class ButtonGetSizesUseCaseTests: XCTestCase { // WHEN let sizes = useCase.execute( - forSize: .medium, + for: .medium, isOnlyIcon: false ) @@ -97,7 +97,7 @@ final class ButtonGetSizesUseCaseTests: XCTestCase { // WHEN let sizes = useCase.execute( - forSize: .large, + for: .large, isOnlyIcon: false ) diff --git a/core/Sources/Components/Button/UseCase/GetSpacings/ButtonGetSpacingsUseCase.swift b/core/Sources/Components/Button/UseCase/GetSpacings/ButtonGetSpacingsUseCase.swift index 62fdd32d8..ef3e6d085 100644 --- a/core/Sources/Components/Button/UseCase/GetSpacings/ButtonGetSpacingsUseCase.swift +++ b/core/Sources/Components/Button/UseCase/GetSpacings/ButtonGetSpacingsUseCase.swift @@ -10,7 +10,7 @@ import Foundation // sourcery: AutoMockable protocol ButtonGetSpacingsUseCaseable { - func execute(forSpacing spacing: LayoutSpacing, + func execute(for spacing: LayoutSpacing, isOnlyIcon: Bool) -> ButtonSpacings } @@ -19,17 +19,17 @@ struct ButtonGetSpacingsUseCase: ButtonGetSpacingsUseCaseable { // MARK: - Methods func execute( - forSpacing spacing: LayoutSpacing, + for spacing: LayoutSpacing, isOnlyIcon: Bool ) -> ButtonSpacings { if isOnlyIcon { - return ButtonSpacingsDefault( + return .init( verticalSpacing: 0, horizontalSpacing: 0, horizontalPadding: 0 ) } else { - return ButtonSpacingsDefault( + return .init( verticalSpacing: spacing.medium, horizontalSpacing: spacing.large, horizontalPadding: spacing.medium diff --git a/core/Sources/Components/Button/UseCase/GetSpacings/ButtonGetSpacingsUseCaseTests.swift b/core/Sources/Components/Button/UseCase/GetSpacings/ButtonGetSpacingsUseCaseTests.swift index 3a56c58bc..693c8b34e 100644 --- a/core/Sources/Components/Button/UseCase/GetSpacings/ButtonGetSpacingsUseCaseTests.swift +++ b/core/Sources/Components/Button/UseCase/GetSpacings/ButtonGetSpacingsUseCaseTests.swift @@ -22,7 +22,7 @@ final class ButtonGetSpacingsUseCaseTests: XCTestCase { // WHEN let spacings = useCase.execute( - forSpacing: spacingMock, + for: spacingMock, isOnlyIcon: true ) @@ -46,7 +46,7 @@ final class ButtonGetSpacingsUseCaseTests: XCTestCase { // WHEN let spacings = useCase.execute( - forSpacing: spacingMock, + for: spacingMock, isOnlyIcon: false ) diff --git a/core/Sources/Components/Button/UseCase/GetState/ButtonGetStateUseCase.swift b/core/Sources/Components/Button/UseCase/GetState/ButtonGetStateUseCase.swift index e2c0641e9..3f3d3f27e 100644 --- a/core/Sources/Components/Button/UseCase/GetState/ButtonGetStateUseCase.swift +++ b/core/Sources/Components/Button/UseCase/GetState/ButtonGetStateUseCase.swift @@ -10,7 +10,7 @@ import Foundation // sourcery: AutoMockable protocol ButtonGetStateUseCaseable { - func execute(forIsEnabled isEnabled: Bool, + func execute(for isEnabled: Bool, dims: Dims) -> ButtonState } @@ -19,12 +19,12 @@ struct ButtonGetStateUseCase: ButtonGetStateUseCaseable { // MARK: - Methods func execute( - forIsEnabled isEnabled: Bool, + for isEnabled: Bool, dims: Dims ) -> ButtonState { let opacity = isEnabled ? dims.none : dims.dim3 - return ButtonStateDefault( + return .init( isInteractionEnabled: isEnabled, opacity: opacity ) diff --git a/core/Sources/Components/Button/UseCase/GetState/ButtonGetStateUseCaseTests.swift b/core/Sources/Components/Button/UseCase/GetState/ButtonGetStateUseCaseTests.swift index a25762002..87796255c 100644 --- a/core/Sources/Components/Button/UseCase/GetState/ButtonGetStateUseCaseTests.swift +++ b/core/Sources/Components/Button/UseCase/GetState/ButtonGetStateUseCaseTests.swift @@ -39,7 +39,7 @@ private extension ButtonGetStateUseCaseTests { func testExecute( givenIsEnabled: Bool, - expectedIsInteractionState: ButtonStateDefault + expectedIsInteractionState: ButtonState ) { // GIVEN let errorSuffixMessage = " for \(givenIsEnabled) givenIsEnabled" @@ -48,7 +48,7 @@ private extension ButtonGetStateUseCaseTests { // GIVEN let interactionState = useCase.execute( - forIsEnabled: givenIsEnabled, + for: givenIsEnabled, dims: self.dimsMock ) diff --git a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantContrastUseCase.swift b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantContrastUseCase.swift index 596d54a3d..5ffd1566f 100644 --- a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantContrastUseCase.swift +++ b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantContrastUseCase.swift @@ -13,7 +13,7 @@ struct ButtonVariantGetContrastUseCase: ButtonGetVariantUseCaseable { // MARK: - Methods func colors( - forIntentColor intentColor: ButtonIntentColor, + for intent: ButtonIntent, colors: Colors, dims: Dims ) -> ButtonColors { @@ -21,9 +21,9 @@ struct ButtonVariantGetContrastUseCase: ButtonGetVariantUseCaseable { let pressedBorderColor = ColorTokenDefault.clear let backgroundColor = colors.base.surface - switch intentColor { + switch intent { case .primary: - return ButtonColorsDefault( + return .init( foregroundColor: colors.primary.primary, backgroundColor: backgroundColor, pressedBackgroundColor: colors.states.primaryContainerPressed, @@ -31,7 +31,7 @@ struct ButtonVariantGetContrastUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .secondary: - return ButtonColorsDefault( + return .init( foregroundColor: colors.secondary.secondary, backgroundColor: backgroundColor, pressedBackgroundColor: colors.states.secondaryContainerPressed, @@ -39,7 +39,7 @@ struct ButtonVariantGetContrastUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .neutral: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.neutral, backgroundColor: backgroundColor, pressedBackgroundColor: colors.states.neutralContainerPressed, @@ -47,7 +47,7 @@ struct ButtonVariantGetContrastUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .alert: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.alert, backgroundColor: backgroundColor, pressedBackgroundColor: colors.states.alertContainerPressed, @@ -55,7 +55,7 @@ struct ButtonVariantGetContrastUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .success: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.success, backgroundColor: backgroundColor, pressedBackgroundColor: colors.states.successContainerPressed, @@ -63,7 +63,7 @@ struct ButtonVariantGetContrastUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .danger: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.error, backgroundColor: backgroundColor, pressedBackgroundColor: colors.states.errorContainerPressed, @@ -71,7 +71,7 @@ struct ButtonVariantGetContrastUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .surface: - return ButtonColorsDefault( + return .init( foregroundColor: colors.base.onSurface, backgroundColor: backgroundColor, pressedBackgroundColor: colors.states.surfacePressed, diff --git a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantContrastUseCaseTests.swift b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantContrastUseCaseTests.swift index 6dab289f0..0b3a35f96 100644 --- a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantContrastUseCaseTests.swift +++ b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantContrastUseCaseTests.swift @@ -18,7 +18,7 @@ final class ButtonVariantGetContrastUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .primary, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .primary, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -40,7 +40,7 @@ final class ButtonVariantGetContrastUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .secondary, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .secondary, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -62,7 +62,7 @@ final class ButtonVariantGetContrastUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .neutral, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .neutral, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -84,7 +84,7 @@ final class ButtonVariantGetContrastUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .alert, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .alert, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -106,7 +106,7 @@ final class ButtonVariantGetContrastUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .success, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .success, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -128,7 +128,7 @@ final class ButtonVariantGetContrastUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .danger, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .danger, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -150,7 +150,7 @@ final class ButtonVariantGetContrastUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .surface, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .surface, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( diff --git a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantFilledUseCase.swift b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantFilledUseCase.swift index a3eca47f5..0ac9fc63b 100644 --- a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantFilledUseCase.swift +++ b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantFilledUseCase.swift @@ -13,16 +13,16 @@ struct ButtonGetVariantFilledUseCase: ButtonGetVariantUseCaseable { // MARK: - Methods func colors( - forIntentColor intentColor: ButtonIntentColor, + for intent: ButtonIntent, colors: Colors, dims: Dims ) -> ButtonColors { let borderColor = ColorTokenDefault.clear let pressedBorderColor = ColorTokenDefault.clear - switch intentColor { + switch intent { case .primary: - return ButtonColorsDefault( + return .init( foregroundColor: colors.primary.onPrimary, backgroundColor: colors.primary.primary, pressedBackgroundColor: colors.states.primaryPressed, @@ -30,7 +30,7 @@ struct ButtonGetVariantFilledUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .secondary: - return ButtonColorsDefault( + return .init( foregroundColor: colors.secondary.onSecondary, backgroundColor: colors.secondary.secondary, pressedBackgroundColor: colors.states.secondaryPressed, @@ -38,7 +38,7 @@ struct ButtonGetVariantFilledUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .neutral: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.onNeutral, backgroundColor: colors.feedback.neutral, pressedBackgroundColor: colors.states.neutralPressed, @@ -46,7 +46,7 @@ struct ButtonGetVariantFilledUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .alert: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.onAlert, backgroundColor: colors.feedback.alert, pressedBackgroundColor: colors.states.alertPressed, @@ -54,7 +54,7 @@ struct ButtonGetVariantFilledUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .success: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.onSuccess, backgroundColor: colors.feedback.success, pressedBackgroundColor: colors.states.successPressed, @@ -62,7 +62,7 @@ struct ButtonGetVariantFilledUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .danger: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.onError, backgroundColor: colors.feedback.error, pressedBackgroundColor: colors.states.errorPressed, @@ -70,7 +70,7 @@ struct ButtonGetVariantFilledUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .surface: - return ButtonColorsDefault( + return .init( foregroundColor: colors.base.onSurface, backgroundColor: colors.base.surface, pressedBackgroundColor: colors.states.surfacePressed, diff --git a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantFilledUseCaseTests.swift b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantFilledUseCaseTests.swift index 6d66ee918..e694abc4b 100644 --- a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantFilledUseCaseTests.swift +++ b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantFilledUseCaseTests.swift @@ -18,7 +18,7 @@ final class ButtonGetVariantFilledUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .primary, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .primary, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -40,7 +40,7 @@ final class ButtonGetVariantFilledUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .secondary, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .secondary, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -62,7 +62,7 @@ final class ButtonGetVariantFilledUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .neutral, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .neutral, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -84,7 +84,7 @@ final class ButtonGetVariantFilledUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .alert, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .alert, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -106,7 +106,7 @@ final class ButtonGetVariantFilledUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .success, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .success, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -128,7 +128,7 @@ final class ButtonGetVariantFilledUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .danger, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .danger, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -150,7 +150,7 @@ final class ButtonGetVariantFilledUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .surface, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .surface, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( diff --git a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantGhostUseCase.swift b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantGhostUseCase.swift index d6c244e9e..69ded8473 100644 --- a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantGhostUseCase.swift +++ b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantGhostUseCase.swift @@ -13,7 +13,7 @@ struct ButtonGetVariantGhostUseCase: ButtonGetVariantUseCaseable { // MARK: - Methods func colors( - forIntentColor intentColor: ButtonIntentColor, + for intent: ButtonIntent, colors: Colors, dims: Dims ) -> ButtonColors { @@ -22,9 +22,9 @@ struct ButtonGetVariantGhostUseCase: ButtonGetVariantUseCaseable { let dim5 = dims.dim5 - switch intentColor { + switch intent { case .primary: - return ButtonColorsDefault( + return .init( foregroundColor: colors.primary.primary, backgroundColor: ColorTokenDefault.clear, pressedBackgroundColor: colors.primary.primary.opacity(dim5), @@ -32,7 +32,7 @@ struct ButtonGetVariantGhostUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .secondary: - return ButtonColorsDefault( + return .init( foregroundColor: colors.secondary.secondary, backgroundColor: ColorTokenDefault.clear, pressedBackgroundColor: colors.secondary.secondary.opacity(dim5), @@ -40,7 +40,7 @@ struct ButtonGetVariantGhostUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .neutral: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.neutral, backgroundColor: ColorTokenDefault.clear, pressedBackgroundColor: colors.feedback.neutral.opacity(dim5), @@ -48,7 +48,7 @@ struct ButtonGetVariantGhostUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .alert: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.alert, backgroundColor: ColorTokenDefault.clear, pressedBackgroundColor: colors.feedback.alert.opacity(dim5), @@ -56,7 +56,7 @@ struct ButtonGetVariantGhostUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .success: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.success, backgroundColor: ColorTokenDefault.clear, pressedBackgroundColor: colors.feedback.success.opacity(dim5), @@ -64,7 +64,7 @@ struct ButtonGetVariantGhostUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .danger: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.error, backgroundColor: ColorTokenDefault.clear, pressedBackgroundColor: colors.feedback.error.opacity(dim5), @@ -72,7 +72,7 @@ struct ButtonGetVariantGhostUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .surface: - return ButtonColorsDefault( + return .init( foregroundColor: colors.base.surface, backgroundColor: ColorTokenDefault.clear, pressedBackgroundColor: colors.base.surface.opacity(dim5), diff --git a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantGhostUseCaseTests.swift b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantGhostUseCaseTests.swift index fdcbc4b65..b1da7ee61 100644 --- a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantGhostUseCaseTests.swift +++ b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantGhostUseCaseTests.swift @@ -18,7 +18,7 @@ final class ButtonGetVariantGhostUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .primary, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .primary, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -40,7 +40,7 @@ final class ButtonGetVariantGhostUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .secondary, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .secondary, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -62,7 +62,7 @@ final class ButtonGetVariantGhostUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .neutral, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .neutral, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -84,7 +84,7 @@ final class ButtonGetVariantGhostUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .alert, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .alert, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -106,7 +106,7 @@ final class ButtonGetVariantGhostUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .success, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .success, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -128,7 +128,7 @@ final class ButtonGetVariantGhostUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .danger, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .danger, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -150,7 +150,7 @@ final class ButtonGetVariantGhostUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .surface, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .surface, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( diff --git a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantOutlinedUseCase.swift b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantOutlinedUseCase.swift index 4c7a5f296..2289a1306 100644 --- a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantOutlinedUseCase.swift +++ b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantOutlinedUseCase.swift @@ -13,7 +13,7 @@ struct ButtonGetVariantOutlinedUseCase: ButtonGetVariantUseCaseable { // MARK: - Methods func colors( - forIntentColor intentColor: ButtonIntentColor, + for intent: ButtonIntent, colors: Colors, dims: Dims ) -> ButtonColors { @@ -21,9 +21,9 @@ struct ButtonGetVariantOutlinedUseCase: ButtonGetVariantUseCaseable { let backgroundColor = colors.base.surface - switch intentColor { + switch intent { case .primary: - return ButtonColorsDefault( + return .init( foregroundColor: colors.primary.primary, backgroundColor: backgroundColor, pressedBackgroundColor: colors.primary.primary.opacity(dim5), @@ -31,7 +31,7 @@ struct ButtonGetVariantOutlinedUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: colors.primary.primary ) case .secondary: - return ButtonColorsDefault( + return .init( foregroundColor: colors.secondary.secondary, backgroundColor: backgroundColor, pressedBackgroundColor: colors.secondary.secondary.opacity(dim5), @@ -39,7 +39,7 @@ struct ButtonGetVariantOutlinedUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: colors.secondary.secondary ) case .neutral: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.neutral, backgroundColor: backgroundColor, pressedBackgroundColor: colors.feedback.neutral.opacity(dim5), @@ -47,7 +47,7 @@ struct ButtonGetVariantOutlinedUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: colors.feedback.neutral ) case .alert: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.alert, backgroundColor: backgroundColor, pressedBackgroundColor: colors.feedback.alert.opacity(dim5), @@ -55,7 +55,7 @@ struct ButtonGetVariantOutlinedUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: colors.feedback.alert ) case .success: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.success, backgroundColor: backgroundColor, pressedBackgroundColor: colors.feedback.success.opacity(dim5), @@ -63,7 +63,7 @@ struct ButtonGetVariantOutlinedUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: colors.feedback.success ) case .danger: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.error, backgroundColor: backgroundColor, pressedBackgroundColor: colors.feedback.error.opacity(dim5), @@ -71,7 +71,7 @@ struct ButtonGetVariantOutlinedUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: colors.feedback.error ) case .surface: - return ButtonColorsDefault( + return .init( foregroundColor: colors.base.surface, backgroundColor: colors.base.surfaceInverse, pressedBackgroundColor: colors.base.surface.opacity(dim5), diff --git a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantOutlinedUseCaseTests.swift b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantOutlinedUseCaseTests.swift index e2748d204..138363645 100644 --- a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantOutlinedUseCaseTests.swift +++ b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantOutlinedUseCaseTests.swift @@ -18,7 +18,7 @@ final class ButtonGetVariantOutlinedUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .primary, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .primary, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -40,7 +40,7 @@ final class ButtonGetVariantOutlinedUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .secondary, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .secondary, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -62,7 +62,7 @@ final class ButtonGetVariantOutlinedUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .neutral, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .neutral, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -84,7 +84,7 @@ final class ButtonGetVariantOutlinedUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .alert, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .alert, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -106,7 +106,7 @@ final class ButtonGetVariantOutlinedUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .success, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .success, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -128,7 +128,7 @@ final class ButtonGetVariantOutlinedUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .danger, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .danger, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -150,7 +150,7 @@ final class ButtonGetVariantOutlinedUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .surface, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .surface, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( diff --git a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantTintedUseCase.swift b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantTintedUseCase.swift index 7cb2f3ec6..93970eec9 100644 --- a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantTintedUseCase.swift +++ b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantTintedUseCase.swift @@ -13,16 +13,16 @@ struct ButtonGetVariantTintedUseCase: ButtonGetVariantUseCaseable { // MARK: - Methods func colors( - forIntentColor intentColor: ButtonIntentColor, + for intent: ButtonIntent, colors: Colors, dims: Dims ) -> ButtonColors { let borderColor = ColorTokenDefault.clear let pressedBorderColor = ColorTokenDefault.clear - switch intentColor { + switch intent { case .primary: - return ButtonColorsDefault( + return .init( foregroundColor: colors.primary.onPrimaryContainer, backgroundColor: colors.primary.primaryContainer, pressedBackgroundColor: colors.states.primaryContainerPressed, @@ -30,7 +30,7 @@ struct ButtonGetVariantTintedUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .secondary: - return ButtonColorsDefault( + return .init( foregroundColor: colors.secondary.onSecondaryContainer, backgroundColor: colors.secondary.secondaryContainer, pressedBackgroundColor: colors.states.secondaryContainerPressed, @@ -38,7 +38,7 @@ struct ButtonGetVariantTintedUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .neutral: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.onNeutralContainer, backgroundColor: colors.feedback.neutralContainer, pressedBackgroundColor: colors.states.neutralContainerPressed, @@ -46,7 +46,7 @@ struct ButtonGetVariantTintedUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .alert: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.onAlertContainer, backgroundColor: colors.feedback.alertContainer, pressedBackgroundColor: colors.states.alertContainerPressed, @@ -54,7 +54,7 @@ struct ButtonGetVariantTintedUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .success: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.onSuccessContainer, backgroundColor: colors.feedback.successContainer, pressedBackgroundColor: colors.states.successContainerPressed, @@ -62,7 +62,7 @@ struct ButtonGetVariantTintedUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .danger: - return ButtonColorsDefault( + return .init( foregroundColor: colors.feedback.onErrorContainer, backgroundColor: colors.feedback.errorContainer, pressedBackgroundColor: colors.states.errorContainerPressed, @@ -70,7 +70,7 @@ struct ButtonGetVariantTintedUseCase: ButtonGetVariantUseCaseable { pressedBorderColor: pressedBorderColor ) case .surface: - return ButtonColorsDefault( + return .init( foregroundColor: colors.base.onBackgroundVariant, backgroundColor: colors.base.backgroundVariant, pressedBackgroundColor: colors.states.surfacePressed, diff --git a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantTintedUseCaseTests.swift b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantTintedUseCaseTests.swift index c32390de8..3df147900 100644 --- a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantTintedUseCaseTests.swift +++ b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantTintedUseCaseTests.swift @@ -18,7 +18,7 @@ final class ButtonGetVariantTintedUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .primary, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .primary, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -40,7 +40,7 @@ final class ButtonGetVariantTintedUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .secondary, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .secondary, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -62,7 +62,7 @@ final class ButtonGetVariantTintedUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .neutral, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .neutral, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -84,7 +84,7 @@ final class ButtonGetVariantTintedUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .alert, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .alert, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -106,7 +106,7 @@ final class ButtonGetVariantTintedUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .success, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .success, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -128,7 +128,7 @@ final class ButtonGetVariantTintedUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .danger, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .danger, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( @@ -150,7 +150,7 @@ final class ButtonGetVariantTintedUseCaseTests: ButtonVariantUseCaseTests { let sut = self.sut() // When - let colors = sut.colors(forIntentColor: .surface, colors: self.theme.colors, dims: self.theme.dims) + let colors = sut.colors(for: .surface, colors: self.theme.colors, dims: self.theme.dims) // Then XCTAssertEqual( diff --git a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantUseCaseable.swift b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantUseCaseable.swift index 1b1e2fd90..9f3d831f7 100644 --- a/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantUseCaseable.swift +++ b/core/Sources/Components/Button/UseCase/GetVariants/ButtonGetVariantUseCaseable.swift @@ -10,5 +10,5 @@ import SwiftUI // sourcery: AutoMockable protocol ButtonGetVariantUseCaseable { - func colors(forIntentColor intentColor: ButtonIntentColor, colors: Colors, dims: Dims) -> ButtonColors + func colors(for intent: ButtonIntent, colors: Colors, dims: Dims) -> ButtonColors } diff --git a/core/Sources/Components/Button/View/Common/ButtonSutTests.swift b/core/Sources/Components/Button/View/Common/ButtonSutTests.swift index 550bbb805..4c3aeed7d 100644 --- a/core/Sources/Components/Button/View/Common/ButtonSutTests.swift +++ b/core/Sources/Components/Button/View/Common/ButtonSutTests.swift @@ -15,7 +15,7 @@ struct ButtonSutTests { // MARK: - Properties - let intentColor: ButtonIntentColor + let intent: ButtonIntent let variant: ButtonVariant let size: ButtonSize let shape: ButtonShape @@ -31,7 +31,7 @@ struct ButtonSutTests { func testName(on function: String = #function) -> String { return [ function, - "\(self.intentColor)", + "\(self.intent)", "\(self.variant)", "\(self.size)", "\(self.shape)", @@ -47,17 +47,17 @@ struct ButtonSutTests { // MARK: - Cases static func allColorsCases() -> [Self] { - let intentColorPossibilities = ButtonIntentColor.allCases + let intentPossibilities = ButtonIntent.allCases let variantPossibilities = ButtonVariant.allCases let isEnabledPossibilities = Bool.allCases let isPressedPossibilities = Bool.allCases - return intentColorPossibilities.flatMap { intentColor in + return intentPossibilities.flatMap { intent in variantPossibilities.flatMap { variant in isEnabledPossibilities.flatMap { isEnabled in isPressedPossibilities.map { isPressed in .init( - intentColor: intentColor, + intent: intent, variant: variant, size: .medium, shape: .rounded, @@ -81,7 +81,7 @@ struct ButtonSutTests { return sizePossibilities.flatMap { size in shapePossibilities.map { shape in .init( - intentColor: .primary, + intent: .primary, variant: .filled, size: size, shape: shape, @@ -112,7 +112,7 @@ struct ButtonSutTests { return items.map { item in .init( - intentColor: .primary, + intent: .primary, variant: .filled, size: .medium, shape: .rounded, diff --git a/core/Sources/Components/Button/View/UIKit/ButtonUIView.swift b/core/Sources/Components/Button/View/UIKit/ButtonUIView.swift index ca58f5168..146b318e3 100644 --- a/core/Sources/Components/Button/View/UIKit/ButtonUIView.swift +++ b/core/Sources/Components/Button/View/UIKit/ButtonUIView.swift @@ -106,13 +106,13 @@ public final class ButtonUIView: UIView { } } - /// The intentColor of the button. - public var intentColor: ButtonIntentColor { + /// The intent of the button. + public var intent: ButtonIntent { get { - return self.viewModel.intentColor + return self.viewModel.intent } set { - self.viewModel.set(intentColor: newValue) + self.viewModel.set(intent: newValue) } } @@ -241,7 +241,7 @@ public final class ButtonUIView: UIView { /// Initialize a new button view with a text. /// - Parameters: /// - theme: The spark theme of the button. - /// - intentColor: The intent color of the button. + /// - intent: The intent of the button. /// - variant: The variant of the button. /// - size: The size of the button. /// - shape: The shape of the button. @@ -250,7 +250,7 @@ public final class ButtonUIView: UIView { /// - isEnabled: The state of the button: enabled or not. public convenience init( theme: Theme, - intentColor: ButtonIntentColor, + intent: ButtonIntent, variant: ButtonVariant, size: ButtonSize, shape: ButtonShape, @@ -260,7 +260,7 @@ public final class ButtonUIView: UIView { ) { self.init( theme, - intentColor: intentColor, + intent: intent, variant: variant, size: size, shape: shape, @@ -275,7 +275,7 @@ public final class ButtonUIView: UIView { /// Initialize a new button view with an attributed text. /// - Parameters: /// - theme: The spark theme of the button. - /// - intentColor: The intent color of the button. + /// - intent: The intent of the button. /// - variant: The variant of the button. /// - size: The size of the button. /// - shape: The shape of the button. @@ -284,7 +284,7 @@ public final class ButtonUIView: UIView { /// - isEnabled: The state of the button: enabled or not. public convenience init( theme: Theme, - intentColor: ButtonIntentColor, + intent: ButtonIntent, variant: ButtonVariant, size: ButtonSize, shape: ButtonShape, @@ -294,7 +294,7 @@ public final class ButtonUIView: UIView { ) { self.init( theme, - intentColor: intentColor, + intent: intent, variant: variant, size: size, shape: shape, @@ -309,7 +309,7 @@ public final class ButtonUIView: UIView { /// Initialize a new button view with an icon image. /// - Parameters: /// - theme: The spark theme of the button. - /// - intentColor: The intent color of the button. + /// - intent: The intent of the button. /// - variant: The variant of the button. /// - size: The size of the button. /// - shape: The shape of the button. @@ -318,7 +318,7 @@ public final class ButtonUIView: UIView { /// - isEnabled: The state of the button: enabled or not. public convenience init( theme: Theme, - intentColor: ButtonIntentColor, + intent: ButtonIntent, variant: ButtonVariant, size: ButtonSize, shape: ButtonShape, @@ -328,7 +328,7 @@ public final class ButtonUIView: UIView { ) { self.init( theme, - intentColor: intentColor, + intent: intent, variant: variant, size: size, shape: shape, @@ -343,7 +343,7 @@ public final class ButtonUIView: UIView { /// Initialize a new button view with an icon image and a text. /// - Parameters: /// - theme: The spark theme of the button. - /// - intentColor: The intent color of the button. + /// - intent: The intent of the button. /// - variant: The variant of the button. /// - size: The size of the button. /// - shape: The shape of the button. @@ -353,7 +353,7 @@ public final class ButtonUIView: UIView { /// - isEnabled: The state of the button: enabled or not. public convenience init( theme: Theme, - intentColor: ButtonIntentColor, + intent: ButtonIntent, variant: ButtonVariant, size: ButtonSize, shape: ButtonShape, @@ -364,7 +364,7 @@ public final class ButtonUIView: UIView { ) { self.init( theme, - intentColor: intentColor, + intent: intent, variant: variant, size: size, shape: shape, @@ -379,7 +379,7 @@ public final class ButtonUIView: UIView { /// Initialize a new button view with an icon image and an attributed text. /// - Parameters: /// - theme: The spark theme of the button. - /// - intentColor: The intent color of the button. + /// - intent: The intent of the button. /// - variant: The variant of the button. /// - size: The size of the button. /// - shape: The shape of the button. @@ -389,7 +389,7 @@ public final class ButtonUIView: UIView { /// - isEnabled: The state of the button: enabled or not. public convenience init( theme: Theme, - intentColor: ButtonIntentColor, + intent: ButtonIntent, variant: ButtonVariant, size: ButtonSize, shape: ButtonShape, @@ -400,7 +400,7 @@ public final class ButtonUIView: UIView { ) { self.init( theme, - intentColor: intentColor, + intent: intent, variant: variant, size: size, shape: shape, @@ -414,7 +414,7 @@ public final class ButtonUIView: UIView { private init( _ theme: Theme, - intentColor: ButtonIntentColor, + intent: ButtonIntent, variant: ButtonVariant, size: ButtonSize, shape: ButtonShape, @@ -426,7 +426,7 @@ public final class ButtonUIView: UIView { ) { self.viewModel = .init( theme: theme, - intentColor: intentColor, + intent: intent, variant: variant, size: size, shape: shape, @@ -697,12 +697,12 @@ public final class ButtonUIView: UIView { self.firstContentStackViewSubviewAnimation = false - if self.iconView.isHidden == content.showIconImage { - self.iconView.isHidden = !content.showIconImage + if self.iconView.isHidden == content.shouldShowIconImage { + self.iconView.isHidden = !content.shouldShowIconImage } - if self.textLabel.isHidden == content.showText { - self.textLabel.isHidden = !content.showText + if self.textLabel.isHidden == content.shouldShowText { + self.textLabel.isHidden = !content.shouldShowText } self.contentStackView.layoutIfNeeded() } diff --git a/core/Sources/Components/Button/View/UIKit/ButtonUIViewTests.swift b/core/Sources/Components/Button/View/UIKit/ButtonUIViewTests.swift index 19e69d6ea..b98a528fd 100644 --- a/core/Sources/Components/Button/View/UIKit/ButtonUIViewTests.swift +++ b/core/Sources/Components/Button/View/UIKit/ButtonUIViewTests.swift @@ -48,7 +48,7 @@ private extension ButtonUIViewTests { if let iconImage = sut.iconImage, let text = sut.text { view = ButtonUIView( theme: self.theme, - intentColor: sut.intentColor, + intent: sut.intent, variant: sut.variant, size: sut.size, shape: sut.shape, @@ -61,7 +61,7 @@ private extension ButtonUIViewTests { } else if let iconImage = sut.iconImage, let attributedText = sut.attributedText { // Icon + Attributed Text view = ButtonUIView( theme: self.theme, - intentColor: sut.intentColor, + intent: sut.intent, variant: sut.variant, size: sut.size, shape: sut.shape, @@ -74,7 +74,7 @@ private extension ButtonUIViewTests { } else if let iconImage = sut.iconImage { // Only Icon view = ButtonUIView( theme: self.theme, - intentColor: sut.intentColor, + intent: sut.intent, variant: sut.variant, size: sut.size, shape: sut.shape, @@ -86,7 +86,7 @@ private extension ButtonUIViewTests { } else if let text = sut.text { // Only Text view = ButtonUIView( theme: self.theme, - intentColor: sut.intentColor, + intent: sut.intent, variant: sut.variant, size: sut.size, shape: sut.shape, @@ -98,7 +98,7 @@ private extension ButtonUIViewTests { } else if let attributedText = sut.attributedText { // Only Attributed Text view = ButtonUIView( theme: self.theme, - intentColor: sut.intentColor, + intent: sut.intent, variant: sut.variant, size: sut.size, shape: sut.shape, diff --git a/core/Sources/Components/Button/ViewModel/ButtonViewModel.swift b/core/Sources/Components/Button/ViewModel/ButtonViewModel.swift index 66d719679..3e05fd96f 100644 --- a/core/Sources/Components/Button/ViewModel/ButtonViewModel.swift +++ b/core/Sources/Components/Button/ViewModel/ButtonViewModel.swift @@ -13,7 +13,7 @@ final class ButtonViewModel: ObservableObject { // MARK: - Properties private(set) var theme: Theme - private(set) var intentColor: ButtonIntentColor + private(set) var intent: ButtonIntent private(set) var variant: ButtonVariant private(set) var size: ButtonSize private(set) var shape: ButtonShape @@ -38,10 +38,17 @@ final class ButtonViewModel: ObservableObject { private var colors: ButtonColors? - private var isIconOnly: Bool = false // Reset on init with setIsOnlyIcon func + private var isIconOnly: Bool { + return self.dependencies.getIsIconOnlyUseCase.execute( + for: self.iconImage, + text: self.text, + attributedText: self.attributedText + ) + } + private var text: String? private var attributedText: AttributedStringEither? - private var textIsDisplayed: Bool // True when text is displayed, false when attributed text is displayed + private var displayedTextType: ButtonDisplayedTextType private var isPressed: Bool = false @@ -51,7 +58,7 @@ final class ButtonViewModel: ObservableObject { init( theme: Theme, - intentColor: ButtonIntentColor, + intent: ButtonIntent, variant: ButtonVariant, size: ButtonSize, shape: ButtonShape, @@ -63,7 +70,7 @@ final class ButtonViewModel: ObservableObject { dependencies: any ButtonViewModelDependenciesProtocol = ButtonViewModelDependencies() ) { self.theme = theme - self.intentColor = intentColor + self.intent = intent self.variant = variant self.size = size self.shape = shape @@ -73,7 +80,14 @@ final class ButtonViewModel: ObservableObject { self.attributedText = attributedText self.isEnabled = isEnabled - self.textIsDisplayed = text != nil + switch (text, attributedText) { + case (nil, nil): + self.displayedTextType = .none + case (nil, _): + self.displayedTextType = .attributedText + case (_, nil), (_, _): + self.displayedTextType = .text + } self.dependencies = dependencies } @@ -81,8 +95,6 @@ final class ButtonViewModel: ObservableObject { // MARK: - Load func load() { - self.setIsOnlyIcon() - // Update all values when view is ready to receive published values self.updateAll() } @@ -115,9 +127,9 @@ final class ButtonViewModel: ObservableObject { self.updateAll(themeChanged: true) } - func set(intentColor: ButtonIntentColor) { - if self.intentColor != intentColor { - self.intentColor = intentColor + func set(intent: ButtonIntent) { + if self.intent != intent { + self.intent = intent self.colorsDidUpdate(reloadColorsFromUseCase: true) } @@ -157,12 +169,10 @@ final class ButtonViewModel: ObservableObject { } func set(text: String?) { - if self.text != text || !self.textIsDisplayed { + // Text changed or is not currently displayed ? + if self.text != text || self.displayedTextType != .text { self.text = text - self.textIsDisplayed = true - - // Should be called before *DidUpdate* methods - self.setIsOnlyIcon() + self.displayedTextType = text != nil ? .text : .none self.contentDidUpdate() self.sizesDidUpdate() @@ -177,12 +187,10 @@ final class ButtonViewModel: ObservableObject { } func set(attributedText: AttributedStringEither?) { - if self.attributedText != attributedText || self.textIsDisplayed { + // AttributedText changed or is not currently displayed ? + if self.attributedText != attributedText || self.displayedTextType != .attributedText { self.attributedText = attributedText - self.textIsDisplayed = false - - // Should be called before *DidUpdate* methods - self.setIsOnlyIcon() + self.displayedTextType = attributedText != nil ? .attributedText : .none self.contentDidUpdate() self.sizesDidUpdate() @@ -194,9 +202,6 @@ final class ButtonViewModel: ObservableObject { if self.iconImage != iconImage { self.iconImage = iconImage - // Should be called before *DidUpdate* methods - self.setIsOnlyIcon() - self.contentDidUpdate() self.sizesDidUpdate() self.spacingsDidUpdate() @@ -211,16 +216,6 @@ final class ButtonViewModel: ObservableObject { } } - // MARK: - Private Setter - - private func setIsOnlyIcon() { - self.isIconOnly = self.dependencies.getIsIconOnlyUseCase.execute( - forIconImage: self.iconImage, - text: self.text, - attributedText: self.attributedText - ) - } - // MARK: - Private Update private func updateAll(themeChanged: Bool = false) { @@ -237,7 +232,7 @@ final class ButtonViewModel: ObservableObject { private func stateDidUpdate() { self.state = self.dependencies.getStateUseCase.execute( - forIsEnabled: self.isEnabled, + for: self.isEnabled, dims: self.theme.dims ) } @@ -247,8 +242,8 @@ final class ButtonViewModel: ObservableObject { ) { if reloadColorsFromUseCase { self.colors = self.dependencies.getColorsUseCase.execute( - forTheme: self.theme, - intentColor: self.intentColor, + for: self.theme, + intent: self.intent, variant: self.variant ) } @@ -258,21 +253,21 @@ final class ButtonViewModel: ObservableObject { } self.currentColors = self.dependencies.getCurrentColorsUseCase.execute( - forColors: colors, + for: colors, isPressed: self.isPressed ) } private func sizesDidUpdate() { self.sizes = self.dependencies.getSizesUseCase.execute( - forSize: self.size, + for: self.size, isOnlyIcon: self.isIconOnly ) } private func borderDidUpdate() { self.border = self.dependencies.getBorderUseCase.execute( - forShape: self.shape, + for: self.shape, border: self.theme.border, variant: self.variant ) @@ -280,14 +275,14 @@ final class ButtonViewModel: ObservableObject { private func spacingsDidUpdate() { self.spacings = self.dependencies.getSpacingsUseCase.execute( - forSpacing: self.theme.layout.spacing, + for: self.theme.layout.spacing, isOnlyIcon: self.isIconOnly ) } private func contentDidUpdate() { self.content = self.dependencies.getContentUseCase.execute( - forAlignment: self.alignment, + for: self.alignment, iconImage: self.iconImage, text: self.text, attributedText: self.attributedText @@ -298,3 +293,11 @@ final class ButtonViewModel: ObservableObject { self.textFontToken = self.theme.typography.callout } } + +// MARK: - Private Enum + +private enum ButtonDisplayedTextType { + case none + case text + case attributedText +} diff --git a/core/Sources/Components/Button/ViewModel/ButtonViewModelTests.swift b/core/Sources/Components/Button/ViewModel/ButtonViewModelTests.swift index 2dcfca458..d087e3b07 100644 --- a/core/Sources/Components/Button/ViewModel/ButtonViewModelTests.swift +++ b/core/Sources/Components/Button/ViewModel/ButtonViewModelTests.swift @@ -21,24 +21,16 @@ final class ButtonViewModelTests: XCTestCase { private let themeMock = ThemeGeneratedMock.mocked() - private let borderMock = ButtonBorderGeneratedMock() - - private var colorsMock: ButtonColorsGeneratedMock = { - let mock = ButtonColorsGeneratedMock() - mock.underlyingForegroundColor = ColorTokenGeneratedMock() - mock.underlyingBackgroundColor = ColorTokenGeneratedMock() - mock.underlyingPressedBackgroundColor = ColorTokenGeneratedMock() - mock.underlyingBorderColor = ColorTokenGeneratedMock() - mock.underlyingPressedBorderColor = ColorTokenGeneratedMock() - return mock - }() + private let borderMock = ButtonBorder.mocked() - private let contentMock = ButtonContentGeneratedMock() - private let currentColorsMock = ButtonCurrentColorsGeneratedMock() + private let colorsMock = ButtonColors.mocked() + + private let contentMock = ButtonContent.mocked() + private let currentColorsMock = ButtonCurrentColors.mocked() private let isIconOnlyMock = false - private let sizesMock = ButtonSizesGeneratedMock() - private let spacingsMock = ButtonSpacingsGeneratedMock() - private let stateMock = ButtonStateGeneratedMock() + private let sizesMock = ButtonSizes.mocked() + private let spacingsMock = ButtonSpacings.mocked() + private let stateMock = ButtonState.mocked() private lazy var getBorderUseCaseMock: ButtonGetBorderUseCaseableGeneratedMock = { let mock = ButtonGetBorderUseCaseableGeneratedMock() @@ -47,7 +39,7 @@ final class ButtonViewModelTests: XCTestCase { }() private lazy var getColorsUseCaseMock: ButtonGetColorsUseCaseableGeneratedMock = { let mock = ButtonGetColorsUseCaseableGeneratedMock() - mock.executeWithThemeAndIntentColorAndVariantReturnValue = self.colorsMock + mock.executeWithThemeAndIntentAndVariantReturnValue = self.colorsMock return mock }() private lazy var getContentUseCaseMock: ButtonGetContentUseCaseableGeneratedMock = { @@ -108,7 +100,7 @@ final class ButtonViewModelTests: XCTestCase { func test_properties_on_init() throws { // GIVEN - let intentColorMock: ButtonIntentColor = .danger + let intentMock: ButtonIntent = .danger let variantMock: ButtonVariant = .filled let sizeMock: ButtonSize = .large let shapeMock: ButtonShape = .pill @@ -119,7 +111,7 @@ final class ButtonViewModelTests: XCTestCase { // WHEN let viewModel = self.classToTest( - intentColor: intentColorMock, + intent: intentMock, variant: variantMock, size: sizeMock, shape: shapeMock, @@ -136,9 +128,9 @@ final class ButtonViewModelTests: XCTestCase { XCTAssertIdentical(viewModel.theme as? ThemeGeneratedMock, self.themeMock, "Wrong theme value") - XCTAssertEqual(viewModel.intentColor, - intentColorMock, - "Wrong intentColor value") + XCTAssertEqual(viewModel.intent, + intentMock, + "Wrong intent value") XCTAssertEqual(viewModel.variant, variantMock, "Wrong variant value") @@ -215,7 +207,7 @@ final class ButtonViewModelTests: XCTestCase { func test_published_properties_on_load() throws { // GIVEN - let intentColorMock: ButtonIntentColor = .secondary + let intentMock: ButtonIntent = .secondary let variantMock: ButtonVariant = .outlined let sizeMock: ButtonSize = .medium let shapeMock: ButtonShape = .rounded @@ -226,7 +218,7 @@ final class ButtonViewModelTests: XCTestCase { // WHEN let viewModel = self.classToTest( - intentColor: intentColorMock, + intent: intentMock, variant: variantMock, size: sizeMock, shape: shapeMock, @@ -284,7 +276,7 @@ final class ButtonViewModelTests: XCTestCase { ) self.testGetColorsUseCaseMock( givenTheme: self.themeMock, - givenIntentColor: intentColorMock, + givenIntent: intentMock, givenVariant: variantMock ) self.testGetContentUseCaseMock( @@ -406,7 +398,7 @@ final class ButtonViewModelTests: XCTestCase { // GIVEN let newThemeMock = themeMock - let intentColorMock: ButtonIntentColor = .secondary + let intentMock: ButtonIntent = .secondary let variantMock: ButtonVariant = .outlined let sizeMock: ButtonSize = .medium let shapeMock: ButtonShape = .rounded @@ -416,7 +408,7 @@ final class ButtonViewModelTests: XCTestCase { let isEnabledMock = false let viewModel = self.classToTest( - intentColor: intentColorMock, + intent: intentMock, variant: variantMock, size: sizeMock, shape: shapeMock, @@ -469,7 +461,7 @@ final class ButtonViewModelTests: XCTestCase { ) self.testGetColorsUseCaseMock( givenTheme: newThemeMock, - givenIntentColor: intentColorMock, + givenIntent: intentMock, givenVariant: variantMock ) self.testGetCurrentColorsUseCaseMock( @@ -491,24 +483,24 @@ final class ButtonViewModelTests: XCTestCase { // ** } - func test_set_intentColor_with_new_value() { - self.testSetIntentColor( + func test_set_intent_with_new_value() { + self.testSetIntent( givenValue: .danger, givenNewValue: .primary ) } - func test_set_intentColor_without_new_value() { - let valueMock: ButtonIntentColor = .primary - self.testSetIntentColor( + func test_set_intent_without_new_value() { + let valueMock: ButtonIntent = .primary + self.testSetIntent( givenValue: valueMock, givenNewValue: valueMock ) } - private func testSetIntentColor( - givenValue: ButtonIntentColor, - givenNewValue: ButtonIntentColor + private func testSetIntent( + givenValue: ButtonIntent, + givenNewValue: ButtonIntent ) { // GIVEN let isNewValue = givenValue != givenNewValue @@ -516,7 +508,7 @@ final class ButtonViewModelTests: XCTestCase { let variantMock: ButtonVariant = .outlined let viewModel = self.classToTest( - intentColor: givenValue, + intent: givenValue, variant: variantMock ) @@ -528,7 +520,7 @@ final class ButtonViewModelTests: XCTestCase { self.resetMockedData() // WHEN - viewModel.set(intentColor: givenNewValue) + viewModel.set(intent: givenNewValue) // THEN @@ -542,7 +534,7 @@ final class ButtonViewModelTests: XCTestCase { self.testGetColorsUseCaseMock( numberOfCalls: isNewValue ? 1 : 0, givenTheme: self.themeMock, - givenIntentColor: givenNewValue, + givenIntent: givenNewValue, givenVariant: variantMock ) self.testGetCurrentColorsUseCaseMock( @@ -575,11 +567,11 @@ final class ButtonViewModelTests: XCTestCase { // GIVEN let isNewValue = givenValue != givenNewValue - let intentColorMock: ButtonIntentColor = .success + let intentMock: ButtonIntent = .success let shapeMock: ButtonShape = .square let viewModel = self.classToTest( - intentColor: intentColorMock, + intent: intentMock, variant: givenValue, shape: shapeMock ) @@ -610,7 +602,7 @@ final class ButtonViewModelTests: XCTestCase { self.testGetColorsUseCaseMock( numberOfCalls: isNewValue ? 1 : 0, givenTheme: self.themeMock, - givenIntentColor: intentColorMock, + givenIntent: intentMock, givenVariant: givenNewValue ) self.testGetCurrentColorsUseCaseMock( @@ -863,7 +855,7 @@ final class ButtonViewModelTests: XCTestCase { // ** // Use Cases self.testGetIsIconOnlyUseCaseMock( - numberOfCalls: isNewValue ? 1 : 0, + numberOfCalls: isNewValue ? 2 : 0, givenIconImage: nil, givenText: givenNewValue, givenAttributedText: nil @@ -948,7 +940,7 @@ final class ButtonViewModelTests: XCTestCase { // ** // Use Cases self.testGetIsIconOnlyUseCaseMock( - numberOfCalls: isNewValue ? 1 : 0, + numberOfCalls: isNewValue ? 2 : 0, givenIconImage: nil, givenText: nil, givenAttributedText: givenNewValue @@ -1035,7 +1027,7 @@ final class ButtonViewModelTests: XCTestCase { // ** // Use Cases self.testGetIsIconOnlyUseCaseMock( - numberOfCalls: isNewValue ? 1 : 0, + numberOfCalls: isNewValue ? 2 : 0, givenIconImage: givenNewValue, givenText: nil, givenAttributedText: nil @@ -1122,7 +1114,7 @@ final class ButtonViewModelTests: XCTestCase { private extension ButtonViewModelTests { private func classToTest( - intentColor: ButtonIntentColor = .primary, + intent: ButtonIntent = .primary, variant: ButtonVariant = .tinted, size: ButtonSize = .medium, shape: ButtonShape = .rounded, @@ -1148,7 +1140,7 @@ private extension ButtonViewModelTests { return .init( theme: self.themeMock, - intentColor: intentColor, + intent: intent, variant: variant, size: size, shape: shape, @@ -1197,37 +1189,37 @@ private extension ButtonViewModelTests { } private func testState(on viewModel: ButtonViewModel) { - XCTAssertIdentical(viewModel.state as? ButtonStateGeneratedMock, + XCTAssertEqual(viewModel.state, self.stateMock, "Wrong state value") } private func testCurrentColors(on viewModel: ButtonViewModel) { - XCTAssertIdentical(viewModel.currentColors as? ButtonCurrentColorsGeneratedMock, + XCTAssertEqual(viewModel.currentColors, self.currentColorsMock, "Wrong currentColors value") } private func testSizes(on viewModel: ButtonViewModel) { - XCTAssertIdentical(viewModel.sizes as? ButtonSizesGeneratedMock, + XCTAssertEqual(viewModel.sizes, self.sizesMock, "Wrong sizes value") } private func testBorder(on viewModel: ButtonViewModel) { - XCTAssertIdentical(viewModel.border as? ButtonBorderGeneratedMock, + XCTAssertEqual(viewModel.border, self.borderMock, "Wrong border value") } private func testSpacings(on viewModel: ButtonViewModel) { - XCTAssertIdentical(viewModel.spacings as? ButtonSpacingsGeneratedMock, + XCTAssertEqual(viewModel.spacings, self.spacingsMock, "Wrong spacings value") } private func testContent(on viewModel: ButtonViewModel) { - XCTAssertIdentical(viewModel.content as? ButtonContentGeneratedMock, + XCTAssertEqual(viewModel.content, self.contentMock, "Wrong content value") } @@ -1270,21 +1262,21 @@ private extension ButtonViewModelTests { private func testGetColorsUseCaseMock( numberOfCalls: Int = 1, givenTheme: ThemeGeneratedMock? = nil, - givenIntentColor: ButtonIntentColor? = nil, + givenIntent: ButtonIntent? = nil, givenVariant: ButtonVariant? = nil ) { - XCTAssertEqual(self.getColorsUseCaseMock.executeWithThemeAndIntentColorAndVariantCallsCount, + XCTAssertEqual(self.getColorsUseCaseMock.executeWithThemeAndIntentAndVariantCallsCount, numberOfCalls, "Wrong call number on execute on getColorsUseCase") - if numberOfCalls > 0, let givenTheme, let givenIntentColor, let givenVariant { - let getColorsUseCaseArgs = self.getColorsUseCaseMock.executeWithThemeAndIntentColorAndVariantReceivedArguments + if numberOfCalls > 0, let givenTheme, let givenIntent, let givenVariant { + let getColorsUseCaseArgs = self.getColorsUseCaseMock.executeWithThemeAndIntentAndVariantReceivedArguments XCTAssertIdentical(try XCTUnwrap(getColorsUseCaseArgs?.theme as? ThemeGeneratedMock), givenTheme, "Wrong theme parameter on execute on getColorsUseCase") - XCTAssertEqual(getColorsUseCaseArgs?.intentColor, - givenIntentColor, - "Wrong intentColor parameter on execute on getColorsUseCase") + XCTAssertEqual(getColorsUseCaseArgs?.intent, + givenIntent, + "Wrong intent parameter on execute on getColorsUseCase") XCTAssertEqual(getColorsUseCaseArgs?.variant, givenVariant, "Wrong variant parameter on execute on getColorsUseCase") @@ -1321,7 +1313,7 @@ private extension ButtonViewModelTests { private func testGetCurrentColorsUseCaseMock( numberOfCalls: Int = 1, - givenColors: ButtonColorsGeneratedMock? = nil, + givenColors: ButtonColors? = nil, givenIsPressed: Bool? = nil ) { XCTAssertEqual(self.getCurrentColorsUseCaseMock.executeWithColorsAndIsPressedCallsCount, @@ -1330,7 +1322,7 @@ private extension ButtonViewModelTests { if numberOfCalls > 0, let givenColors, let givenIsPressed { let getCurrentColorsUseCaseArgs = self.getCurrentColorsUseCaseMock.executeWithColorsAndIsPressedReceivedArguments - XCTAssertIdentical(try XCTUnwrap(getCurrentColorsUseCaseArgs?.colors as? ButtonColorsGeneratedMock), + XCTAssertEqual(try XCTUnwrap(getCurrentColorsUseCaseArgs?.colors), givenColors, "Wrong colors parameter on execute on getCurrentColorsUseCase") XCTAssertEqual(getCurrentColorsUseCaseArgs?.isPressed, @@ -1340,7 +1332,7 @@ private extension ButtonViewModelTests { } private func testGetIsIconOnlyUseCaseMock( - numberOfCalls: Int = 1, + numberOfCalls: Int = 2, givenIconImage: UIImage? = nil, givenText: String? = nil, givenAttributedText: NSAttributedString? = nil @@ -1429,9 +1421,9 @@ private extension ButtonViewModelTests { self.getBorderUseCaseMock.executeWithShapeAndBorderAndVariantReceivedArguments = nil self.getBorderUseCaseMock.executeWithShapeAndBorderAndVariantReceivedInvocations = [] - self.getColorsUseCaseMock.executeWithThemeAndIntentColorAndVariantCallsCount = 0 - self.getColorsUseCaseMock.executeWithThemeAndIntentColorAndVariantReceivedArguments = nil - self.getColorsUseCaseMock.executeWithThemeAndIntentColorAndVariantReceivedInvocations = [] + self.getColorsUseCaseMock.executeWithThemeAndIntentAndVariantCallsCount = 0 + self.getColorsUseCaseMock.executeWithThemeAndIntentAndVariantReceivedArguments = nil + self.getColorsUseCaseMock.executeWithThemeAndIntentAndVariantReceivedInvocations = [] self.getContentUseCaseMock.executeWithAlignmentAndIconImageAndTextAndAttributedTextCallsCount = 0 self.getContentUseCaseMock.executeWithAlignmentAndIconImageAndTextAndAttributedTextReceivedArguments = nil diff --git a/core/Sources/Components/Switch/ViewModel/SwitchViewModelTests.swift b/core/Sources/Components/Switch/ViewModel/SwitchViewModelTests.swift index 5b025dc31..fb790bbe9 100644 --- a/core/Sources/Components/Switch/ViewModel/SwitchViewModelTests.swift +++ b/core/Sources/Components/Switch/ViewModel/SwitchViewModelTests.swift @@ -192,12 +192,6 @@ final class SwitchViewModelTests: XCTestCase { givenIsEnabled: isEnabledMock ) // ** - - // Maker - self.testMakeTextContentMock( - givenText: self.textMock, - givenAttributedText: self.attributedTextMock - ) } // MARK: - Toggle Tests @@ -789,10 +783,5 @@ private extension SwitchViewModelTests { self.getToggleStateUseCaseMock.executeWithIsEnabledAndDimsCallsCount = 0 self.getToggleStateUseCaseMock.executeWithIsEnabledAndDimsReceivedArguments = nil self.getToggleStateUseCaseMock.executeWithIsEnabledAndDimsReceivedInvocations = [] - - // Clear Dependencies Maker - self.dependenciesMock.makeTextContentWithTextAndAttributedTextCallsCount = 0 - self.dependenciesMock.makeTextContentWithTextAndAttributedTextReceivedArguments = nil - self.dependenciesMock.makeTextContentWithTextAndAttributedTextReceivedInvocations = [] } } diff --git a/core/Sources/Components/Tag/Enum/TagIntentColor.swift b/core/Sources/Components/Tag/Enum/TagIntent.swift similarity index 100% rename from core/Sources/Components/Tag/Enum/TagIntentColor.swift rename to core/Sources/Components/Tag/Enum/TagIntent.swift diff --git a/spark/Demo/Classes/View/Components/Button/ButtonComponentItemsUIView.swift b/spark/Demo/Classes/View/Components/Button/ButtonComponentItemsUIView.swift index aab5d3cd8..bc93897d7 100644 --- a/spark/Demo/Classes/View/Components/Button/ButtonComponentItemsUIView.swift +++ b/spark/Demo/Classes/View/Components/Button/ButtonComponentItemsUIView.swift @@ -22,7 +22,7 @@ struct ButtonComponentItemsUIView: UIViewRepresentable { var width: CGFloat @Binding var height: CGFloat - private let intentColor: ButtonIntentColor + private let intent: ButtonIntent private let variant: ButtonVariant private let size: ButtonSize private let shape: ButtonShape @@ -36,7 +36,7 @@ struct ButtonComponentItemsUIView: UIViewRepresentable { viewModel: ButtonComponentViewModel, width: CGFloat, height: Binding, - intentColor: ButtonIntentColor, + intent: ButtonIntent, variant: ButtonVariant, size: ButtonSize, shape: ButtonShape, @@ -55,7 +55,7 @@ struct ButtonComponentItemsUIView: UIViewRepresentable { ) self.width = width self._height = height - self.intentColor = intentColor + self.intent = intent self.variant = variant self.size = size self.shape = shape @@ -73,7 +73,7 @@ struct ButtonComponentItemsUIView: UIViewRepresentable { case .icon: buttonView = ButtonUIView( theme: SparkTheme.shared, - intentColor: self.intentColor, + intent: self.intent, variant: self.variant, size: self.size, shape: self.shape, @@ -85,7 +85,7 @@ struct ButtonComponentItemsUIView: UIViewRepresentable { case .text: buttonView = ButtonUIView( theme: SparkTheme.shared, - intentColor: self.intentColor, + intent: self.intent, variant: self.variant, size: self.size, shape: self.shape, @@ -97,7 +97,7 @@ struct ButtonComponentItemsUIView: UIViewRepresentable { case .attributedText: buttonView = ButtonUIView( theme: SparkTheme.shared, - intentColor: self.intentColor, + intent: self.intent, variant: self.variant, size: self.size, shape: self.shape, @@ -109,7 +109,7 @@ struct ButtonComponentItemsUIView: UIViewRepresentable { case .iconAndText: buttonView = ButtonUIView( theme: SparkTheme.shared, - intentColor: self.intentColor, + intent: self.intent, variant: self.variant, size: self.size, shape: self.shape, @@ -122,7 +122,7 @@ struct ButtonComponentItemsUIView: UIViewRepresentable { case .iconAndAttributedText: buttonView = ButtonUIView( theme: SparkTheme.shared, - intentColor: self.intentColor, + intent: self.intent, variant: self.variant, size: self.size, shape: self.shape, @@ -151,8 +151,8 @@ struct ButtonComponentItemsUIView: UIViewRepresentable { return } - if buttonView.intentColor != self.intentColor { - buttonView.intentColor = self.intentColor + if buttonView.intent != self.intent { + buttonView.intent = self.intent } if buttonView.variant != self.variant { diff --git a/spark/Demo/Classes/View/Components/Button/ButtonComponentView.swift b/spark/Demo/Classes/View/Components/Button/ButtonComponentView.swift index 58af6bfee..03afa717a 100644 --- a/spark/Demo/Classes/View/Components/Button/ButtonComponentView.swift +++ b/spark/Demo/Classes/View/Components/Button/ButtonComponentView.swift @@ -21,8 +21,8 @@ struct ButtonComponentView: View { @State private var versionSheetIsPresented = false @State var version: ComponentVersion = .uiKit - @State private var intentColorSheetIsPresented = false - @State var intentColor: ButtonIntentColor = .primary + @State private var intentSheetIsPresented = false + @State var intent: ButtonIntent = .primary @State private var variantSheetIsPresented = false @State var variant: ButtonVariant = .filled @@ -69,7 +69,7 @@ struct ButtonComponentView: View { } } } - .onChange(of: self.intentColor) { newValue in + .onChange(of: self.intent) { newValue in self.shouldShowReverseBackgroundColor = (newValue == .surface) } } @@ -80,13 +80,13 @@ struct ButtonComponentView: View { HStack() { Text("Intent: ") .bold() - Button("\(self.intentColor.name)") { - self.intentColorSheetIsPresented = true + Button("\(self.intent.name)") { + self.intentSheetIsPresented = true } - .confirmationDialog("Select an intent", isPresented: self.$intentColorSheetIsPresented) { - ForEach(ButtonIntentColor.allCases, id: \.self) { intentColor in - Button("\(intentColor.name)") { - self.intentColor = intentColor + .confirmationDialog("Select an intent", isPresented: self.$intentSheetIsPresented) { + ForEach(ButtonIntent.allCases, id: \.self) { intent in + Button("\(intent.name)") { + self.intent = intent } } } @@ -206,7 +206,7 @@ struct ButtonComponentView: View { viewModel: self.viewModel, width: geometry.size.width, height: self.$uiKitViewHeight, - intentColor: self.$intentColor.wrappedValue, + intent: self.$intent.wrappedValue, variant: self.$variant.wrappedValue, size: self.$size.wrappedValue, shape: self.$shape.wrappedValue, @@ -237,7 +237,7 @@ struct ButtonComponentView_Previews: PreviewProvider { // MARK: - Extension -private extension ButtonIntentColor { +private extension ButtonIntent { var name: String { switch self {