From 411554ed82270f7c3bb9cde7b656c340c41de488 Mon Sep 17 00:00:00 2001 From: Taras Pasichnyk Date: Fri, 3 Aug 2018 07:07:23 +0300 Subject: [PATCH] Add new line with wallet name on Transaction Confirmation (#866) * Add new line with wallet name on Transaction Confirmation * Changge wallet info used for currentWalletTitle to improve clarity. * Change visual appearance of sender wallet view. * Change title From Wallet -> From. Avoid passing Keystore. * Use localizable string instead * Remove useless localized string * Change Sender -> From * Remove variables, combined in other string variable. * Add unit test for format of string in ConfirmPaymentDetailsViewModel * Add factory to PreviewTransaction * Impove ConfirmPaymentDetailsViewModelTests * Shorten address --- Trust.xcodeproj/project.pbxproj | 8 ++++++ .../ConfirmPaymentViewController.swift | 2 +- .../ConfirmPaymentDetailsViewModel.swift | 7 ++++- TrustTests/Factories/PreviewTransaction.swift | 24 +++++++++++++++++ TrustTests/Factories/WalletSession.swift | 4 +-- .../ConfirmPaymentDetailsViewModelTests.swift | 26 +++++++++++++++++++ 6 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 TrustTests/Factories/PreviewTransaction.swift create mode 100644 TrustTests/Transfer/ViewModels/ConfirmPaymentDetailsViewModelTests.swift diff --git a/Trust.xcodeproj/project.pbxproj b/Trust.xcodeproj/project.pbxproj index a0b4cfb9ef..2a75e0673e 100644 --- a/Trust.xcodeproj/project.pbxproj +++ b/Trust.xcodeproj/project.pbxproj @@ -38,6 +38,7 @@ 291F52B71F6B870400B369AB /* CastError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 291F52B61F6B870400B369AB /* CastError.swift */; }; 291F52B91F6B880F00B369AB /* EtherKeystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 291F52B81F6B880F00B369AB /* EtherKeystore.swift */; }; 291F9EA020FF3C6B00D5266A /* DeveloperViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 291F9E9F20FF3C6B00D5266A /* DeveloperViewController.swift */; }; + 291F9EA3211408F600D5266A /* PreviewTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 291F9EA2211408F600D5266A /* PreviewTransaction.swift */; }; 2923D9B11FDA49D8000CF3F8 /* Initializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2923D9B01FDA49D8000CF3F8 /* Initializer.swift */; }; 2923D9B31FDA49F8000CF3F8 /* SkipBackupFilesInitializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2923D9B21FDA49F8000CF3F8 /* SkipBackupFilesInitializer.swift */; }; 2923D9B51FDA4E07000CF3F8 /* PasswordGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2923D9B41FDA4E07000CF3F8 /* PasswordGenerator.swift */; }; @@ -249,6 +250,7 @@ 61FC5ECF1FCFBAE500CCB12A /* EtherNumberFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61FC5ECE1FCFBAE500CCB12A /* EtherNumberFormatter.swift */; }; 61FC5ED11FCFBDEB00CCB12A /* EtherNumberFormatterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61FC5ED01FCFBDEB00CCB12A /* EtherNumberFormatterTests.swift */; }; 664D11A12007D59F0041A0B0 /* EstimateGasRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 664D11A02007D59F0041A0B0 /* EstimateGasRequest.swift */; }; + 71A433702113860900985ADC /* ConfirmPaymentDetailsViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71A4336F2113860900985ADC /* ConfirmPaymentDetailsViewModelTests.swift */; }; 7301BA9220A3117000E1AFE5 /* AutoLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7301BA9120A3117000E1AFE5 /* AutoLock.swift */; }; 7301BA9620AB1E5600E1AFE5 /* CookiesStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7301BA9520AB1E5600E1AFE5 /* CookiesStore.swift */; }; 7302405C204C65DF00B327DF /* NonFungibleTokenCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7302405B204C65DF00B327DF /* NonFungibleTokenCategory.swift */; }; @@ -522,6 +524,7 @@ 291F52B61F6B870400B369AB /* CastError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CastError.swift; sourceTree = ""; }; 291F52B81F6B880F00B369AB /* EtherKeystore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EtherKeystore.swift; sourceTree = ""; }; 291F9E9F20FF3C6B00D5266A /* DeveloperViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeveloperViewController.swift; sourceTree = ""; }; + 291F9EA2211408F600D5266A /* PreviewTransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreviewTransaction.swift; sourceTree = ""; }; 2923D9B01FDA49D8000CF3F8 /* Initializer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Initializer.swift; sourceTree = ""; }; 2923D9B21FDA49F8000CF3F8 /* SkipBackupFilesInitializer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SkipBackupFilesInitializer.swift; sourceTree = ""; }; 2923D9B41FDA4E07000CF3F8 /* PasswordGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasswordGenerator.swift; sourceTree = ""; }; @@ -742,6 +745,7 @@ 61FC5ED01FCFBDEB00CCB12A /* EtherNumberFormatterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EtherNumberFormatterTests.swift; sourceTree = ""; }; 646C8C822C986358D7388602 /* Pods_Trust.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Trust.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 664D11A02007D59F0041A0B0 /* EstimateGasRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EstimateGasRequest.swift; sourceTree = ""; }; + 71A4336F2113860900985ADC /* ConfirmPaymentDetailsViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfirmPaymentDetailsViewModelTests.swift; sourceTree = ""; }; 7301BA9120A3117000E1AFE5 /* AutoLock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoLock.swift; sourceTree = ""; }; 7301BA9520AB1E5600E1AFE5 /* CookiesStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CookiesStore.swift; sourceTree = ""; }; 7302405B204C65DF00B327DF /* NonFungibleTokenCategory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NonFungibleTokenCategory.swift; sourceTree = ""; }; @@ -1606,6 +1610,7 @@ children = ( 299B5E371FCBCDF70051361C /* RequestViewModelTests.swift */, 771A8521203588C900528D28 /* ConfirmPaymentViewModelTests.swift */, + 71A4336F2113860900985ADC /* ConfirmPaymentDetailsViewModelTests.swift */, ); path = ViewModels; sourceTree = ""; @@ -1967,6 +1972,7 @@ 77EAD89620EAF1FD00D14AA2 /* WalletObject.swift */, 779141DE21063DCE007E8E16 /* RPCServer.swift */, 733AFC812109093900C0AE35 /* GasViewModel.swift */, + 291F9EA2211408F600D5266A /* PreviewTransaction.swift */, ); path = Factories; sourceTree = ""; @@ -3253,6 +3259,7 @@ 2912CD101F6A830700C6CBE3 /* TrustTests.swift in Sources */, 29FF130D1F7626E800AFD326 /* FakeNavigationController.swift in Sources */, 299573A41FA27A15006F17FD /* TestKeyStore.swift in Sources */, + 71A433702113860900985ADC /* ConfirmPaymentDetailsViewModelTests.swift in Sources */, CCA4FE3A1FD42B4100749AE4 /* FakeJailbreakChecker.swift in Sources */, 4E9A9D0820B2C52500180054 /* CoinTicker.swift in Sources */, 29F114F81FA8165200114A29 /* SendCoordinatorTests.swift in Sources */, @@ -3281,6 +3288,7 @@ 29FF13011F75EAD900AFD326 /* FakeKeystore.swift in Sources */, 732E0F522022754600B39C1F /* FakeLockProtocol.swift in Sources */, 2961BD091FB14B6D00C4B840 /* Config.swift in Sources */, + 291F9EA3211408F600D5266A /* PreviewTransaction.swift in Sources */, 290B2B6E1F92C3980053C83E /* UserDefaults.swift in Sources */, 77872D2D202514AD0032D687 /* EnterPasswordCoordinatorTests.swift in Sources */, 771A8485203242B400528D28 /* InCoordinatorViewModelTests.swift in Sources */, diff --git a/Trust/Transfer/ViewControllers/ConfirmPaymentViewController.swift b/Trust/Transfer/ViewControllers/ConfirmPaymentViewController.swift index 0c7500241e..53a90ba6ba 100644 --- a/Trust/Transfer/ViewControllers/ConfirmPaymentViewController.swift +++ b/Trust/Transfer/ViewControllers/ConfirmPaymentViewController.swift @@ -130,7 +130,7 @@ class ConfirmPaymentViewController: UIViewController { .spacer(height: TransactionAppearance.spacing), TransactionAppearance.item( title: detailsViewModel.paymentFromTitle, - subTitle: configurator.account.address.description + subTitle: detailsViewModel.currentWalletDescriptionString ), .spacer(height: TransactionAppearance.spacing), TransactionAppearance.divider(color: Colors.lightGray, alpha: 0.3), diff --git a/Trust/Transfer/ViewModels/ConfirmPaymentDetailsViewModel.swift b/Trust/Transfer/ViewModels/ConfirmPaymentDetailsViewModel.swift index b1034a4d0f..805773b4ba 100644 --- a/Trust/Transfer/ViewModels/ConfirmPaymentDetailsViewModel.swift +++ b/Trust/Transfer/ViewModels/ConfirmPaymentDetailsViewModel.swift @@ -53,8 +53,13 @@ struct ConfirmPaymentDetailsViewModel { return transaction.gasLimit } + var currentWalletDescriptionString: String { + let address = session.account.address.description + return session.account.info.name + " " + ("(\(address.prefix(10))...\(address.suffix(8)))") + } + var paymentFromTitle: String { - return NSLocalizedString("transaction.sender.label.title", value: "Sender", comment: "") + return R.string.localizable.transactionFromLabelTitle() } var requesterTitle: String { diff --git a/TrustTests/Factories/PreviewTransaction.swift b/TrustTests/Factories/PreviewTransaction.swift new file mode 100644 index 0000000000..e09989b7d3 --- /dev/null +++ b/TrustTests/Factories/PreviewTransaction.swift @@ -0,0 +1,24 @@ +// Copyright DApps Platform Inc. All rights reserved. + +import Foundation +import BigInt +@testable import Trust +import TrustCore + +extension PreviewTransaction { + static func make( + address: Address = EthereumAddress.zero + ) -> PreviewTransaction { + return PreviewTransaction( + value: BigInt(), + account: .make(), + address: EthereumAddress.zero, + contract: EthereumAddress.zero, + nonce: BigInt(), + data: Data(), + gasPrice: BigInt(), + gasLimit: BigInt(), + transfer: Transfer.init(server: .make(), type: .token(.make())) + ) + } +} diff --git a/TrustTests/Factories/WalletSession.swift b/TrustTests/Factories/WalletSession.swift index 420654ca1e..41c3e3efbc 100644 --- a/TrustTests/Factories/WalletSession.swift +++ b/TrustTests/Factories/WalletSession.swift @@ -10,8 +10,8 @@ extension WalletSession { static func make( account: Trust.WalletInfo = .make(), config: Config = .make(), - realm: Realm, - sharedRealm: Realm + realm: Realm = .make(), + sharedRealm: Realm = .make() ) -> WalletSession { return WalletSession( account: account, diff --git a/TrustTests/Transfer/ViewModels/ConfirmPaymentDetailsViewModelTests.swift b/TrustTests/Transfer/ViewModels/ConfirmPaymentDetailsViewModelTests.swift new file mode 100644 index 0000000000..c112217338 --- /dev/null +++ b/TrustTests/Transfer/ViewModels/ConfirmPaymentDetailsViewModelTests.swift @@ -0,0 +1,26 @@ +// Copyright DApps Platform Inc. All rights reserved. + +import XCTest +import Realm +import RealmSwift +import BigInt +@testable import Trust +import TrustCore + +class ConfirmPaymentDetailsViewModelTests: XCTestCase { + + func testActionButtonTitleOnSignAndSend() { + + let transaction: PreviewTransaction = .make(address: EthereumAddress.zero) + let session: WalletSession = .make() + let viewModel = ConfirmPaymentDetailsViewModel( + transaction: transaction, + session: session, + server: .make() + ) + let address = session.account.address.description + let description = session.account.info.name + " " + "(\(address.prefix(10))...\(address.suffix(8)))" + + XCTAssertEqual(description, viewModel.currentWalletDescriptionString) + } +}