1
0
mirror of https://github.com/home-assistant/frontend.git synced 2026-04-02 00:27:49 +01:00
Files
frontend/test/fake_data/entities/media-player-entity.test.ts
Logan Rosen 95a7b91ea5 Fix media-player mock attrs for gallery seek slider (#30124)
Fix media-player mock state attributes for gallery seek UI

Expose media-player capability and state attributes via entity hooks so gallery music mocks render position bars. Keep the domain-hook model and null state attrs when off to match other mocks.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-13 08:26:44 +02:00

70 lines
2.4 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { MockMediaPlayerEntity } from "../../../src/fake_data/entities/media-player-entity";
describe("MockMediaPlayerEntity", () => {
it("exposes capability and state attributes for active states", () => {
const entity = new MockMediaPlayerEntity({
entity_id: "media_player.demo",
state: "playing",
attributes: {
friendly_name: "Demo player",
supported_features: 64063,
source_list: ["TV", "Chromecast"],
sound_mode_list: ["Movie", "Music"],
media_content_type: "music",
media_title: "Song",
media_artist: "Artist",
media_album_name: "Album",
media_series_title: "Series",
media_duration: 300,
media_position: 45,
media_position_updated_at: "2026-03-12T18:00:00Z",
app_name: "Spotify",
volume_level: 0.45,
is_volume_muted: false,
sound_mode: "Movie",
source: "TV",
group_members: ["media_player.kitchen"],
},
});
const state = entity.toState();
expect(state.attributes.source_list).toEqual(["TV", "Chromecast"]);
expect(state.attributes.sound_mode_list).toEqual(["Movie", "Music"]);
expect(state.attributes.media_duration).toBe(300);
expect(state.attributes.media_position).toBe(45);
expect(state.attributes.volume_level).toBe(0.45);
expect(state.attributes.source).toBe("TV");
});
it("keeps capability attributes while nulling state attributes when off", () => {
const entity = new MockMediaPlayerEntity({
entity_id: "media_player.demo",
state: "off",
attributes: {
friendly_name: "Demo player",
supported_features: 64063,
source_list: ["TV", "Chromecast"],
sound_mode_list: ["Movie", "Music"],
media_duration: 300,
media_position: 45,
volume_level: 0.45,
is_volume_muted: false,
source: "TV",
},
});
const state = entity.toState();
expect(state.attributes.source_list).toEqual(["TV", "Chromecast"]);
expect(state.attributes.sound_mode_list).toEqual(["Movie", "Music"]);
expect(state.attributes.media_duration).toBeNull();
expect(state.attributes.media_position).toBeNull();
expect(state.attributes.volume_level).toBeNull();
expect(state.attributes.is_volume_muted).toBeNull();
expect(state.attributes.source).toBeNull();
});
});