diff --git a/solutions/devsprint-caio-santos-7/FinanceApp.xcodeproj/project.pbxproj b/solutions/devsprint-caio-santos-7/FinanceApp.xcodeproj/project.pbxproj index ac620ca..bb34066 100644 --- a/solutions/devsprint-caio-santos-7/FinanceApp.xcodeproj/project.pbxproj +++ b/solutions/devsprint-caio-santos-7/FinanceApp.xcodeproj/project.pbxproj @@ -36,7 +36,8 @@ 98C8A4E327C819DE00A630ED /* Contact.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98C8A4E227C819DE00A630ED /* Contact.swift */; }; 98C8A4E527C81A3F00A630ED /* TransferResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98C8A4E427C81A3F00A630ED /* TransferResult.swift */; }; 98C8A4E727C81A9C00A630ED /* UserProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98C8A4E627C81A9C00A630ED /* UserProfile.swift */; }; - A8A985E21DB09F86D3EECE24 /* Pods_FinanceApp_FinanceAppUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A5A6F294F414949861585C4 /* Pods_FinanceApp_FinanceAppUITests.framework */; }; + BFF7C39628F8C52900521C81 /* ActivityCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF7C39528F8C52900521C81 /* ActivityCellView.swift */; }; + BFF7C39928F8C72000521C81 /* ActivityCellViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF7C39828F8C72000521C81 /* ActivityCellViewTests.swift */; }; D7292043FD377209482E7A09 /* Pods_FinanceApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55C4E25CA63BCFCC105EC051 /* Pods_FinanceApp.framework */; }; /* End PBXBuildFile section */ @@ -48,13 +49,6 @@ remoteGlobalIDString = 98584A68277E32C30028DBEA; remoteInfo = FinanceApp; }; - 98584A8A277E32C60028DBEA /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 98584A61277E32C30028DBEA /* Project object */; - proxyType = 1; - remoteGlobalIDString = 98584A68277E32C30028DBEA; - remoteInfo = FinanceApp; - }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -75,7 +69,6 @@ 98584A78277E32C50028DBEA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 98584A7A277E32C50028DBEA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 98584A7F277E32C60028DBEA /* FinanceAppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FinanceAppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 98584A89277E32C60028DBEA /* FinanceAppUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FinanceAppUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 98584AA4277E35E90028DBEA /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = ""; }; 98584AA6277E35F10028DBEA /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; 98584AC2277E42E80028DBEA /* FinanceService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FinanceService.swift; sourceTree = ""; }; @@ -98,6 +91,8 @@ 98C8A4E427C81A3F00A630ED /* TransferResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransferResult.swift; sourceTree = ""; }; 98C8A4E627C81A9C00A630ED /* UserProfile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProfile.swift; sourceTree = ""; }; B1ABD9ED7D6A8881AE0663F0 /* Pods-FinanceAppTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FinanceAppTests.release.xcconfig"; path = "Target Support Files/Pods-FinanceAppTests/Pods-FinanceAppTests.release.xcconfig"; sourceTree = ""; }; + BFF7C39528F8C52900521C81 /* ActivityCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityCellView.swift; sourceTree = ""; }; + BFF7C39828F8C72000521C81 /* ActivityCellViewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityCellViewTests.swift; sourceTree = ""; }; E0DAC424B947E017F740FDAF /* Pods-FinanceAppTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FinanceAppTests.debug.xcconfig"; path = "Target Support Files/Pods-FinanceAppTests/Pods-FinanceAppTests.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -118,14 +113,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 98584A86277E32C60028DBEA /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - A8A985E21DB09F86D3EECE24 /* Pods_FinanceApp_FinanceAppUITests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -141,6 +128,7 @@ 25C8175228F772BE003127C0 /* Screens */ = { isa = PBXGroup; children = ( + BFF7C39728F8C6B000521C81 /* ActivityDetails */, 25C8175328F772C5003127C0 /* Components */, ); path = Screens; @@ -182,7 +170,6 @@ children = ( 98584A6B277E32C30028DBEA /* FinanceApp */, 98584A82277E32C60028DBEA /* FinanceAppTests */, - 98584A8C277E32C60028DBEA /* FinanceAppUITests */, 98584A6A277E32C30028DBEA /* Products */, 51E5AEA143646311ECCE5A29 /* Pods */, 820E387591A4D6261F2D6AF5 /* Frameworks */, @@ -194,7 +181,6 @@ children = ( 98584A69277E32C30028DBEA /* FinanceApp.app */, 98584A7F277E32C60028DBEA /* FinanceAppTests.xctest */, - 98584A89277E32C60028DBEA /* FinanceAppUITests.xctest */, ); name = Products; sourceTree = ""; @@ -221,13 +207,6 @@ path = FinanceAppTests; sourceTree = ""; }; - 98584A8C277E32C60028DBEA /* FinanceAppUITests */ = { - isa = PBXGroup; - children = ( - ); - path = FinanceAppUITests; - sourceTree = ""; - }; 98584A9C277E350D0028DBEA /* AppDelegate */ = { isa = PBXGroup; children = ( @@ -322,6 +301,7 @@ children = ( 98584B0E277E605F0028DBEA /* ActivityDetailsView.swift */, 98584B0A277E605F0028DBEA /* ActivityDetailsViewController.swift */, + BFF7C39528F8C52900521C81 /* ActivityCellView.swift */, ); path = ActivityDetails; sourceTree = ""; @@ -352,6 +332,14 @@ path = Extensions; sourceTree = ""; }; + BFF7C39728F8C6B000521C81 /* ActivityDetails */ = { + isa = PBXGroup; + children = ( + BFF7C39828F8C72000521C81 /* ActivityCellViewTests.swift */, + ); + path = ActivityDetails; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -393,25 +381,6 @@ productReference = 98584A7F277E32C60028DBEA /* FinanceAppTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - 98584A88277E32C60028DBEA /* FinanceAppUITests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 98584A99277E32C60028DBEA /* Build configuration list for PBXNativeTarget "FinanceAppUITests" */; - buildPhases = ( - 393A39408D8B880CDB2FAB8A /* [CP] Check Pods Manifest.lock */, - 98584A85277E32C60028DBEA /* Sources */, - 98584A86277E32C60028DBEA /* Frameworks */, - 98584A87277E32C60028DBEA /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 98584A8B277E32C60028DBEA /* PBXTargetDependency */, - ); - name = FinanceAppUITests; - productName = FinanceAppUITests; - productReference = 98584A89277E32C60028DBEA /* FinanceAppUITests.xctest */; - productType = "com.apple.product-type.bundle.ui-testing"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -429,10 +398,6 @@ CreatedOnToolsVersion = 13.2.1; TestTargetID = 98584A68277E32C30028DBEA; }; - 98584A88277E32C60028DBEA = { - CreatedOnToolsVersion = 13.2.1; - TestTargetID = 98584A68277E32C30028DBEA; - }; }; }; buildConfigurationList = 98584A64277E32C30028DBEA /* Build configuration list for PBXProject "FinanceApp" */; @@ -450,7 +415,6 @@ targets = ( 98584A68277E32C30028DBEA /* FinanceApp */, 98584A7E277E32C60028DBEA /* FinanceAppTests */, - 98584A88277E32C60028DBEA /* FinanceAppUITests */, ); }; /* End PBXProject section */ @@ -472,13 +436,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 98584A87277E32C60028DBEA /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -504,28 +461,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 393A39408D8B880CDB2FAB8A /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-FinanceApp-FinanceAppUITests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; 68BF10F55AF59FA516E57803 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -579,6 +514,7 @@ 98584B20277E60740028DBEA /* ContactListViewController.swift in Sources */, 98584AF4277E50430028DBEA /* ConfirmationViewController.swift in Sources */, 98C8A4DD27C818A800A630ED /* HomeData.swift in Sources */, + BFF7C39628F8C52900521C81 /* ActivityCellView.swift in Sources */, 98C8A4D927C8152200A630ED /* String+Extensions.swift in Sources */, 98C8A4E727C81A9C00A630ED /* UserProfile.swift in Sources */, 98C8A4E327C819DE00A630ED /* Contact.swift in Sources */, @@ -605,13 +541,7 @@ buildActionMask = 2147483647; files = ( 25C8175528F772FD003127C0 /* AccountSummaryViewTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 98584A85277E32C60028DBEA /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( + BFF7C39928F8C72000521C81 /* ActivityCellViewTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -623,11 +553,6 @@ target = 98584A68277E32C30028DBEA /* FinanceApp */; targetProxy = 98584A80277E32C60028DBEA /* PBXContainerItemProxy */; }; - 98584A8B277E32C60028DBEA /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 98584A68277E32C30028DBEA /* FinanceApp */; - targetProxy = 98584A8A277E32C60028DBEA /* PBXContainerItemProxy */; - }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -858,44 +783,6 @@ }; name = Release; }; - 98584A9A277E32C60028DBEA /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 61A71CDF7B0095F152A3CD4E /* Pods-FinanceApp-FinanceAppUITests.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = B8F644M47X; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.devpass.FinanceAppUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = FinanceApp; - }; - name = Debug; - }; - 98584A9B277E32C60028DBEA /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6989344458FFDBA154C3EC32 /* Pods-FinanceApp-FinanceAppUITests.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = B8F644M47X; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.devpass.FinanceAppUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = FinanceApp; - }; - name = Release; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -926,15 +813,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 98584A99277E32C60028DBEA /* Build configuration list for PBXNativeTarget "FinanceAppUITests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 98584A9A277E32C60028DBEA /* Debug */, - 98584A9B277E32C60028DBEA /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = 98584A61277E32C30028DBEA /* Project object */; diff --git a/solutions/devsprint-caio-santos-7/FinanceApp/Screens/ActivityDetails/ActivityCellView.swift b/solutions/devsprint-caio-santos-7/FinanceApp/Screens/ActivityDetails/ActivityCellView.swift new file mode 100644 index 0000000..519ab63 --- /dev/null +++ b/solutions/devsprint-caio-santos-7/FinanceApp/Screens/ActivityDetails/ActivityCellView.swift @@ -0,0 +1,93 @@ +// +// ActivityCellView.swift +// FinanceApp +// +// Created by Cleber Reis on 13/10/22. +// + +import UIKit + +class ActivityCellView: UITableViewCell { + + private lazy var icon: UIImageView = { + let image = UIImageView() + image.translatesAutoresizingMaskIntoConstraints = false + image.image = UIImage(named: "fork.knife.circle.fill") + image.contentMode = .scaleAspectFit + image.layer.cornerRadius = 24 + image.clipsToBounds = true + + return image + }() + + private lazy var stackView: UIStackView = { + let stack = UIStackView() + stack.translatesAutoresizingMaskIntoConstraints = false + stack.axis = .vertical + stack.spacing = 4 + + return stack + }() + + private lazy var titleLabel: UILabel = { + let label = UILabel() + label.translatesAutoresizingMaskIntoConstraints = false + label.text = "Food court" + label.font = .systemFont(ofSize: 16, weight: .semibold) + + return label + }() + + private lazy var titleDescription: UILabel = { + let label = UILabel() + label.translatesAutoresizingMaskIntoConstraints = false + label.text = "R$ 1000 - 8:57" + label.font = .systemFont(ofSize: 14, weight: .regular) + + return label + }() + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + setupView() + configViews() + } + + @available(*, unavailable) + required init?(coder: NSCoder) { nil } +} + +extension ActivityCellView: ViewCodable { + + func configViews() { + backgroundColor = .white + } + + func buildHierarchy() { + contentView.addSubview(icon) + contentView.addSubview(stackView) + stackView.addArrangedSubview(titleLabel) + stackView.addArrangedSubview(titleDescription) + } + + + func setupConstraints() { + + NSLayoutConstraint.activate([ + icon.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 8), + icon.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 8), + icon.heightAnchor.constraint(equalToConstant: 48), + icon.widthAnchor.constraint(equalToConstant: 48), + + stackView.centerYAnchor.constraint(equalTo: contentView.centerYAnchor), + stackView.leadingAnchor.constraint(equalTo: icon.trailingAnchor, constant: 8), + stackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -8), + + titleLabel.leadingAnchor.constraint(equalTo: stackView.trailingAnchor), + titleLabel.trailingAnchor.constraint(equalTo: stackView.trailingAnchor), + + titleDescription.leadingAnchor.constraint(equalTo: titleLabel.leadingAnchor), + titleDescription.trailingAnchor.constraint(equalTo: titleLabel.trailingAnchor), + ]) + } +} diff --git a/solutions/devsprint-caio-santos-7/FinanceAppTests/Screens/ActivityDetails/ActivityCellViewTests.swift b/solutions/devsprint-caio-santos-7/FinanceAppTests/Screens/ActivityDetails/ActivityCellViewTests.swift new file mode 100644 index 0000000..402ce37 --- /dev/null +++ b/solutions/devsprint-caio-santos-7/FinanceAppTests/Screens/ActivityDetails/ActivityCellViewTests.swift @@ -0,0 +1,35 @@ +// +// ActivityCellViewTests.swift +// FinanceAppTests +// +// Created by Cleber Reis on 13/10/22. +// + +import UIKit +import SnapshotTesting +import XCTest + +@testable import FinanceApp + +final class ActivityCellViewTests: XCTestCase { + + private var sut: ActivityCellView? + + override func setUp() { + + sut = ActivityCellView() + let frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 64) + sut?.frame = frame + + } + + func test_WhenInitActivityCellView_ThenView_ShouldHaveValidSnapshot() throws { + let unwrappedSut = try XCTUnwrap(sut) + assertSnapshot(matching: unwrappedSut, as: .image) + + } + + override func tearDown() { + sut = nil + } +} diff --git a/solutions/devsprint-caio-santos-7/FinanceAppTests/Screens/ActivityDetails/__Snapshots__/ActivityCellViewTests/test_WhenInitActivityCellView_ThenView_ShouldHaveValidSnapshot.1.png b/solutions/devsprint-caio-santos-7/FinanceAppTests/Screens/ActivityDetails/__Snapshots__/ActivityCellViewTests/test_WhenInitActivityCellView_ThenView_ShouldHaveValidSnapshot.1.png new file mode 100644 index 0000000..32da823 Binary files /dev/null and b/solutions/devsprint-caio-santos-7/FinanceAppTests/Screens/ActivityDetails/__Snapshots__/ActivityCellViewTests/test_WhenInitActivityCellView_ThenView_ShouldHaveValidSnapshot.1.png differ diff --git a/solutions/devsprint-caio-santos-7/Podfile.lock b/solutions/devsprint-caio-santos-7/Podfile.lock index 2f6b05f..6a024e4 100644 --- a/solutions/devsprint-caio-santos-7/Podfile.lock +++ b/solutions/devsprint-caio-santos-7/Podfile.lock @@ -13,4 +13,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 47d5e29d1f724e8d7c597d87a8ae9ab07e5d53aa -COCOAPODS: 1.11.3 +COCOAPODS: 1.11.2