107 lines
3.5 KiB
TypeScript
107 lines
3.5 KiB
TypeScript
|
import { HABIT_MOCK } from "@/tests/mocks/domain/Habit"
|
||
|
import { GOAL_FREQUENCIES } from "../Goal"
|
||
|
import { HabitsTracker } from "../HabitsTracker"
|
||
|
import { HabitHistory } from "../HabitHistory"
|
||
|
import { HABIT_PROGRESS_MOCK } from "@/tests/mocks/domain/HabitProgress"
|
||
|
|
||
|
describe("domain/entities/HabitsTracker", () => {
|
||
|
describe("HabitsTracker.default", () => {
|
||
|
for (const frequency of GOAL_FREQUENCIES) {
|
||
|
it(`should return empty habitsHistory for ${frequency}`, () => {
|
||
|
const habitsTracker = HabitsTracker.default()
|
||
|
expect(habitsTracker.habitsHistory[frequency]).toEqual([])
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
describe("getAllHabitsHistory", () => {
|
||
|
it("should return all habits history", () => {
|
||
|
const habitsTracker = HabitsTracker.default()
|
||
|
const habit = HABIT_MOCK.examplesByNames.Walk
|
||
|
habitsTracker.addHabit(habit)
|
||
|
expect(habitsTracker.getAllHabitsHistory()).toEqual([
|
||
|
new HabitHistory({
|
||
|
habit,
|
||
|
progressHistory: [],
|
||
|
}),
|
||
|
])
|
||
|
})
|
||
|
|
||
|
it("should return empty array when no habits are added", () => {
|
||
|
const habitsTracker = HabitsTracker.default()
|
||
|
expect(habitsTracker.getAllHabitsHistory()).toEqual([])
|
||
|
})
|
||
|
})
|
||
|
|
||
|
describe("getHabitHistoryById", () => {
|
||
|
it("should return habit history by id", () => {
|
||
|
const habitsTracker = HabitsTracker.default()
|
||
|
const habit = HABIT_MOCK.examplesByNames.Walk
|
||
|
habitsTracker.addHabit(habit)
|
||
|
expect(habitsTracker.getHabitHistoryById(habit.id)).toEqual(
|
||
|
new HabitHistory({
|
||
|
habit,
|
||
|
progressHistory: [],
|
||
|
}),
|
||
|
)
|
||
|
})
|
||
|
|
||
|
it("should return undefined when habit is not found", () => {
|
||
|
const habitsTracker = HabitsTracker.default()
|
||
|
expect(habitsTracker.getHabitHistoryById("invalid-id")).toBeUndefined()
|
||
|
})
|
||
|
})
|
||
|
|
||
|
describe("addHabit", () => {
|
||
|
it("should add habit to habitsHistory", () => {
|
||
|
const habitsTracker = HabitsTracker.default()
|
||
|
const habit = HABIT_MOCK.examplesByNames.Walk
|
||
|
habitsTracker.addHabit(habit)
|
||
|
expect(habitsTracker.habitsHistory[habit.goal.frequency]).toEqual([
|
||
|
new HabitHistory({
|
||
|
habit,
|
||
|
progressHistory: [],
|
||
|
}),
|
||
|
])
|
||
|
})
|
||
|
})
|
||
|
|
||
|
describe("editHabit", () => {
|
||
|
it("should edit habit in habitsHistory", () => {
|
||
|
const habitsTracker = HabitsTracker.default()
|
||
|
const habit = HABIT_MOCK.examplesByNames.Walk
|
||
|
habitsTracker.addHabit(habit)
|
||
|
habit.name = "Run"
|
||
|
habitsTracker.editHabit(habit)
|
||
|
expect(habitsTracker.habitsHistory[habit.goal.frequency]).toEqual([
|
||
|
new HabitHistory({
|
||
|
habit,
|
||
|
progressHistory: [],
|
||
|
}),
|
||
|
])
|
||
|
})
|
||
|
|
||
|
it("should not edit habit in habitsHistory when habit is not found", () => {
|
||
|
const habitsTracker = HabitsTracker.default()
|
||
|
const habit = HABIT_MOCK.examplesByNames.Walk
|
||
|
habitsTracker.editHabit(habit)
|
||
|
expect(habitsTracker.habitsHistory[habit.goal.frequency]).toEqual([])
|
||
|
})
|
||
|
})
|
||
|
|
||
|
describe("updateHabitProgress", () => {
|
||
|
it("should update habit progress in habitsHistory (add new habit progress if not yet added)", () => {
|
||
|
const habitsTracker = HabitsTracker.default()
|
||
|
const habit = HABIT_MOCK.examplesByNames["Clean the house"]
|
||
|
habitsTracker.addHabit(habit)
|
||
|
habitsTracker.updateHabitProgress(HABIT_PROGRESS_MOCK.exampleByIds[1])
|
||
|
expect(habitsTracker.habitsHistory[habit.goal.frequency]).toEqual([
|
||
|
new HabitHistory({
|
||
|
habit,
|
||
|
progressHistory: [HABIT_PROGRESS_MOCK.exampleByIds[1]],
|
||
|
}),
|
||
|
])
|
||
|
})
|
||
|
})
|
||
|
})
|