mirror of
https://github.com/home-assistant/frontend.git
synced 2026-08-20 21:28:22 +01:00
* Add activity detail dialog * Apply review fixes to activity detail dialog * Resolve previous state from history in logbook detail dialog * Disable text selection on clickable logbook rows * Document run discovery as a fallback for missing context ids * Scope the detail chain to the subject's cause path * Replace clickable logbook rows with explicit detail affordances * Show the cause badge on automation and integration rows * Map scheduled and Home Assistant causes to their trigger icons * Replace logbook detail affordances with full-width rows * Frame the activity detail dialog with ha-grouped-list * Add missing import * Fix milliseconds placement in activity chain times
196 lines
4.9 KiB
TypeScript
196 lines
4.9 KiB
TypeScript
import { expect, describe, it } from "vitest";
|
|
|
|
import {
|
|
formatTime,
|
|
formatTimeWithSeconds,
|
|
formatTimeWithMilliseconds,
|
|
formatTimeWeekday,
|
|
formatTime24h,
|
|
} from "../../../src/common/datetime/format_time";
|
|
import {
|
|
NumberFormat,
|
|
TimeFormat,
|
|
FirstWeekday,
|
|
DateFormat,
|
|
TimeZone,
|
|
} from "../../../src/data/translation";
|
|
import { demoConfig } from "../../../src/fake_data/demo_config";
|
|
|
|
describe("formatTime", () => {
|
|
const dateObj = new Date(2017, 10, 18, 23, 12, 13, 1400);
|
|
|
|
it("Formats English times", () => {
|
|
expect(
|
|
formatTime(
|
|
dateObj,
|
|
{
|
|
language: "en",
|
|
number_format: NumberFormat.language,
|
|
time_format: TimeFormat.am_pm,
|
|
date_format: DateFormat.language,
|
|
time_zone: TimeZone.local,
|
|
first_weekday: FirstWeekday.language,
|
|
},
|
|
demoConfig
|
|
)
|
|
).toBe("11:12 PM");
|
|
expect(
|
|
formatTime(
|
|
dateObj,
|
|
{
|
|
language: "en",
|
|
number_format: NumberFormat.language,
|
|
time_format: TimeFormat.twenty_four,
|
|
date_format: DateFormat.language,
|
|
time_zone: TimeZone.local,
|
|
first_weekday: FirstWeekday.language,
|
|
},
|
|
demoConfig
|
|
)
|
|
).toBe("23:12");
|
|
});
|
|
});
|
|
|
|
describe("formatTimeWithSeconds", () => {
|
|
const dateObj = new Date(2017, 10, 18, 23, 12, 13, 400);
|
|
|
|
it("Formats English times with seconds", () => {
|
|
expect(
|
|
formatTimeWithSeconds(
|
|
dateObj,
|
|
{
|
|
language: "en",
|
|
number_format: NumberFormat.language,
|
|
time_format: TimeFormat.am_pm,
|
|
date_format: DateFormat.language,
|
|
time_zone: TimeZone.local,
|
|
first_weekday: FirstWeekday.language,
|
|
},
|
|
demoConfig
|
|
)
|
|
).toBe("11:12:13 PM");
|
|
expect(
|
|
formatTimeWithSeconds(
|
|
dateObj,
|
|
{
|
|
language: "en",
|
|
number_format: NumberFormat.language,
|
|
time_format: TimeFormat.twenty_four,
|
|
date_format: DateFormat.language,
|
|
time_zone: TimeZone.local,
|
|
first_weekday: FirstWeekday.language,
|
|
},
|
|
demoConfig
|
|
)
|
|
).toBe("23:12:13");
|
|
});
|
|
});
|
|
|
|
describe("formatTimeWithMilliseconds", () => {
|
|
const dateObj = new Date(2017, 10, 18, 23, 12, 13, 400);
|
|
|
|
it("Formats English times with milliseconds", () => {
|
|
expect(
|
|
formatTimeWithMilliseconds(
|
|
dateObj,
|
|
{
|
|
language: "en",
|
|
number_format: NumberFormat.language,
|
|
time_format: TimeFormat.am_pm,
|
|
date_format: DateFormat.language,
|
|
time_zone: TimeZone.local,
|
|
first_weekday: FirstWeekday.language,
|
|
},
|
|
demoConfig
|
|
)
|
|
).toBe("11:12:13.400 PM");
|
|
expect(
|
|
formatTimeWithMilliseconds(
|
|
dateObj,
|
|
{
|
|
language: "en",
|
|
number_format: NumberFormat.language,
|
|
time_format: TimeFormat.twenty_four,
|
|
date_format: DateFormat.language,
|
|
time_zone: TimeZone.local,
|
|
first_weekday: FirstWeekday.language,
|
|
},
|
|
demoConfig
|
|
)
|
|
).toBe("23:12:13.400");
|
|
});
|
|
|
|
it("Uses the locale decimal separator", () => {
|
|
expect(
|
|
formatTimeWithMilliseconds(
|
|
dateObj,
|
|
{
|
|
language: "fr",
|
|
number_format: NumberFormat.language,
|
|
time_format: TimeFormat.twenty_four,
|
|
date_format: DateFormat.language,
|
|
time_zone: TimeZone.local,
|
|
first_weekday: FirstWeekday.language,
|
|
},
|
|
demoConfig
|
|
)
|
|
).toBe("23:12:13,400");
|
|
});
|
|
});
|
|
|
|
describe("formatTimeWeekday", () => {
|
|
const dateObj = new Date(2017, 10, 18, 23, 12, 13, 1400);
|
|
|
|
it("Formats English times", () => {
|
|
expect(
|
|
formatTimeWeekday(
|
|
dateObj,
|
|
{
|
|
language: "en",
|
|
number_format: NumberFormat.language,
|
|
time_format: TimeFormat.am_pm,
|
|
date_format: DateFormat.language,
|
|
time_zone: TimeZone.local,
|
|
first_weekday: FirstWeekday.language,
|
|
},
|
|
demoConfig
|
|
)
|
|
).toBe("Saturday 11:12 PM");
|
|
expect(
|
|
formatTimeWeekday(
|
|
dateObj,
|
|
{
|
|
language: "en",
|
|
number_format: NumberFormat.language,
|
|
time_format: TimeFormat.twenty_four,
|
|
date_format: DateFormat.language,
|
|
time_zone: TimeZone.local,
|
|
first_weekday: FirstWeekday.language,
|
|
},
|
|
demoConfig
|
|
)
|
|
).toBe("Saturday 23:12");
|
|
});
|
|
});
|
|
|
|
describe("formatTime24h", () => {
|
|
const dateObj = new Date(2017, 10, 18, 23, 12, 13, 1400);
|
|
|
|
it("Formats English times in 24h format", () => {
|
|
expect(
|
|
formatTime24h(
|
|
dateObj,
|
|
{
|
|
language: "en",
|
|
number_format: NumberFormat.language,
|
|
time_format: TimeFormat.twenty_four,
|
|
date_format: DateFormat.language,
|
|
time_zone: TimeZone.local,
|
|
first_weekday: FirstWeekday.language,
|
|
},
|
|
demoConfig
|
|
)
|
|
).toBe("23:12");
|
|
});
|
|
});
|