github-docs-arabic-enhanced / src /versions /tests /get-applicable-versions.ts
AbdulElahGwaith's picture
Upload folder using huggingface_hub
88df9e4 verified
import fs from 'fs'
import path from 'path'
import { describe, expect, test } from 'vitest'
import { allVersions } from '@/versions/lib/all-versions'
import getApplicableVersions from '@/versions/lib/get-applicable-versions'
import { latest } from '@/versions/lib/enterprise-server-releases'
interface Versions {
[key: string]: string | string[]
}
describe('Versions frontmatter', () => {
test('wildcard', async () => {
const versions: Versions = {
fpt: '*',
ghes: '*',
}
const applicableVersions = getApplicableVersions(versions)
expect(applicableVersions.includes('free-pro-team@latest')).toBe(true)
expect(applicableVersions.includes(`enterprise-server@${latest}`)).toBe(true)
})
test('greater than', async () => {
const versions: Versions = {
fpt: '*',
ghes: '>3.2',
}
const applicableVersions = getApplicableVersions(versions)
expect(applicableVersions.includes(`enterprise-server@${latest}`)).toBe(true)
})
test('less than', async () => {
const versions: Versions = {
fpt: '*',
ghes: '<3.2',
}
const applicableVersions = getApplicableVersions(versions)
expect(applicableVersions.includes(`enterprise-server@${latest}`)).toBe(false)
})
})
describe('general cases', () => {
test('wildcard * is no longer used', () => {
// docs engineering 3110
expect.assertions(2)
try {
getApplicableVersions('*')
} catch (e: any) {
expect(e).toBeInstanceOf(Error)
expect(e).toHaveProperty(
'message',
'undefined contains the invalid versions frontmatter: *. Please explicitly list out all the versions that apply to this article.',
)
}
})
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: 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: 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: 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.',
)
})
})