74 lines
2.7 KiB
JavaScript
74 lines
2.7 KiB
JavaScript
// @vitest-environment jsdom
|
|
import { describe, expect, it } from "vitest";
|
|
import SelfServeTasksStep from "@/components/displays/selfServe/SelfServeTasksStep.vue";
|
|
import { mountWithApp } from "./helpers/mountWithApp.js";
|
|
|
|
const mountTasksStep = (props = {}) =>
|
|
mountWithApp(SelfServeTasksStep, {
|
|
props: {
|
|
isLoading: false,
|
|
dynamicImageUrl: "https://cdn.example.test/dynamic.png",
|
|
activeTasks: [],
|
|
completedTasks: {},
|
|
allVisibleQuestionsAnswered: false,
|
|
editAnswers: false,
|
|
...props,
|
|
},
|
|
global: {
|
|
stubs: {
|
|
BIcon: true,
|
|
SelfServeTaskList: {
|
|
template: '<div data-testid="self-serve-task-list-stub" />',
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
describe("SelfServeTasksStep", () => {
|
|
it("shows a Buefy skeleton until the dynamic image loads", async () => {
|
|
const wrapper = mountTasksStep();
|
|
|
|
expect(wrapper.get('[data-testid="self-serve-dynamic-image-skeleton"]').exists()).toBe(true);
|
|
expect(wrapper.get('[data-testid="self-serve-dynamic-image"]').classes()).toContain("is-loading");
|
|
|
|
await wrapper.get('[data-testid="self-serve-dynamic-image"]').trigger("load");
|
|
|
|
expect(wrapper.find('[data-testid="self-serve-dynamic-image-skeleton"]').exists()).toBe(false);
|
|
expect(wrapper.get('[data-testid="self-serve-dynamic-image"]').classes()).not.toContain("is-loading");
|
|
});
|
|
|
|
it("shows the skeleton again when the dynamic image URL changes", async () => {
|
|
const wrapper = mountTasksStep();
|
|
|
|
await wrapper.get('[data-testid="self-serve-dynamic-image"]').trigger("load");
|
|
expect(wrapper.find('[data-testid="self-serve-dynamic-image-skeleton"]').exists()).toBe(false);
|
|
|
|
await wrapper.setProps({
|
|
dynamicImageUrl: "https://cdn.example.test/dynamic-step-2.png",
|
|
});
|
|
|
|
expect(wrapper.get('[data-testid="self-serve-dynamic-image-skeleton"]').exists()).toBe(true);
|
|
expect(wrapper.get('[data-testid="self-serve-dynamic-image"]').attributes("src")).toBe(
|
|
"https://cdn.example.test/dynamic-step-2.png"
|
|
);
|
|
});
|
|
|
|
it("clears loading state and emits clear-dynamic-image on image errors", async () => {
|
|
const wrapper = mountTasksStep();
|
|
|
|
await wrapper.get('[data-testid="self-serve-dynamic-image"]').trigger("error");
|
|
|
|
expect(wrapper.find('[data-testid="self-serve-dynamic-image-skeleton"]').exists()).toBe(false);
|
|
expect(wrapper.emitted("clear-dynamic-image")).toEqual([[]]);
|
|
});
|
|
|
|
it("does not render a skeleton when there is no dynamic image URL", () => {
|
|
const wrapper = mountTasksStep({
|
|
dynamicImageUrl: null,
|
|
});
|
|
|
|
expect(wrapper.find('[data-testid="self-serve-dynamic-image-skeleton"]').exists()).toBe(false);
|
|
expect(wrapper.find('[data-testid="self-serve-dynamic-image"]').exists()).toBe(false);
|
|
});
|
|
});
|