2021-10-12 04:25:34 -07:00
|
|
|
//
|
|
|
|
// OnboardingStoreTests.swift
|
|
|
|
// OnboardingStoreTests
|
|
|
|
//
|
|
|
|
// Created by Adam Stener on 10/10/21.
|
|
|
|
//
|
|
|
|
|
|
|
|
import XCTest
|
|
|
|
import ComposableArchitecture
|
|
|
|
@testable import secant_testnet
|
|
|
|
|
|
|
|
class OnboardingStoreTests: XCTestCase {
|
|
|
|
func testIncrementingOnboarding() {
|
|
|
|
let store = TestStore(
|
2022-05-13 09:29:57 -07:00
|
|
|
initialState: OnboardingFlowState(
|
2022-03-01 01:50:57 -08:00
|
|
|
importWalletState: .placeholder
|
|
|
|
),
|
2022-05-13 09:29:57 -07:00
|
|
|
reducer: OnboardingFlowReducer.default,
|
2022-04-11 05:31:55 -07:00
|
|
|
environment: .demo
|
2021-10-12 04:25:34 -07:00
|
|
|
)
|
|
|
|
|
2021-11-04 05:41:39 -07:00
|
|
|
store.send(.next) {
|
2021-10-12 04:25:34 -07:00
|
|
|
$0.index += 1
|
|
|
|
|
2021-11-09 03:59:03 -08:00
|
|
|
XCTAssertFalse($0.isFinalStep)
|
|
|
|
XCTAssertFalse($0.isInitialStep)
|
2021-10-15 04:15:12 -07:00
|
|
|
XCTAssertEqual($0.currentStep, $0.steps[1])
|
2021-11-05 05:26:20 -07:00
|
|
|
XCTAssertEqual($0.offset, -20.0)
|
2021-11-04 05:41:39 -07:00
|
|
|
XCTAssertEqual($0.progress, 50)
|
2021-10-12 04:25:34 -07:00
|
|
|
}
|
|
|
|
|
2021-11-04 05:41:39 -07:00
|
|
|
store.send(.next) {
|
2021-10-12 04:25:34 -07:00
|
|
|
$0.index += 1
|
|
|
|
|
2021-11-09 03:59:03 -08:00
|
|
|
XCTAssertFalse($0.isFinalStep)
|
|
|
|
XCTAssertFalse($0.isInitialStep)
|
2021-10-15 04:15:12 -07:00
|
|
|
XCTAssertEqual($0.currentStep, $0.steps[2])
|
2021-11-05 05:26:20 -07:00
|
|
|
XCTAssertEqual($0.offset, -40.0)
|
2021-11-04 05:41:39 -07:00
|
|
|
XCTAssertEqual($0.progress, 75)
|
|
|
|
}
|
|
|
|
|
|
|
|
store.send(.next) {
|
|
|
|
$0.index += 1
|
|
|
|
|
2021-11-09 03:59:03 -08:00
|
|
|
XCTAssertTrue($0.isFinalStep)
|
|
|
|
XCTAssertFalse($0.isInitialStep)
|
2021-11-04 05:41:39 -07:00
|
|
|
XCTAssertEqual($0.currentStep, $0.steps[3])
|
2021-11-05 05:26:20 -07:00
|
|
|
XCTAssertEqual($0.offset, -60.0)
|
|
|
|
XCTAssertEqual($0.progress, 100)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func testIncrementingPastTotalStepsDoesNothing() {
|
|
|
|
let store = TestStore(
|
2022-05-13 09:29:57 -07:00
|
|
|
initialState: OnboardingFlowState(
|
2022-03-01 01:50:57 -08:00
|
|
|
index: 3,
|
|
|
|
importWalletState: .placeholder
|
|
|
|
),
|
2022-05-13 09:29:57 -07:00
|
|
|
reducer: OnboardingFlowReducer.default,
|
2022-04-11 05:31:55 -07:00
|
|
|
environment: .demo
|
2021-11-05 05:26:20 -07:00
|
|
|
)
|
|
|
|
|
2022-05-23 08:36:29 -07:00
|
|
|
store.send(.next)
|
|
|
|
store.send(.next)
|
2021-10-12 04:25:34 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
func testDecrementingOnboarding() {
|
|
|
|
let store = TestStore(
|
2022-05-13 09:29:57 -07:00
|
|
|
initialState: OnboardingFlowState(
|
2022-03-01 01:50:57 -08:00
|
|
|
index: 2,
|
|
|
|
importWalletState: .placeholder
|
|
|
|
),
|
2022-05-13 09:29:57 -07:00
|
|
|
reducer: OnboardingFlowReducer.default,
|
2022-04-11 05:31:55 -07:00
|
|
|
environment: .demo
|
2021-10-12 04:25:34 -07:00
|
|
|
)
|
|
|
|
|
2021-11-04 05:41:39 -07:00
|
|
|
store.send(.back) {
|
2021-10-12 04:25:34 -07:00
|
|
|
$0.index -= 1
|
|
|
|
|
2021-11-09 03:59:03 -08:00
|
|
|
XCTAssertFalse($0.isFinalStep)
|
|
|
|
XCTAssertFalse($0.isInitialStep)
|
2021-10-15 04:15:12 -07:00
|
|
|
XCTAssertEqual($0.currentStep, $0.steps[1])
|
2021-11-05 05:26:20 -07:00
|
|
|
XCTAssertEqual($0.offset, -20.0)
|
2021-11-04 05:41:39 -07:00
|
|
|
XCTAssertEqual($0.progress, 50)
|
2021-10-12 04:25:34 -07:00
|
|
|
}
|
|
|
|
|
2021-11-04 05:41:39 -07:00
|
|
|
store.send(.back) {
|
2021-10-12 04:25:34 -07:00
|
|
|
$0.index -= 1
|
|
|
|
|
2021-11-09 03:59:03 -08:00
|
|
|
XCTAssertFalse($0.isFinalStep)
|
|
|
|
XCTAssertTrue($0.isInitialStep)
|
2021-10-15 04:15:12 -07:00
|
|
|
XCTAssertEqual($0.currentStep, $0.steps[0])
|
2021-11-05 05:26:20 -07:00
|
|
|
XCTAssertEqual($0.offset, 0.0)
|
|
|
|
XCTAssertEqual($0.progress, 25)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func testDecrementingPastFirstStepDoesNothing() {
|
|
|
|
let store = TestStore(
|
2022-05-13 09:29:57 -07:00
|
|
|
initialState: OnboardingFlowState(
|
2022-03-01 01:50:57 -08:00
|
|
|
importWalletState: .placeholder
|
|
|
|
),
|
2022-05-13 09:29:57 -07:00
|
|
|
reducer: OnboardingFlowReducer.default,
|
2022-04-11 05:31:55 -07:00
|
|
|
environment: .demo
|
2021-11-05 05:26:20 -07:00
|
|
|
)
|
|
|
|
|
2022-05-23 08:36:29 -07:00
|
|
|
store.send(.back)
|
|
|
|
store.send(.back)
|
2021-11-04 05:41:39 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
func testSkipOnboarding() {
|
|
|
|
let initialIndex = 1
|
2021-11-05 05:26:20 -07:00
|
|
|
|
2021-11-04 05:41:39 -07:00
|
|
|
let store = TestStore(
|
2022-05-13 09:29:57 -07:00
|
|
|
initialState: OnboardingFlowState(
|
2022-03-01 01:50:57 -08:00
|
|
|
index: initialIndex,
|
|
|
|
importWalletState: .placeholder
|
|
|
|
),
|
2022-05-13 09:29:57 -07:00
|
|
|
reducer: OnboardingFlowReducer.default,
|
2022-04-11 05:31:55 -07:00
|
|
|
environment: .demo
|
2021-11-04 05:41:39 -07:00
|
|
|
)
|
|
|
|
|
|
|
|
store.send(.skip) {
|
|
|
|
$0.index = $0.steps.count - 1
|
|
|
|
$0.skippedAtindex = initialIndex
|
|
|
|
|
2021-11-09 03:59:03 -08:00
|
|
|
XCTAssertTrue($0.isFinalStep)
|
|
|
|
XCTAssertFalse($0.isInitialStep)
|
2021-11-04 05:41:39 -07:00
|
|
|
XCTAssertEqual($0.currentStep, $0.steps[3])
|
2021-11-05 05:26:20 -07:00
|
|
|
XCTAssertEqual($0.offset, -60.0)
|
2021-11-04 05:41:39 -07:00
|
|
|
XCTAssertEqual($0.progress, 100)
|
|
|
|
}
|
|
|
|
|
|
|
|
store.send(.back) {
|
|
|
|
$0.skippedAtindex = nil
|
|
|
|
$0.index = initialIndex
|
|
|
|
|
2021-11-09 03:59:03 -08:00
|
|
|
XCTAssertFalse($0.isFinalStep)
|
|
|
|
XCTAssertFalse($0.isInitialStep)
|
2021-11-04 05:41:39 -07:00
|
|
|
XCTAssertEqual($0.currentStep, $0.steps[1])
|
2021-11-05 05:26:20 -07:00
|
|
|
XCTAssertEqual($0.offset, -20.0)
|
2021-11-04 05:41:39 -07:00
|
|
|
XCTAssertEqual($0.progress, 50)
|
2021-10-12 04:25:34 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|