UNPKG

utquidem

Version:

The meta-framework suite designed from scratch for frontend-focused modern web development.

93 lines (81 loc) 2.81 kB
const path = require('path'); const fs = require('fs'); const axios = require('axios'); const { modernBuild, installDeps, clearBuildDist, modernStart, getPort, killApp, } = require('../../../utils/modernTestUtils'); const appPath = path.resolve(__dirname, '../'); const successStatus = 200; let app, appPort; beforeAll(async () => { await installDeps(appPath); await modernBuild(appPath); appPort = await getPort(); }); afterAll(async () => { if (app) { await killApp(app); } clearBuildDist(appPath); }); describe('test basic usage', () => { it(`should have favicon and app icon in dist and html`, async () => { const favicon = path.resolve(appPath, './dist/favicon.ico'); const favicon1 = path.resolve(appPath, './dist/favicon1.ico'); const appIcon = path.resolve(appPath, './dist/icon.png'); expect(fs.existsSync(favicon)).toBe(true); expect(fs.existsSync(favicon1)).toBe(true); expect(fs.existsSync(appIcon)).toBe(true); const mainEntry = path.resolve(appPath, './dist/html/main/index.html'); const activityEntry = path.resolve( appPath, './dist/html/activity/index.html', ); expect(fs.readFileSync(mainEntry, 'utf-8')).toMatch( '<link rel="icon" href="/favicon1.ico">', ); expect(fs.readFileSync(mainEntry, 'utf-8')).toMatch( '<link rel="apple-touch-icon" sizes="180*180" href="/icon.png">', ); expect(fs.readFileSync(activityEntry, 'utf-8')).toMatch( '<link rel="icon" href="/favicon.ico">', ); expect(fs.readFileSync(activityEntry, 'utf-8')).toMatch( '<link rel="apple-touch-icon" sizes="180*180" href="/icon.png">', ); }); it(`should start successfully`, async () => { app = await modernStart(appPath, appPort); expect(app.pid).toBeDefined(); const { status } = await axios.get(`http://localhost:${appPort}`); expect(status).toBe(successStatus); const { status: aStatus } = await axios.get( `http://localhost:${appPort}/activity`, ); expect(aStatus).toBe(successStatus); }); it(`should serve favicon and app icon`, async () => { const { status, headers } = await axios.get( `http://localhost:${appPort}/favicon1.ico`, ); expect(status).toBe(successStatus); expect(headers['content-type']).toBe('image/x-icon'); const { status: aStatus, headers: aHeaders } = await axios.get( `http://localhost:${appPort}/favicon.ico`, ); expect(aStatus).toBe(successStatus); expect(aHeaders['content-type']).toBe('image/x-icon'); }); it(`should serve app icon`, async () => { const { status, headers } = await axios.get( `http://localhost:${appPort}/icon.png`, ); expect(status).toBe(successStatus); expect(headers['content-type']).toBe('image/png'); }); });