Skip to content

Commit

Permalink
clean code
Browse files Browse the repository at this point in the history
  • Loading branch information
krugerk committed Nov 26, 2024
1 parent 641812d commit 6cb6310
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 20 deletions.
26 changes: 9 additions & 17 deletions BeeSwift/GoalViewModel.swift
Original file line number Diff line number Diff line change
@@ -1,28 +1,11 @@
//
// GoalViewModel.swift
// BeeSwift
//
// Created by krugerk on 2024-11-25.
//

import Foundation
import Intents

import CoreData
import BeeKit

struct GoalViewModel {
let goal: Goal

public func initialDateStepperValue(date: Date = Date()) -> Double {
let daystampAccountingForTheGoalsDeadline = Daystamp(fromDate: date,
deadline: goal.deadline)
let daystampAssumingMidnightDeadline = Daystamp(fromDate: date,
deadline: 0)

return Double(daystampAssumingMidnightDeadline.distance(to: daystampAccountingForTheGoalsDeadline))
}

var title: String {
goal.slug
}
Expand Down Expand Up @@ -84,4 +67,13 @@ struct GoalViewModel {
var showTimerButton: Bool {
!goal.hideDataEntry
}

func initialDateStepperValue(submissionDate date: Date = Date()) -> Double {
let daystampAccountingForTheGoalsDeadline = Daystamp(fromDate: date,
deadline: goal.deadline)
let daystampAssumingMidnightDeadline = Daystamp(fromDate: date,
deadline: 0)

return Double(daystampAssumingMidnightDeadline.distance(to: daystampAccountingForTheGoalsDeadline))
}
}
6 changes: 3 additions & 3 deletions BeeSwiftTests/GoalViewModelTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,23 +14,23 @@ struct GoalViewModelTests {
let goalWithAfterMidnightDeadline = Self.makeGoalWithDeadline(3600 * 3)
let viewModel = GoalViewModel(goal: goalWithAfterMidnightDeadline)
let submissionDateBeforeGoalsDeadline = Calendar.current.date(bySettingHour: 1, minute: 30, second: 0, of: Date())!
let actual = viewModel.initialDateStepperValue(date: submissionDateBeforeGoalsDeadline)
let actual = viewModel.initialDateStepperValue(submissionDate: submissionDateBeforeGoalsDeadline)
#expect(actual == DayStep.previousDay.rawValue)
}

@Test func initialStepperIsTodayWhenSubmissionDateIsBeforeMidnightAndBeforeDeadline() async throws {
let goalWithMidnightDeadline = Self.makeGoalWithDeadline(0)
let viewModel = GoalViewModel(goal: goalWithMidnightDeadline)
let submissionDateBeforeMidnight = Calendar.current.date(bySettingHour: 20, minute: 30, second: 0, of: Date())!
let actual = viewModel.initialDateStepperValue(date: submissionDateBeforeMidnight)
let actual = viewModel.initialDateStepperValue(submissionDate: submissionDateBeforeMidnight)
#expect(actual == DayStep.sameDay.rawValue)
}

@Test func initialStepperIsTomorrowWhenSubmissionDateIsAfterDeadline() async throws {
let goalWithBeforeMidnightDeadline = Self.makeGoalWithDeadline(3600 * -3)
let viewModel = GoalViewModel(goal: goalWithBeforeMidnightDeadline)
let submissionDateBetweenDeadlineAndMidnight = Calendar.current.date(bySettingHour: 22, minute: 30, second: 0, of: Date())!
let actual = viewModel.initialDateStepperValue(date: submissionDateBetweenDeadlineAndMidnight)
let actual = viewModel.initialDateStepperValue(submissionDate: submissionDateBetweenDeadlineAndMidnight)
#expect(actual == DayStep.nextDay.rawValue)
}
}
Expand Down

0 comments on commit 6cb6310

Please sign in to comment.