Files
snippet-pastebin/src/lib/config.test.ts
johndoe6345789 d7009f53db fix: Resolve remaining lint errors in test files
- Remove unused React import from react-transform.test.ts
- Remove unused Monaco type import from monaco-config.test.ts
- Replace unused 'key' loop variables with underscore pattern in component-code-snippets.test.ts and config.test.ts
- Remove unused 'result' variable in use-mobile.test.ts
- Remove unnecessary semicolons in usePersistenceConfig.test.ts

Resolves all linting errors (15 errors, 4 warnings → 0 errors, 4 warnings).
Tests continue to pass: 508 passing, 1 skipped.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-20 20:33:47 +00:00

177 lines
5.5 KiB
TypeScript

import { getLanguageColor, LANGUAGES, LANGUAGE_COLORS, strings, appConfig } from './config'
describe('config', () => {
describe('getLanguageColor', () => {
test('returns colors for known languages', () => {
const color = getLanguageColor('JavaScript')
expect(color).toBeDefined()
expect(typeof color).toBe('string')
expect(color).toContain(' ')
})
test('returns combined bg, text, border classes', () => {
const color = getLanguageColor('Python')
const parts = color.split(' ')
expect(parts.length).toBeGreaterThanOrEqual(2)
})
test('returns default color for unknown language', () => {
const color = getLanguageColor('UnknownLanguage')
expect(color).toBeDefined()
expect(typeof color).toBe('string')
})
test('returns same default for unknown languages', () => {
const color1 = getLanguageColor('Unknown1')
const color2 = getLanguageColor('Unknown2')
expect(color1).toBe(color2)
})
test('handles case sensitivity', () => {
const colorCapital = getLanguageColor('JavaScript')
const colorLower = getLanguageColor('javascript')
// Results may differ due to case sensitivity in the mapping
expect(colorCapital).toBeDefined()
expect(colorLower).toBeDefined()
})
test('returns valid Tailwind classes', () => {
const color = getLanguageColor('TypeScript')
expect(color).toContain('bg-')
// Color should have class names with dashes
expect(/\w+[-\w]*/.test(color)).toBe(true)
})
test('handles empty string', () => {
const color = getLanguageColor('')
expect(color).toBeDefined()
})
test('returns Other color for unmapped languages', () => {
const color = getLanguageColor('SomeRandomLanguage')
const otherColor = getLanguageColor('Other')
expect(color).toBe(otherColor)
})
})
describe('LANGUAGES', () => {
test('is an array', () => {
expect(Array.isArray(LANGUAGES)).toBe(true)
})
test('contains language entries', () => {
expect(LANGUAGES.length).toBeGreaterThan(0)
})
test('each language has label and value', () => {
for (const lang of LANGUAGES) {
if (lang && typeof lang === 'object') {
expect(lang).toHaveProperty('label')
expect(lang).toHaveProperty('value')
}
}
})
test('LANGUAGES is exported', () => {
expect(LANGUAGES).toBeDefined()
})
})
describe('LANGUAGE_COLORS', () => {
test('is an object', () => {
expect(typeof LANGUAGE_COLORS).toBe('object')
expect(!Array.isArray(LANGUAGE_COLORS)).toBe(true)
})
test('contains color entries', () => {
expect(Object.keys(LANGUAGE_COLORS).length).toBeGreaterThan(0)
})
test('each color is a string with classes', () => {
for (const [, color] of Object.entries(LANGUAGE_COLORS)) {
expect(typeof color).toBe('string')
expect(color.length).toBeGreaterThan(0)
expect(color).toContain(' ')
}
})
test('includes Other language color', () => {
expect(LANGUAGE_COLORS).toHaveProperty('Other')
})
test('all colors contain Tailwind class patterns', () => {
for (const color of Object.values(LANGUAGE_COLORS)) {
// Colors should contain class names like bg-, text-, border-, etc
expect(/[a-z]+-/.test(color)).toBe(true)
}
})
test('color format is consistent', () => {
const colorValues = Object.values(LANGUAGE_COLORS)
const lengths = new Set(colorValues.map((c) => c.split(' ').length))
// All colors should have similar number of parts
expect(lengths.size).toBeGreaterThanOrEqual(1)
})
})
describe('strings export', () => {
test('strings object exists', () => {
expect(strings).toBeDefined()
expect(typeof strings).toBe('object')
})
test('strings is not null', () => {
expect(strings).not.toBeNull()
})
})
describe('appConfig export', () => {
test('appConfig object exists', () => {
expect(appConfig).toBeDefined()
expect(typeof appConfig).toBe('object')
})
test('appConfig is not null', () => {
expect(appConfig).not.toBeNull()
})
test('appConfig has languages property', () => {
expect(appConfig).toHaveProperty('languages')
})
test('appConfig has languageColors property', () => {
expect(appConfig).toHaveProperty('languageColors')
})
test('appConfig languageColors is an object', () => {
expect(typeof appConfig.languageColors).toBe('object')
})
test('each languageColor has bg, text, border', () => {
for (const [, colors] of Object.entries(appConfig.languageColors)) {
expect(colors).toHaveProperty('bg')
expect(colors).toHaveProperty('text')
expect(colors).toHaveProperty('border')
}
})
})
describe('consistency', () => {
test('getLanguageColor uses appConfig.languageColors', () => {
for (const lang of Object.keys(appConfig.languageColors)) {
const color = getLanguageColor(lang)
expect(color).toBeDefined()
expect(color).toContain(appConfig.languageColors[lang as keyof typeof appConfig.languageColors].bg)
}
})
test('LANGUAGE_COLORS matches appConfig.languageColors', () => {
expect(Object.keys(LANGUAGE_COLORS)).toEqual(Object.keys(appConfig.languageColors))
})
test('LANGUAGES array matches appConfig.languages', () => {
expect(LANGUAGES).toEqual(appConfig.languages)
})
})
})