mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-28 23:32:41 +00:00
Unit tests
This commit is contained in:
parent
d5a3af2d8a
commit
45f26dfca6
1 changed files with 160 additions and 17 deletions
|
@ -55,9 +55,13 @@ class UserOtherSessionsViewModelTests: XCTestCase {
|
|||
let sut = createSUT(sessionInfos: sessionInfos, filter: .inactive)
|
||||
|
||||
let expectedItems = sessionInfos.filter { !$0.isActive }.asViewData()
|
||||
let expectedState = UserOtherSessionsViewState(bindings: UserOtherSessionsBindings(filter: .inactive),
|
||||
let bindings = UserOtherSessionsBindings(filter: .inactive, isEditModeEnabled: false)
|
||||
let expectedState = UserOtherSessionsViewState(bindings: bindings,
|
||||
title: "Title",
|
||||
sections: [.sessionItems(header: inactiveSectionHeader, items: expectedItems)])
|
||||
items: expectedItems,
|
||||
header: inactiveSectionHeader,
|
||||
emptyItemsTitle: VectorL10n.userOtherSessionNoInactiveSessions,
|
||||
allItemsSelected: false)
|
||||
XCTAssertEqual(sut.state, expectedState)
|
||||
}
|
||||
|
||||
|
@ -67,9 +71,13 @@ class UserOtherSessionsViewModelTests: XCTestCase {
|
|||
let sut = createSUT(sessionInfos: sessionInfos, filter: .all)
|
||||
|
||||
let expectedItems = sessionInfos.filter { !$0.isCurrent }.asViewData()
|
||||
let expectedState = UserOtherSessionsViewState(bindings: UserOtherSessionsBindings(filter: .all),
|
||||
let bindings = UserOtherSessionsBindings(filter: .all, isEditModeEnabled: false)
|
||||
let expectedState = UserOtherSessionsViewState(bindings: bindings,
|
||||
title: "Title",
|
||||
sections: [.sessionItems(header: allSectionHeader, items: expectedItems)])
|
||||
items: expectedItems,
|
||||
header: allSectionHeader,
|
||||
emptyItemsTitle: "",
|
||||
allItemsSelected: false)
|
||||
XCTAssertEqual(sut.state, expectedState)
|
||||
}
|
||||
|
||||
|
@ -79,9 +87,13 @@ class UserOtherSessionsViewModelTests: XCTestCase {
|
|||
let sut = createSUT(sessionInfos: sessionInfos, filter: .unverified)
|
||||
|
||||
let expectedItems = sessionInfos.filter { !$0.isCurrent }.asViewData()
|
||||
let expectedState = UserOtherSessionsViewState(bindings: UserOtherSessionsBindings(filter: .unverified),
|
||||
let bindings = UserOtherSessionsBindings(filter: .unverified, isEditModeEnabled: false)
|
||||
let expectedState = UserOtherSessionsViewState(bindings: bindings,
|
||||
title: "Title",
|
||||
sections: [.sessionItems(header: unverifiedSectionHeader, items: expectedItems)])
|
||||
items: expectedItems,
|
||||
header: unverifiedSectionHeader,
|
||||
emptyItemsTitle: VectorL10n.userOtherSessionNoUnverifiedSessions,
|
||||
allItemsSelected: false)
|
||||
XCTAssertEqual(sut.state, expectedState)
|
||||
}
|
||||
|
||||
|
@ -91,9 +103,13 @@ class UserOtherSessionsViewModelTests: XCTestCase {
|
|||
let sut = createSUT(sessionInfos: sessionInfos, filter: .verified)
|
||||
|
||||
let expectedItems = sessionInfos.filter { !$0.isCurrent }.asViewData()
|
||||
let expectedState = UserOtherSessionsViewState(bindings: UserOtherSessionsBindings(filter: .verified),
|
||||
let bindings = UserOtherSessionsBindings(filter: .verified, isEditModeEnabled: false)
|
||||
let expectedState = UserOtherSessionsViewState(bindings: bindings,
|
||||
title: "Title",
|
||||
sections: [.sessionItems(header: verifiedSectionHeader, items: expectedItems)])
|
||||
items: expectedItems,
|
||||
header: verifiedSectionHeader,
|
||||
emptyItemsTitle: VectorL10n.userOtherSessionNoVerifiedSessions,
|
||||
allItemsSelected: false)
|
||||
XCTAssertEqual(sut.state, expectedState)
|
||||
}
|
||||
|
||||
|
@ -101,10 +117,13 @@ class UserOtherSessionsViewModelTests: XCTestCase {
|
|||
let sessionInfos = [createUserSessionInfo(sessionId: "session 1", isVerified: false),
|
||||
createUserSessionInfo(sessionId: "session 2", isVerified: false)]
|
||||
let sut = createSUT(sessionInfos: sessionInfos, filter: .verified)
|
||||
|
||||
let expectedState = UserOtherSessionsViewState(bindings: UserOtherSessionsBindings(filter: .verified),
|
||||
let bindings = UserOtherSessionsBindings(filter: .verified, isEditModeEnabled: false)
|
||||
let expectedState = UserOtherSessionsViewState(bindings: bindings,
|
||||
title: "Title",
|
||||
sections: [.emptySessionItems(header: verifiedSectionHeader, title: VectorL10n.userOtherSessionNoVerifiedSessions)])
|
||||
items: [],
|
||||
header: verifiedSectionHeader,
|
||||
emptyItemsTitle: VectorL10n.userOtherSessionNoVerifiedSessions,
|
||||
allItemsSelected: false)
|
||||
XCTAssertEqual(sut.state, expectedState)
|
||||
}
|
||||
|
||||
|
@ -112,10 +131,13 @@ class UserOtherSessionsViewModelTests: XCTestCase {
|
|||
let sessionInfos = [createUserSessionInfo(sessionId: "session 1", isVerified: true),
|
||||
createUserSessionInfo(sessionId: "session 2", isVerified: true)]
|
||||
let sut = createSUT(sessionInfos: sessionInfos, filter: .unverified)
|
||||
|
||||
let expectedState = UserOtherSessionsViewState(bindings: UserOtherSessionsBindings(filter: .unverified),
|
||||
let bindings = UserOtherSessionsBindings(filter: .unverified, isEditModeEnabled: false)
|
||||
let expectedState = UserOtherSessionsViewState(bindings: bindings,
|
||||
title: "Title",
|
||||
sections: [.emptySessionItems(header: unverifiedSectionHeader, title: VectorL10n.userOtherSessionNoUnverifiedSessions)])
|
||||
items: [],
|
||||
header: unverifiedSectionHeader,
|
||||
emptyItemsTitle: VectorL10n.userOtherSessionNoUnverifiedSessions,
|
||||
allItemsSelected: false)
|
||||
XCTAssertEqual(sut.state, expectedState)
|
||||
}
|
||||
|
||||
|
@ -123,13 +145,134 @@ class UserOtherSessionsViewModelTests: XCTestCase {
|
|||
let sessionInfos = [createUserSessionInfo(sessionId: "session 1", isActive: true),
|
||||
createUserSessionInfo(sessionId: "session 2", isActive: true)]
|
||||
let sut = createSUT(sessionInfos: sessionInfos, filter: .inactive)
|
||||
|
||||
let expectedState = UserOtherSessionsViewState(bindings: UserOtherSessionsBindings(filter: .inactive),
|
||||
let bindings = UserOtherSessionsBindings(filter: .inactive, isEditModeEnabled: false)
|
||||
let expectedState = UserOtherSessionsViewState(bindings: bindings,
|
||||
title: "Title",
|
||||
sections: [.emptySessionItems(header: inactiveSectionHeader, title: VectorL10n.userOtherSessionNoInactiveSessions)])
|
||||
items: [],
|
||||
header: inactiveSectionHeader,
|
||||
emptyItemsTitle: VectorL10n.userOtherSessionNoInactiveSessions,
|
||||
allItemsSelected: false)
|
||||
XCTAssertEqual(sut.state, expectedState)
|
||||
}
|
||||
|
||||
func test_whenEditModeEnabledAndAllItemsSelected_viewStateIsCorrect() {
|
||||
let sessionInfos = [createUserSessionInfo(sessionId: "session 1"),
|
||||
createUserSessionInfo(sessionId: "session 2")]
|
||||
let sut = createSUT(sessionInfos: sessionInfos, filter: .all)
|
||||
toggleEditMode(for: sut, value: true)
|
||||
sut.process(viewAction: .userOtherSessionSelected(sessionId: "session 1"))
|
||||
sut.process(viewAction: .userOtherSessionSelected(sessionId: "session 2"))
|
||||
|
||||
let expectedItems = sessionInfos.map { UserSessionListItemViewDataFactory().create(from: $0, isSelected: true) }
|
||||
let bindings = UserOtherSessionsBindings(filter: .all, isEditModeEnabled: true)
|
||||
let expectedState = UserOtherSessionsViewState(bindings: bindings,
|
||||
title: VectorL10n.userOtherSessionSelectedCount("2"),
|
||||
items: expectedItems,
|
||||
header: allSectionHeader,
|
||||
emptyItemsTitle: "",
|
||||
allItemsSelected: true)
|
||||
XCTAssertEqual(sut.state, expectedState)
|
||||
}
|
||||
|
||||
func test_whenEditModeEnabledAndItemSelectedAndDeselected_viewStateIsCorrect() {
|
||||
let sessionInfos = [createUserSessionInfo(sessionId: "session 1"),
|
||||
createUserSessionInfo(sessionId: "session 2")]
|
||||
let sut = createSUT(sessionInfos: sessionInfos, filter: .all)
|
||||
toggleEditMode(for: sut, value: true)
|
||||
sut.process(viewAction: .userOtherSessionSelected(sessionId: "session 1"))
|
||||
sut.process(viewAction: .userOtherSessionSelected(sessionId: "session 1"))
|
||||
|
||||
let expectedItems = sessionInfos.map { UserSessionListItemViewDataFactory().create(from: $0, isSelected: false) }
|
||||
let bindings = UserOtherSessionsBindings(filter: .all, isEditModeEnabled: true)
|
||||
let expectedState = UserOtherSessionsViewState(bindings: bindings,
|
||||
title: VectorL10n.userOtherSessionSelectedCount("0"),
|
||||
items: expectedItems,
|
||||
header: allSectionHeader,
|
||||
emptyItemsTitle: "",
|
||||
allItemsSelected: false)
|
||||
XCTAssertEqual(sut.state, expectedState)
|
||||
}
|
||||
|
||||
func test_whenEditModeEnabledAndNotAllItemsSelected_viewStateIsCorrect() {
|
||||
let sessionInfos = [createUserSessionInfo(sessionId: "session 1"),
|
||||
createUserSessionInfo(sessionId: "session 2")]
|
||||
let sut = createSUT(sessionInfos: sessionInfos, filter: .all)
|
||||
toggleEditMode(for: sut, value: true)
|
||||
sut.process(viewAction: .userOtherSessionSelected(sessionId: "session 2"))
|
||||
|
||||
let expectedItems = sessionInfos.map { UserSessionListItemViewDataFactory().create(from: $0, isSelected: $0.id == "session 2") }
|
||||
let bindings = UserOtherSessionsBindings(filter: .all, isEditModeEnabled: true)
|
||||
let expectedState = UserOtherSessionsViewState(bindings: bindings,
|
||||
title: VectorL10n.userOtherSessionSelectedCount("1"),
|
||||
items: expectedItems,
|
||||
header: allSectionHeader,
|
||||
emptyItemsTitle: "",
|
||||
allItemsSelected: false)
|
||||
XCTAssertEqual(sut.state, expectedState)
|
||||
}
|
||||
|
||||
func test_whenEditModeEnabledAndAllItemsSelectedByButton_viewStateIsCorrect() {
|
||||
let sessionInfos = [createUserSessionInfo(sessionId: "session 1"),
|
||||
createUserSessionInfo(sessionId: "session 2")]
|
||||
let sut = createSUT(sessionInfos: sessionInfos, filter: .all)
|
||||
toggleEditMode(for: sut, value: true)
|
||||
sut.process(viewAction: .toggleAllSelection)
|
||||
|
||||
let expectedItems = sessionInfos.map { UserSessionListItemViewDataFactory().create(from: $0, isSelected: true) }
|
||||
let bindings = UserOtherSessionsBindings(filter: .all, isEditModeEnabled: true)
|
||||
let expectedState = UserOtherSessionsViewState(bindings: bindings,
|
||||
title: VectorL10n.userOtherSessionSelectedCount("2"),
|
||||
items: expectedItems,
|
||||
header: allSectionHeader,
|
||||
emptyItemsTitle: "",
|
||||
allItemsSelected: true)
|
||||
XCTAssertEqual(sut.state, expectedState)
|
||||
}
|
||||
|
||||
func test_whenEditModeEnabledAndAllItemsDeselectedByButton_viewStateIsCorrect() {
|
||||
let sessionInfos = [createUserSessionInfo(sessionId: "session 1"),
|
||||
createUserSessionInfo(sessionId: "session 2")]
|
||||
let sut = createSUT(sessionInfos: sessionInfos, filter: .all)
|
||||
toggleEditMode(for: sut, value: true)
|
||||
sut.process(viewAction: .toggleAllSelection)
|
||||
sut.process(viewAction: .toggleAllSelection)
|
||||
let expectedItems = sessionInfos.map { UserSessionListItemViewDataFactory().create(from: $0, isSelected: false) }
|
||||
let bindings = UserOtherSessionsBindings(filter: .all, isEditModeEnabled: true)
|
||||
let expectedState = UserOtherSessionsViewState(bindings: bindings,
|
||||
title: VectorL10n.userOtherSessionSelectedCount("0"),
|
||||
items: expectedItems,
|
||||
header: allSectionHeader,
|
||||
emptyItemsTitle: "",
|
||||
allItemsSelected: false)
|
||||
XCTAssertEqual(sut.state, expectedState)
|
||||
}
|
||||
|
||||
func test_whenEditModeEnabledDisabledAndEnabled_viewStateIsCorrect() {
|
||||
let sessionInfos = [createUserSessionInfo(sessionId: "session 1"),
|
||||
createUserSessionInfo(sessionId: "session 2")]
|
||||
let sut = createSUT(sessionInfos: sessionInfos, filter: .all)
|
||||
toggleEditMode(for: sut, value: true)
|
||||
sut.process(viewAction: .editModeWasToggled)
|
||||
sut.process(viewAction: .userOtherSessionSelected(sessionId: "session 1"))
|
||||
sut.process(viewAction: .userOtherSessionSelected(sessionId: "session 2"))
|
||||
toggleEditMode(for: sut, value: false)
|
||||
toggleEditMode(for: sut, value: true)
|
||||
let expectedItems = sessionInfos.map { UserSessionListItemViewDataFactory().create(from: $0, isSelected: false) }
|
||||
let bindings = UserOtherSessionsBindings(filter: .all, isEditModeEnabled: true)
|
||||
let expectedState = UserOtherSessionsViewState(bindings: bindings,
|
||||
title: VectorL10n.userOtherSessionSelectedCount("0"),
|
||||
items: expectedItems,
|
||||
header: allSectionHeader,
|
||||
emptyItemsTitle: "",
|
||||
allItemsSelected: false)
|
||||
XCTAssertEqual(sut.state, expectedState)
|
||||
}
|
||||
|
||||
private func toggleEditMode(for model: UserOtherSessionsViewModel, value: Bool) {
|
||||
model.context.isEditModeEnabled = value
|
||||
model.process(viewAction: .editModeWasToggled)
|
||||
}
|
||||
|
||||
private func createSUT(sessionInfos: [UserSessionInfo],
|
||||
filter: UserOtherSessionsFilter,
|
||||
title: String = "Title") -> UserOtherSessionsViewModel {
|
||||
|
|
Loading…
Reference in a new issue