Skip to content

Commit

Permalink
Fix hide finished reminders
Browse files Browse the repository at this point in the history
  • Loading branch information
pakerwreah committed Sep 24, 2024
1 parent e9a9513 commit 2794736
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 7 deletions.
5 changes: 4 additions & 1 deletion Calendr/Events/EventList/EventListViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,10 @@ class EventListViewModel {
.startWith(())
.map {
events.filter {
$0.isAllDay || $0.type.isReminder || !$0.range(using: dateProvider).isPast
if case .reminder(let completed) = $0.type {
return !completed
}
return $0.isAllDay || !$0.range(using: dateProvider).isPast
}
}
.map { ($0, date, isTodaySelected) }
Expand Down
2 changes: 1 addition & 1 deletion Calendr/Events/EventList/EventViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ class EventViewModel {
if isDeclined {
isFaded = .just(true)
} else if case .reminder(let completed) = type {
isFaded = .just(completed || isTodaySelected && !range.startsToday)
isFaded = .just(isTodaySelected && completed)
} else if event.isAllDay || !range.endsToday {
isFaded = .just(false)
} else {
Expand Down
68 changes: 64 additions & 4 deletions CalendrTests/EventListViewModelTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -331,12 +331,14 @@ class EventListViewModelTests: XCTestCase {
let date = dateProvider.calendar.date(byAdding: .day, value: -1, to: dateProvider.now)!
dateSubject.onNext(date)

settings.togglePastEvents.onNext(false)

eventsSubject.onNext(
[
.make(start: date, end: date + 10, title: "Event 1"),
.make(start: date + 60, end: date + 120, title: "Event 2"),
.make(start: date + 200, title: "Overdue 1", type: .reminder(completed: false)),
.make(start: date + 300, title: "Overdue 2", type: .reminder(completed: false)),
.make(start: date + 200, title: "Overdue", type: .reminder(completed: false)),
.make(start: date + 300, title: "Completed", type: .reminder(completed: true)),
.make(start: date, title: "All day event", isAllDay: true),
.make(start: date, title: "All day overdue", isAllDay: true, type: .reminder(completed: false))
]
Expand All @@ -350,8 +352,66 @@ class EventListViewModelTests: XCTestCase {
.event("Event 1"),
.event("Event 2"),
.interval("1m"),
.event("Overdue 1"),
.event("Overdue 2")
.event("Overdue"),
.event("Completed")
])
}

func testEventList_withCompletedReminders_isToday_shouldShowNormally() {

let date = dateProvider.now

eventsSubject.onNext(
[
.make(start: date, end: date + 10, title: "Event 1"),
.make(start: date + 60, end: date + 120, title: "Event 2"),
.make(start: date + 200, title: "Reminder 1", type: .reminder(completed: true)),
.make(start: date + 300, title: "Reminder 2", type: .reminder(completed: false)),
.make(start: date, title: "All day event", isAllDay: true),
.make(start: date, title: "All day overdue", isAllDay: true, type: .reminder(completed: false))
]
)

XCTAssertEqual(eventListItems, [
.section("All day"),
.event("All day event"),
.event("All day overdue"),
.section("Today"),
.event("Event 1"),
.event("Event 2"),
.interval("1m"),
.event("Reminder 1"),
.event("Reminder 2")
])
}


func testEventList_withCompletedReminders_withHidePastEventsEnabled_isToday_shouldHideCompleted() {

let date = dateProvider.now

settings.togglePastEvents.onNext(false)

eventsSubject.onNext(
[
.make(start: date, end: date + 10, title: "Event 1"),
.make(start: date + 60, end: date + 120, title: "Event 2"),
.make(start: date + 200, title: "Reminder 1", type: .reminder(completed: true)),
.make(start: date + 300, title: "Reminder 2", type: .reminder(completed: false)),
.make(start: date, title: "All day event", isAllDay: true),
.make(start: date, title: "All day overdue", isAllDay: true, type: .reminder(completed: false))
]
)

XCTAssertEqual(eventListItems, [
.section("All day"),
.event("All day event"),
.event("All day overdue"),
.section("Today"),
.event("Event 1"),
.event("Event 2"),
.interval("3m"),
.event("Reminder 2")
])
}
}
21 changes: 20 additions & 1 deletion CalendrTests/EventViewModelFadeTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ class EventViewModelFadeTests: XCTestCase {
XCTAssertEqual(isFaded, false)
}

func testFade_isOverdue_isTodaySelected_isReminder_shouldFade() {
func testFade_isOverdue_isTodaySelected_isReminder_shouldNotFade() {

dateProvider.now = .make(year: 2021, month: 1, day: 2, hour: 15)

Expand All @@ -196,6 +196,25 @@ class EventViewModelFadeTests: XCTestCase {

var isFaded: Bool?

viewModel.isFaded
.bind { isFaded = $0 }
.disposed(by: disposeBag)

XCTAssertEqual(isFaded, false)
}

func testFade_isCompleted_isTodaySelected_isReminder_shouldFade() {

dateProvider.now = .make(year: 2021, month: 1, day: 2, hour: 15)

let viewModel = mock(
start: .make(year: 2021, month: 1, day: 1, hour: 10),
end: .make(year: 2021, month: 1, day: 1, hour: 10),
type: .reminder(completed: true)
)

var isFaded: Bool?

viewModel.isFaded
.bind { isFaded = $0 }
.disposed(by: disposeBag)
Expand Down

0 comments on commit 2794736

Please sign in to comment.