secant-ios-wallet/secantTests/SnapshotTests/HomeSnapshotTests/HomeCircularProgressSnapsho...

154 lines
5.4 KiB
Swift

//
// HomeCircularProgressSnapshotTests.swift
// secantTests
//
// Created by Lukáš Korba on 07.07.2022.
//
import XCTest
import ComposableArchitecture
@testable import secant_testnet
@testable import ZcashLightClientKit
class HomeCircularProgressSnapshotTests: XCTestCase {
func testCircularProgress_DownloadingInnerCircle() throws {
class SnapshotTestWrappedSDKSynchronizer: TestWrappedSDKSynchronizer {
// heights purposely set so we visually see 55% progress
override func statusSnapshot() -> SyncStatusSnapshot {
let blockProgress = BlockProgress(
startHeight: BlockHeight(0),
targetHeight: BlockHeight(100),
progressHeight: BlockHeight(55)
)
return SyncStatusSnapshot.snapshotFor(state: .downloading(blockProgress))
}
}
let balance = WalletBalance(verified: Zatoshi(15_345_000), total: Zatoshi(15_345_000))
let testScheduler = DispatchQueue.test
let testEnvironment = HomeEnvironment(
audioServices: .silent,
derivationTool: .live(),
diskSpaceChecker: .mockEmptyDisk,
feedbackGenerator: .silent,
mnemonic: .mock,
scheduler: testScheduler.eraseToAnyScheduler(),
SDKSynchronizer: SnapshotTestWrappedSDKSynchronizer(),
walletStorage: .throwing,
zcashSDKEnvironment: .testnet
)
let store = HomeStore(
initialState: .init(
balanceBreakdown: .placeholder,
drawerOverlay: .partial,
profileState: .placeholder,
requestState: .placeholder,
scanState: .placeholder,
sendState: .placeholder,
shieldedBalance: balance,
synchronizerStatusSnapshot: .default,
walletEventsState: .emptyPlaceHolder
),
reducer: .default,
environment: testEnvironment
)
addAttachments(HomeView(store: store))
}
func testCircularProgress_ScanningOuterCircle() throws {
class SnapshotTestWrappedSDKSynchronizer: TestWrappedSDKSynchronizer {
override func statusSnapshot() -> SyncStatusSnapshot {
// heights purposely set so we visually see 72% progress
let blockProgress = BlockProgress(
startHeight: BlockHeight(0),
targetHeight: BlockHeight(100),
progressHeight: BlockHeight(72)
)
return SyncStatusSnapshot.snapshotFor(state: .scanning(blockProgress))
}
}
let balance = WalletBalance(verified: 15_345_000, total: 15_345_000)
let testScheduler = DispatchQueue.test
let testEnvironment = HomeEnvironment(
audioServices: .silent,
derivationTool: .live(),
diskSpaceChecker: .mockEmptyDisk,
feedbackGenerator: .silent,
mnemonic: .mock,
scheduler: testScheduler.eraseToAnyScheduler(),
SDKSynchronizer: SnapshotTestWrappedSDKSynchronizer(),
walletStorage: .throwing,
zcashSDKEnvironment: .testnet
)
let store = HomeStore(
initialState: .init(
balanceBreakdown: .placeholder,
drawerOverlay: .partial,
profileState: .placeholder,
requestState: .placeholder,
scanState: .placeholder,
sendState: .placeholder,
shieldedBalance: balance,
synchronizerStatusSnapshot: .default,
walletEventsState: .emptyPlaceHolder
),
reducer: .default,
environment: testEnvironment
)
addAttachments(HomeView(store: store))
}
func testCircularProgress_UpToDateOnlyOuterCircle() throws {
class SnapshotTestWrappedSDKSynchronizer: TestWrappedSDKSynchronizer {
override func statusSnapshot() -> SyncStatusSnapshot {
SyncStatusSnapshot.snapshotFor(state: .synced)
}
}
let balance = WalletBalance(verified: 15_345_000, total: 15_345_000)
let testScheduler = DispatchQueue.test
let testEnvironment = HomeEnvironment(
audioServices: .silent,
derivationTool: .live(),
diskSpaceChecker: .mockEmptyDisk,
feedbackGenerator: .silent,
mnemonic: .mock,
scheduler: testScheduler.eraseToAnyScheduler(),
SDKSynchronizer: SnapshotTestWrappedSDKSynchronizer(),
walletStorage: .throwing,
zcashSDKEnvironment: .testnet
)
let store = HomeStore(
initialState: .init(
balanceBreakdown: .placeholder,
drawerOverlay: .partial,
profileState: .placeholder,
requestState: .placeholder,
scanState: .placeholder,
sendState: .placeholder,
shieldedBalance: balance,
synchronizerStatusSnapshot: .default,
walletEventsState: .emptyPlaceHolder
),
reducer: .default,
environment: testEnvironment
)
addAttachments(HomeView(store: store))
}
}