AbdulElahGwaith's picture
Upload folder using huggingface_hub
88df9e4 verified
import { describe, expect, test } from 'vitest'
import { renderContent } from '@/content-render/index'
describe('octicon tag', () => {
test('renders the expected octicon', async () => {
const actual = await renderContent('{% octicon "check" %}')
expect(actual).toContain('<svg ')
expect(actual).toContain('class="octicon octicon-check"')
})
test('renders the expected octicon with an option', async () => {
const actual = await renderContent('{% octicon "check" width="64" %}')
expect(actual).toContain('<svg ')
expect(actual).toContain('class="octicon octicon-check"')
expect(actual).toContain('width="64"')
})
test('renders the expected octicon with multiple options', async () => {
const actual = await renderContent('{% octicon "check" width="64" aria-label="A checkmark" %}')
expect(actual).toContain('<svg ')
expect(actual).toContain('class="octicon octicon-check"')
expect(actual).toContain('width="64"')
expect(actual).toContain('aria-label="A checkmark"')
})
test('uses label to set aria-label', async () => {
const actual = await renderContent('{% octicon "check" label="A checkmark" %}')
expect(actual).toContain('<svg ')
expect(actual).toContain('class="octicon octicon-check"')
expect(actual).toContain('aria-label="A checkmark"')
})
test('throws an error with invalid syntax', async () => {
await expect(renderContent('{% octicon 123 %}')).rejects.toThrowError(
'Syntax Error in tag \'octicon\' - Valid syntax: octicon "<name>" <key="value">',
)
})
test('throws an error with a non-existant octicon', async () => {
await expect(renderContent('{% octicon "pizza-patrol" %}')).rejects.toThrowError(
'Octicon pizza-patrol does not exist',
)
})
test('auto-generates aria-label when not provided', async () => {
const actual = await renderContent('{% octicon "check" %}')
expect(actual).toContain('<svg ')
expect(actual).toContain('class="octicon octicon-check"')
expect(actual).toContain('aria-label="check icon"')
})
test('auto-generates aria-label with spaces for hyphenated icon names', async () => {
const actual = await renderContent('{% octicon "git-branch" %}')
expect(actual).toContain('<svg ')
expect(actual).toContain('class="octicon octicon-git-branch"')
expect(actual).toContain('aria-label="git branch icon"')
})
test('uses custom aria-label instead of auto-generated one when provided', async () => {
const actual = await renderContent('{% octicon "check" aria-label="Supported" %}')
expect(actual).toContain('<svg ')
expect(actual).toContain('class="octicon octicon-check"')
expect(actual).toContain('aria-label="Supported"')
expect(actual).not.toContain('aria-label="check icon"')
})
test('auto-generates aria-label even when other attributes are provided', async () => {
const actual = await renderContent('{% octicon "filter" width="32" %}')
expect(actual).toContain('<svg ')
expect(actual).toContain('class="octicon octicon-filter"')
expect(actual).toContain('aria-label="filter icon"')
expect(actual).toContain('width="32"')
})
})