import { describe, expect, test } from "bun:test"

import { resolveTaskProgressState } from "./taskProgress"

describe("resolveTaskProgressState", () => {
	test("prefers the polled task status when it is ahead of notifications", () => {
		expect(
			resolveTaskProgressState({
				notificationMessage: "Конвертация видео",
				notificationProgressPct: 24,
				taskMessage: "Загрузка результата",
				taskProgressPct: 95,
				defaultMessage: "Конвертация видео...",
			}),
		).toEqual({
			progressPct: 95,
			message: "Загрузка результата",
		})
	})

	test("falls back to notification state when it is the freshest source", () => {
		expect(
			resolveTaskProgressState({
				notificationMessage: "Применение вырезок",
				notificationProgressPct: 52.5,
				taskMessage: "Применение вырезок",
				taskProgressPct: 10,
				defaultMessage: "Применение вырезок...",
			}),
		).toEqual({
			progressPct: 52.5,
			message: "Применение вырезок",
		})
	})

	test("uses the default message when no progress source is available", () => {
		expect(
			resolveTaskProgressState({
				notificationMessage: null,
				notificationProgressPct: null,
				taskMessage: null,
				taskProgressPct: null,
				defaultMessage: "Подождите, идёт обработка...",
			}),
		).toEqual({
			progressPct: 0,
			message: "Подождите, идёт обработка...",
		})
	})
})
