update unit test for disappearing messages

pull/941/head
Ryan Zhao 2 years ago
parent c4e6f3fe47
commit c9d7565ebe

@ -77,7 +77,7 @@ class ThreadDisappearingMessagesViewModelSpec: QuickSpec {
expect(viewModel.settingsData.count) expect(viewModel.settingsData.count)
.to(equal(1)) .to(equal(1))
expect(viewModel.settingsData.first?.elements.count) expect(viewModel.settingsData.first?.elements.count)
.to(equal(12)) .to(equal(3))
} }
it("has the correct default state") { it("has the correct default state") {
@ -95,22 +95,8 @@ class ThreadDisappearingMessagesViewModelSpec: QuickSpec {
) )
) )
) )
expect(viewModel.settingsData.count)
let title: String = (DisappearingMessagesConfiguration.validDurationsSeconds.last? .to(equal(1))
.formatted(format: .long))
.defaulting(to: "")
expect(viewModel.settingsData.first?.elements.last)
.to(
equal(
SessionCell.Info(
id: ThreadDisappearingMessagesViewModel.Item(title: title),
title: title,
rightAccessory: .radio(
isSelected: { false }
)
)
)
)
} }
it("starts with the correct item active if not default") { it("starts with the correct item active if not default") {
@ -118,7 +104,8 @@ class ThreadDisappearingMessagesViewModelSpec: QuickSpec {
.defaultWith("TestId") .defaultWith("TestId")
.with( .with(
isEnabled: true, isEnabled: true,
durationSeconds: DisappearingMessagesConfiguration.validDurationsSeconds.last durationSeconds: DisappearingMessagesConfiguration.validDurationsSeconds(.disappearAfterSend).last,
type: .disappearAfterSend
) )
mockStorage.write { db in mockStorage.write { db in
_ = try config.saved(db) _ = try config.saved(db)
@ -154,10 +141,29 @@ class ThreadDisappearingMessagesViewModelSpec: QuickSpec {
) )
) )
let title: String = (DisappearingMessagesConfiguration.validDurationsSeconds.last? expect(viewModel.settingsData.first?.elements.last)
.to(
equal(
SessionCell.Info(
id: ThreadDisappearingMessagesViewModel.Item(
title: "DISAPPERING_MESSAGES_TYPE_AFTER_SEND_TITLE".localized()
),
title: "DISAPPERING_MESSAGES_TYPE_AFTER_SEND_TITLE".localized(),
subtitle: "DISAPPERING_MESSAGES_TYPE_AFTER_SEND_DESCRIPTION".localized(),
rightAccessory: .radio(
isSelected: { true }
)
)
)
)
expect(viewModel.settingsData.count)
.to(equal(2))
let title: String = (DisappearingMessagesConfiguration.validDurationsSeconds(.disappearAfterSend).last?
.formatted(format: .long)) .formatted(format: .long))
.defaulting(to: "") .defaulting(to: "")
expect(viewModel.settingsData.first?.elements.last) expect(viewModel.settingsData.last?.elements.last)
.to( .to(
equal( equal(
SessionCell.Info( SessionCell.Info(
@ -169,48 +175,54 @@ class ThreadDisappearingMessagesViewModelSpec: QuickSpec {
) )
) )
) )
} }
it("has no right bar button") { it("has no footer button") {
var items: [ParentType.NavItem]? var footerButtonInfo: SessionButton.Info?
cancellables.append( cancellables.append(
viewModel.rightNavItems viewModel.footerButtonInfo
.receiveOnMain(immediately: true) .receiveOnMain(immediately: true)
.sink( .sink(
receiveCompletion: { _ in }, receiveCompletion: { _ in },
receiveValue: { navItems in items = navItems } receiveValue: { info in footerButtonInfo = info }
) )
) )
expect(items).to(equal([])) expect(footerButtonInfo).to(equal(nil))
} }
context("when changed from the previous setting") { context("when changed from the previous setting") {
var items: [ParentType.NavItem]? var footerButtonInfo: SessionButton.Info?
beforeEach { beforeEach {
cancellables.append( cancellables.append(
viewModel.rightNavItems viewModel.footerButtonInfo
.receiveOnMain(immediately: true) .receiveOnMain(immediately: true)
.sink( .sink(
receiveCompletion: { _ in }, receiveCompletion: { _ in },
receiveValue: { navItems in items = navItems } receiveValue: { info in footerButtonInfo = info }
) )
) )
viewModel.settingsData.first?.elements.last?.onTap?(nil) viewModel.settingsData.first?.elements.last?.onTap?(nil)
} }
it("shows the save button") { it("shows the set button") {
expect(items) expect(footerButtonInfo)
.to(equal([ .to(
ParentType.NavItem( equal(
id: .save, SessionButton.Info(
systemItem: .save, style: .bordered,
accessibilityIdentifier: "Save button" title: "DISAPPERING_MESSAGES_SAVE_TITLE".localized(),
isEnabled: true,
accessibilityIdentifier: "Set button",
minWidth: 110,
onTap: {}
)
) )
])) )
} }
context("and saving") { context("and saving") {
@ -226,7 +238,7 @@ class ThreadDisappearingMessagesViewModelSpec: QuickSpec {
) )
) )
items?.first?.action?() footerButtonInfo?.onTap()
expect(didDismissScreen) expect(didDismissScreen)
.toEventually( .toEventually(
@ -236,7 +248,7 @@ class ThreadDisappearingMessagesViewModelSpec: QuickSpec {
} }
it("saves the updated config") { it("saves the updated config") {
items?.first?.action?() footerButtonInfo?.onTap()
let updatedConfig: DisappearingMessagesConfiguration? = mockStorage.read { db in let updatedConfig: DisappearingMessagesConfiguration? = mockStorage.read { db in
try DisappearingMessagesConfiguration.fetchOne(db, id: "TestId") try DisappearingMessagesConfiguration.fetchOne(db, id: "TestId")
@ -249,7 +261,12 @@ class ThreadDisappearingMessagesViewModelSpec: QuickSpec {
) )
expect(updatedConfig?.durationSeconds) expect(updatedConfig?.durationSeconds)
.toEventually( .toEventually(
equal(DisappearingMessagesConfiguration.validDurationsSeconds.last ?? -1), equal(DisappearingMessagesConfiguration.validDurationsSeconds(.disappearAfterSend).last ?? -1),
timeout: .milliseconds(100)
)
expect(updatedConfig?.type)
.toEventually(
equal(.disappearAfterSend),
timeout: .milliseconds(100) timeout: .milliseconds(100)
) )
} }

@ -17,7 +17,7 @@ public final class SessionButton: UIButton {
case large case large
} }
public struct Info { public struct Info: Equatable {
public let style: Style public let style: Style
public let title: String public let title: String
public let isEnabled: Bool public let isEnabled: Bool
@ -43,6 +43,17 @@ public final class SessionButton: UIButton {
self.onTap = onTap self.onTap = onTap
self.minWidth = minWidth self.minWidth = minWidth
} }
public static func == (lhs: SessionButton.Info, rhs: SessionButton.Info) -> Bool {
return (
lhs.style == rhs.style &&
lhs.title == rhs.title &&
lhs.isEnabled == rhs.isEnabled &&
lhs.accessibilityIdentifier == rhs.accessibilityIdentifier &&
lhs.accessibilityLabel == rhs.accessibilityLabel &&
lhs.minWidth == rhs.minWidth
)
}
} }
private let style: Style private let style: Style

Loading…
Cancel
Save