29 lines
1.2 KiB
JavaScript
29 lines
1.2 KiB
JavaScript
import { describe, it, expect, vi, beforeAll, afterAll } from 'vitest';
|
|
import { JSDOM } from 'jsdom';
|
|
|
|
vi.mock('../../public/api.js', () => ({ api: {
|
|
get: vi.fn(async (p) => p.endsWith('/version')
|
|
? { running: 'v3.2.5', latest: 'v3.2.6', updateAvailable: true, url: 'https://x' }
|
|
: { data: [] }),
|
|
post: vi.fn(async () => ({ link: 'https://link.hynesy.com/abc' }))
|
|
} }));
|
|
|
|
let render;
|
|
beforeAll(async () => {
|
|
const dom = new JSDOM('<!doctype html><html><body><div id="main"></div></body></html>', { url: 'http://localhost/' });
|
|
global.window = dom.window; global.document = dom.window.document; global.Node = dom.window.Node;
|
|
({ render } = await import('../../public/views/links.js'));
|
|
});
|
|
afterAll(() => { delete global.window; delete global.document; delete global.Node; });
|
|
|
|
describe('links view', () => {
|
|
it('renders the update badge + quick-add + the Kutt iframe', async () => {
|
|
const main = document.getElementById('main');
|
|
await render(main);
|
|
await new Promise(r => setTimeout(r, 0));
|
|
expect(main.querySelector('iframe.term-frame').getAttribute('src')).toBe('https://link.hynesy.com/');
|
|
expect(main.textContent).toMatch(/update available/i);
|
|
expect(main.querySelector('.lk-quickadd')).not.toBeNull();
|
|
});
|
|
});
|