1
0
mirror of synced 2025-12-23 03:44:00 -05:00
Files
docs/tests/unit/get-applicable-versions.js
2023-07-11 11:44:52 +00:00

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.',
)
})
})