quasqui
Version:
The meta-framework suite designed from scratch for frontend-focused modern web development.
45 lines (35 loc) • 1.59 kB
text/typescript
import { createRouteAPI } from '../src/libs/hook-api/route';
import { createTemplateAPI } from '../src/libs/hook-api/template';
import { RouteMatchManager } from '../src/libs/route';
import { createDoc } from './helper';
import spec from './fixtures/route-spec/index.json';
describe('test hook api', () => {
test('should route api work correctly', () => {
const manager = new RouteMatchManager();
manager.reset(spec.routes);
const matcher = manager.match('/home');
const routeAPI = createRouteAPI(matcher!, manager, '');
expect(routeAPI.cur().entryName).toBe('home');
expect(routeAPI.get('entry')?.entryPath).toBe('html/entry/index.html');
expect(routeAPI.use('home')).toBeTruthy();
expect(routeAPI.cur().entryName).toBe('home');
});
test('should template api work correctly', () => {
const content = createDoc();
const templateAPI = createTemplateAPI(content);
expect(templateAPI.get()).toMatch(content);
templateAPI.replace('mock', 'replace');
expect(templateAPI.get()).toMatch('replace');
templateAPI.appendBody('after body');
templateAPI.prependBody('before body');
templateAPI.appendHead('after head');
templateAPI.prependHead('before head');
const newContent = templateAPI.get();
expect(newContent).toMatch('<head>before head');
expect(newContent).toMatch('<body>before body');
expect(newContent).toMatch('after head</head>');
expect(newContent).toMatch('after body</body>');
templateAPI.set('<div>empty</div>');
expect(templateAPI.get()).toBe('<div>empty</div>');
});
});