| import { beforeAll, describe, expect, test } from 'vitest' | |
| import { allVersions } from '@/versions/lib/all-versions' | |
| import { liquid } from '@/content-render/index' | |
| import { supported } from '@/versions/lib/enterprise-server-releases' | |
| import shortVersionsMiddleware from '@/versions/middleware/short-versions' | |
| import type { ExtendedRequest } from '@/types' | |
| const contextualize = (req: ExtendedRequest): void => { | |
| if (!req.context) throw new Error('No context on request') | |
| if (!req.context.currentVersion) throw new Error('No currentVersion in context') | |
| req.context.currentVersionObj = req.context.allVersions?.[req.context.currentVersion] | |
| shortVersionsMiddleware(req, null, () => {}) | |
| } | |
| describe('ifversion conditionals', () => { | |
| const req: ExtendedRequest = {} as ExtendedRequest | |
| beforeAll(async () => { | |
| req.context = { | |
| allVersions, | |
| currentVersion: `enterprise-server@${supported[0]}`, | |
| } | |
| contextualize(req) | |
| }) | |
| test('greater than', async () => { | |
| const template = ` | |
| {% ifversion ghes > 3.2 %} | |
| FOO | |
| {% else %} | |
| BAR | |
| {% endif %} | |
| ` | |
| const output = await liquid.parseAndRender(template, req.context) | |
| expect(output.trim()).toBe('FOO') | |
| }) | |
| test('less than', async () => { | |
| const template = ` | |
| {% ifversion ghes < 3.2 %} | |
| FOO | |
| {% else %} | |
| BAR | |
| {% endif %} | |
| ` | |
| const output = await liquid.parseAndRender(template, req.context) | |
| expect(output.trim()).toBe('BAR') | |
| }) | |
| test('Equal', async () => { | |
| const template = ` | |
| {% ifversion ghes %} | |
| FOO | |
| {% else %} | |
| BAR | |
| {% endif %} | |
| ` | |
| const output = await liquid.parseAndRender(template, req.context) | |
| expect(output.trim()).toBe('FOO') | |
| }) | |
| test('Not', async () => { | |
| const template = ` | |
| {% ifversion not ghes %} | |
| FOO | |
| {% else %} | |
| BAR | |
| {% endif %} | |
| ` | |
| const output = await liquid.parseAndRender(template, req.context) | |
| expect(output.trim()).toBe('BAR') | |
| }) | |
| }) | |