project-nomad/admin/inertia/__tests__/lib/classNames.test.ts
LuisMIguelFurlanettoSousa 7e0ae3ea83 test: adicionar suite inicial de testes unitários com Vitest
Adiciona 81 testes unitários cobrindo backend e frontend:

Backend (50 testes):
- utils/version: isNewerVersion, parseMajorVersion (14 testes)
- utils/misc: formatSpeed, toTitleCase, parseBoolean (17 testes)
- utils/fs: determineFileType, matchesDevice, sanitizeFilename (14 testes)
- validators/common: assertNotPrivateUrl - proteção SSRF (9 testes)

Frontend (27 testes):
- lib/classNames: concatenação condicional de classes (5 testes)
- lib/util: capitalizeFirstLetter, formatBytes, extractFileName (12 testes)
- hooks/useDiskDisplayData: getAllDiskDisplayItems, getPrimaryDiskInfo (6 testes)

Infraestrutura:
- Instala vitest, @testing-library/react, jsdom
- Configura vitest.config.ts com aliases para ~ e #app
- Script npm test:unit para rodar todos os testes

Closes #491
2026-03-23 11:53:55 -03:00

68 lines
1.5 KiB
TypeScript

import { describe, it, expect } from 'vitest'
import classNames from '~/lib/classNames'
describe('classNames', () => {
it('deve juntar múltiplas strings com espaço', () => {
// Cenário
const classes = ['foo', 'bar', 'baz']
// Ação
const resultado = classNames(...classes)
// Validação
expect(resultado).toBe('foo bar baz')
})
it('deve ignorar valores undefined', () => {
// Cenário
const classe1 = 'foo'
const classe2 = undefined
const classe3 = 'bar'
// Ação
const resultado = classNames(classe1, classe2, classe3)
// Validação
expect(resultado).toBe('foo bar')
})
it('deve ignorar strings vazias', () => {
// Cenário
const classe1 = 'foo'
const classe2 = ''
const classe3 = 'bar'
// Ação
const resultado = classNames(classe1, classe2, classe3)
// Validação
expect(resultado).toBe('foo bar')
})
it('deve retornar string vazia quando chamado sem argumentos', () => {
// Cenário
// (nenhum argumento)
// Ação
const resultado = classNames()
// Validação
expect(resultado).toBe('')
})
it('deve lidar com mix de strings e undefined', () => {
// Cenário
const classe1 = undefined
const classe2 = 'active'
const classe3 = undefined
const classe4 = 'visible'
const classe5 = undefined
// Ação
const resultado = classNames(classe1, classe2, classe3, classe4, classe5)
// Validação
expect(resultado).toBe('active visible')
})
})