mirror of
https://github.com/Crosstalk-Solutions/project-nomad.git
synced 2026-03-28 03:29:25 +01:00
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
121 lines
3.0 KiB
TypeScript
121 lines
3.0 KiB
TypeScript
import { describe, it, expect } from 'vitest'
|
|
import { getAllDiskDisplayItems, getPrimaryDiskInfo } from '~/hooks/useDiskDisplayData'
|
|
import type { NomadDiskInfo } from '../../../types/system'
|
|
import type { Systeminformation } from 'systeminformation'
|
|
|
|
const mockDisks: NomadDiskInfo[] = [
|
|
{
|
|
name: 'sda',
|
|
totalSize: 1000000000,
|
|
totalUsed: 500000000,
|
|
percentUsed: 50,
|
|
model: 'Test Disk',
|
|
vendor: '',
|
|
rota: false,
|
|
tran: 'sata',
|
|
size: '1000000000',
|
|
filesystems: [],
|
|
},
|
|
]
|
|
|
|
const mockFsSize: Systeminformation.FsSizeData[] = [
|
|
{
|
|
fs: '/dev/sda1',
|
|
type: 'ext4',
|
|
size: 500000000,
|
|
used: 250000000,
|
|
available: 250000000,
|
|
use: 50,
|
|
mount: '/',
|
|
rw: true,
|
|
},
|
|
]
|
|
|
|
describe('getAllDiskDisplayItems', () => {
|
|
it('deve retornar items formatados com discos válidos', () => {
|
|
// Cenário
|
|
const disks = mockDisks
|
|
const fsSize = undefined
|
|
|
|
// Ação
|
|
const resultado = getAllDiskDisplayItems(disks, fsSize)
|
|
|
|
// Validação
|
|
expect(resultado).toHaveLength(1)
|
|
expect(resultado[0].label).toBe('sda')
|
|
expect(resultado[0].value).toBe(50)
|
|
expect(resultado[0].totalBytes).toBe(1000000000)
|
|
expect(resultado[0].usedBytes).toBe(500000000)
|
|
})
|
|
|
|
it('deve usar fallback para fsSize quando discos são undefined', () => {
|
|
// Cenário
|
|
const disks = undefined
|
|
const fsSize = mockFsSize
|
|
|
|
// Ação
|
|
const resultado = getAllDiskDisplayItems(disks, fsSize)
|
|
|
|
// Validação
|
|
expect(resultado).toHaveLength(1)
|
|
expect(resultado[0].label).toBe('/dev/sda1')
|
|
expect(resultado[0].value).toBe(50)
|
|
expect(resultado[0].totalBytes).toBe(500000000)
|
|
expect(resultado[0].usedBytes).toBe(250000000)
|
|
})
|
|
|
|
it('deve retornar array vazio quando ambos são undefined', () => {
|
|
// Cenário
|
|
const disks = undefined
|
|
const fsSize = undefined
|
|
|
|
// Ação
|
|
const resultado = getAllDiskDisplayItems(disks, fsSize)
|
|
|
|
// Validação
|
|
expect(resultado).toEqual([])
|
|
})
|
|
})
|
|
|
|
describe('getPrimaryDiskInfo', () => {
|
|
it('deve retornar totalSize e totalUsed do maior disco', () => {
|
|
// Cenário
|
|
const disks = mockDisks
|
|
const fsSize = undefined
|
|
|
|
// Ação
|
|
const resultado = getPrimaryDiskInfo(disks, fsSize)
|
|
|
|
// Validação
|
|
expect(resultado).not.toBeNull()
|
|
expect(resultado!.totalSize).toBe(1000000000)
|
|
expect(resultado!.totalUsed).toBe(500000000)
|
|
})
|
|
|
|
it('deve usar fallback para fsSize quando não há discos', () => {
|
|
// Cenário
|
|
const disks = undefined
|
|
const fsSize = mockFsSize
|
|
|
|
// Ação
|
|
const resultado = getPrimaryDiskInfo(disks, fsSize)
|
|
|
|
// Validação
|
|
expect(resultado).not.toBeNull()
|
|
expect(resultado!.totalSize).toBe(500000000)
|
|
expect(resultado!.totalUsed).toBe(250000000)
|
|
})
|
|
|
|
it('deve retornar null quando ambos são vazios', () => {
|
|
// Cenário
|
|
const disks: NomadDiskInfo[] = []
|
|
const fsSize: Systeminformation.FsSizeData[] = []
|
|
|
|
// Ação
|
|
const resultado = getPrimaryDiskInfo(disks, fsSize)
|
|
|
|
// Validação
|
|
expect(resultado).toBeNull()
|
|
})
|
|
})
|