81 lines
2.6 KiB
JavaScript
81 lines
2.6 KiB
JavaScript
import fs from 'fs'
|
|
import path from 'path'
|
|
import { describe, expect, test } from '@jest/globals'
|
|
|
|
import { allVersions } from '../../lib/all-versions.js'
|
|
import getApplicableVersions from '../../lib/get-applicable-versions.js'
|
|
|
|
describe('Versions frontmatter', () => {
|
|
test('wildcard', async () => {
|
|
const versions = {
|
|
fpt: '*',
|
|
ghae: '*',
|
|
}
|
|
const applicableVersions = getApplicableVersions(versions)
|
|
expect(applicableVersions.includes('github-ae@latest')).toBe(true)
|
|
})
|
|
|
|
test('greater than', async () => {
|
|
const versions = {
|
|
fpt: '*',
|
|
ghae: '>3.2',
|
|
}
|
|
const applicableVersions = getApplicableVersions(versions)
|
|
expect(applicableVersions.includes('github-ae@latest')).toBe(true)
|
|
})
|
|
|
|
test('less than', async () => {
|
|
const versions = {
|
|
fpt: '*',
|
|
ghae: '<3.2',
|
|
}
|
|
const applicableVersions = getApplicableVersions(versions)
|
|
expect(applicableVersions.includes('github-ae@latest')).toBe(false)
|
|
})
|
|
})
|
|
|
|
describe('general cases', () => {
|
|
test('simply a wildcard', () => {
|
|
const applicableVersions = getApplicableVersions('*')
|
|
expect(applicableVersions.length).toBe(Object.keys(allVersions).length)
|
|
expect(Object.keys(allVersions).every((v) => applicableVersions.includes(v)))
|
|
})
|
|
test("using 'features'", () => {
|
|
const possibleFeatures = fs
|
|
.readdirSync('data/features')
|
|
.filter((name) => name !== 'README.md')
|
|
.map((name) => path.basename(name, '.yml'))
|
|
for (const possibleFeature of possibleFeatures) {
|
|
const versions = { feature: possibleFeature }
|
|
const applicableVersions = getApplicableVersions(versions)
|
|
expect(applicableVersions.every((v) => Object.keys(allVersions).includes(v)))
|
|
}
|
|
// Same thing but as an array each time
|
|
for (const possibleFeature of possibleFeatures) {
|
|
const versions = { feature: [possibleFeature] }
|
|
const applicableVersions = getApplicableVersions(versions)
|
|
expect(applicableVersions.every((v) => Object.keys(allVersions).includes(v)))
|
|
}
|
|
})
|
|
})
|
|
|
|
describe('invalid versions', () => {
|
|
test('invalid versions', () => {
|
|
expect(() => {
|
|
getApplicableVersions(undefined, 'foo.md')
|
|
}).toThrow('No `versions` frontmatter found in foo.md')
|
|
})
|
|
|
|
test('no valid versions found at all', () => {
|
|
const versions = {
|
|
never: '*',
|
|
heard: 'of',
|
|
}
|
|
expect(() => {
|
|
getApplicableVersions(versions, 'foo.md')
|
|
}).toThrow(
|
|
'foo.md is not available in any currently supported version. Make sure the `versions` property includes at least one supported version.',
|
|
)
|
|
})
|
|
})
|