Skip to content
Snippets Groups Projects
Commit 454482cb authored by richard.petersen's avatar richard.petersen :sailboat: Committed by julian.baeume
Browse files

Fix unit tests

parent 1fff10d3
No related branches found
No related tags found
No related merge requests found
...@@ -70,6 +70,7 @@ export default { ...@@ -70,6 +70,7 @@ export default {
// The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers. // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers.
// maxWorkers: "50%", // maxWorkers: "50%",
maxWorkers: 1,
// An array of directory names to be searched recursively up from the requiring module's location // An array of directory names to be searched recursively up from the requiring module's location
// moduleDirectories: [ // moduleDirectories: [
......
...@@ -2,7 +2,7 @@ import { describe, it, expect, beforeAll, afterAll, beforeEach, afterEach } from ...@@ -2,7 +2,7 @@ import { describe, it, expect, beforeAll, afterAll, beforeEach, afterEach } from
import mockfs from 'mock-fs' import mockfs from 'mock-fs'
import request from 'supertest' import request from 'supertest'
import { createApp } from '../src/createApp' import { createApp } from '../src/createApp'
import { createMockServer, getRandomPort } from './util.js' import { createMockServer, generateSimpleViteManifest, getRandomPort } from './util.js'
describe('Manifest service', () => { describe('Manifest service', () => {
let app let app
...@@ -26,13 +26,13 @@ describe('Manifest service', () => { ...@@ -26,13 +26,13 @@ describe('Manifest service', () => {
beforeEach(async () => { beforeEach(async () => {
mockserver = await createMockServer({ port }) mockserver = await createMockServer({ port })
mockserver.respondWith({ mockserver.respondWith({
'/api/manifest.json': { some: 'thing' } '/api/manifest.json': generateSimpleViteManifest({ 'example.js': 'test' })
}) })
}) })
afterEach(() => { afterEach(() => {
mockserver.close() mockserver.close()
app.timeout = 30000 process.env.CACHE_TTL = 30000
}) })
it('is healthy', async () => { it('is healthy', async () => {
...@@ -43,53 +43,47 @@ describe('Manifest service', () => { ...@@ -43,53 +43,47 @@ describe('Manifest service', () => {
it('fetches manifest data', async () => { it('fetches manifest data', async () => {
const response = await request(app).get('/api/manifest.json') const response = await request(app).get('/api/manifest.json')
expect(response.statusCode).toBe(200) expect(response.statusCode).toBe(200)
expect(response.body).toEqual([{ some: 'thing' }]) expect(response.body).toEqual([{ namespace: 'test', path: 'example' }])
}) })
it('caches manifest data', async () => { it('caches manifest data', async () => {
await request(app) const response = await request(app).get('/api/manifest.json')
.get('/api/manifest.json') expect(response.statusCode).toBe(200)
.then(response => { expect(response.body).toEqual([{ namespace: 'test', path: 'example' }])
expect(response.statusCode).toBe(200)
expect(response.body).toEqual([{ some: 'thing' }])
})
mockserver.close() mockserver.close()
mockserver = await createMockServer({ port }) mockserver = await createMockServer({ port })
mockserver.respondWith({ '/api/manifest.json': { some: 'different' } }) mockserver.respondWith({
'/api/manifest.json': generateSimpleViteManifest({ 'example.js': 'other' })
})
await new Promise((resolve, reject) => setTimeout(resolve, 150)) await new Promise(resolve => setTimeout(resolve, 150))
await request(app) const response2 = await request(app).get('/api/manifest.json')
.get('/api/manifest.json') expect(response2.statusCode).toBe(200)
.then(response => { expect(response2.body).toEqual([{ namespace: 'test', path: 'example' }])
expect(response.statusCode).toBe(200)
expect(response.body).toEqual([{ some: 'thing' }])
})
}) })
it('refreshes manifest data after caching timeout', async () => { it('refreshes manifest data after caching timeout', async () => {
app.timeout = 100 process.env.CACHE_TTL = 1
app = createApp()
await request(app) const response = await request(app).get('/api/manifest.json')
.get('/api/manifest.json') expect(response.statusCode).toBe(200)
.then(response => { expect(response.body).toEqual([{ namespace: 'test', path: 'example' }])
expect(response.statusCode).toBe(200)
expect(response.body).toEqual([{ some: 'thing' }])
})
mockserver.close() mockserver.close()
mockserver = await createMockServer({ port }) mockserver = await createMockServer({ port })
mockserver.respondWith({ '/api/manifest.json': { some: 'different' } }) mockserver.respondWith({
'/api/manifest.json': generateSimpleViteManifest({ 'example.js': 'other' })
})
await new Promise((resolve, reject) => setTimeout(resolve, 150)) // wait some time
await new Promise(resolve => setTimeout(resolve, 10))
await request(app) const response2 = await request(app).get('/api/manifest.json')
.get('/api/manifest.json') expect(response2.statusCode).toBe(200)
.then(response => { expect(response2.body).toEqual([{ namespace: 'other', path: 'example' }])
expect(response.statusCode).toBe(200)
expect(response.body).toEqual([{ some: 'different' }])
})
}) })
it.skip('can load multiple configurations', async () => { it.skip('can load multiple configurations', async () => {
......
...@@ -16,3 +16,14 @@ export async function createMockServer ({ port }) { ...@@ -16,3 +16,14 @@ export async function createMockServer ({ port }) {
} }
return server return server
} }
export function generateSimpleViteManifest (mapping) {
const viteManifest = {}
for (const [file, namespace] of Object.entries(mapping)) {
viteManifest[file] = {
file,
meta: namespace ? { manifests: [{ namespace }] } : {}
}
}
return viteManifest
}
...@@ -3,13 +3,13 @@ import yaml from 'js-yaml' ...@@ -3,13 +3,13 @@ import yaml from 'js-yaml'
import fetch from 'node-fetch' import fetch from 'node-fetch'
import path from 'path' import path from 'path'
const CACHE_TTL = parseInt(process.env.CACHE_TTL)
export const loadViteManifests = (() => { export const loadViteManifests = (() => {
let cache let cache
let lastCacheTime let lastCacheTime
return async function loadViteManifests ({ useCache = true } = {}) { return async function loadViteManifests ({ useCache = true } = {}) {
const CACHE_TTL = parseInt(process.env.CACHE_TTL)
if (!cache || useCache === false || +new Date() > lastCacheTime + CACHE_TTL) { if (!cache || useCache === false || +new Date() > lastCacheTime + CACHE_TTL) {
const urlsSource = await fs.readFile('./config/manifests/urls.yaml', 'utf8') const urlsSource = await fs.readFile('./config/manifests/urls.yaml', 'utf8')
const urls = yaml.load(urlsSource).manifests const urls = yaml.load(urlsSource).manifests
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment