All checks were successful
CI / verify (push) Successful in 1m3s
A note that couldn't load rendered a silent blank div. Add a calm NoteState placeholder (spinner while loading, message + retry on failure) and gate the read view on it; content still wins when present.
30 lines
1022 B
TypeScript
30 lines
1022 B
TypeScript
import { mount } from "@vue/test-utils"
|
|
import { describe, expect, it } from "vitest"
|
|
|
|
import NoteState from "./NoteState.vue"
|
|
|
|
describe("NoteState", () => {
|
|
it("shows a spinner while loading and no retry", () => {
|
|
const wrapper = mount(NoteState, { props: { status: "loading" } })
|
|
|
|
expect(wrapper.find(".loading-spinner").exists()).toBe(true)
|
|
expect(wrapper.find(".note-state-retry").exists()).toBe(false)
|
|
})
|
|
|
|
it("shows a message and retry button when failed", () => {
|
|
const wrapper = mount(NoteState, { props: { status: "failed" } })
|
|
|
|
expect(wrapper.find(".loading-spinner").exists()).toBe(false)
|
|
expect(wrapper.text()).toContain("Couldn't load this note")
|
|
expect(wrapper.find(".note-state-retry").exists()).toBe(true)
|
|
})
|
|
|
|
it("emits retry when the retry button is clicked", async () => {
|
|
const wrapper = mount(NoteState, { props: { status: "failed" } })
|
|
|
|
await wrapper.find(".note-state-retry").trigger("click")
|
|
|
|
expect(wrapper.emitted("retry")).toHaveLength(1)
|
|
})
|
|
})
|