1
0
mirror of synced 2025-12-22 19:34:15 -05:00
Files
docs/tests/content/glossary.js
Peter Bengtsson 01baeda3c0 sync serialize sitedata to disk (#25749)
* sync serialize sitedata to disk

* use os.tmpdir

* refactor tests

* debugging

* use log

* debugging

* louder about syntax errors

* warn-before-tests

* louder about disk-caching redirects

* less loud

* only in development again
2022-03-09 20:57:40 -05:00

55 lines
2.0 KiB
JavaScript

import loadSiteData from '../../lib/site-data.js'
describe('glossaries', () => {
const glossaries = loadSiteData().en.site.data.glossaries
test('are broken into external, internal, and candidates', async () => {
const keys = Object.keys(glossaries)
expect(keys).toHaveLength(3)
expect(keys).toContain('candidates')
expect(keys).toContain('external')
expect(keys).toContain('internal')
})
test('every entry has a valid term', async () => {
function hasValidTerm(entry) {
return entry.term && entry.term.length && !entry.term.includes('*')
}
expect(glossaries.external.every(hasValidTerm)).toBe(true)
expect(glossaries.internal.every(hasValidTerm)).toBe(true)
expect(glossaries.candidates.every(hasValidTerm)).toBe(true)
})
test('external glossary has entries, and they all have descriptions', async () => {
expect(glossaries.external.length).toBeGreaterThan(20)
glossaries.external.forEach((entry) => {
const message = `entry '${entry.term}' is missing a description`
expect(entry.description && entry.description.length > 0, message).toBe(true)
})
})
test('internal glossary has entries, and they all have descriptions', async () => {
expect(glossaries.internal.length).toBeGreaterThan(20)
glossaries.internal.forEach((entry) => {
const message = `entry '${entry.term}' is missing a description`
expect(entry.description && entry.description.length > 0, message).toBe(true)
})
})
test('non-English external glossary is in correct order', async () => {
const vals = loadSiteData().ja.site.data.glossaries.external
vals.forEach((val, i) => {
expect(val.term.localeCompare(vals[i + 1], 'ja')).toBeGreaterThan(0)
})
})
test('candidates all have a term, but no description', async () => {
expect(glossaries.candidates.length).toBeGreaterThan(20)
glossaries.candidates.forEach((entry) => {
const message = `entry '${entry.term}' not expected to have a description`
expect(!entry.description, message).toBe(true)
})
})
})