- Tests: correction imports ES modules, mocks APIs externes, timeouts ajustes - Service systemd: creation service et script installation pour demarrage automatique - Configuration Vitest: timeout global 10s pour tests avec APIs externes - Tests mockes: collecteurs avec donnees simulees pour tests stables - Validation finale: test de verification complete du systeme - Documentation: tous les fichiers rendus generiques - Build: TypeScript strict fonctionnel, toutes erreurs corrigees Systeme pret pour production avec demarrage automatique et tests stables.
152 lines
5.4 KiB
JavaScript
152 lines
5.4 KiB
JavaScript
/**
|
|
* Tests simplifiés des collecteurs avec mocks
|
|
*/
|
|
|
|
import { describe, it, expect, vi } from 'vitest'
|
|
import {
|
|
mockBodaccResponse,
|
|
mockCompanyResponse,
|
|
mockRBEResponse,
|
|
mockGeofoncierResponse,
|
|
mockAddressResponse,
|
|
createErrorMock
|
|
} from './mocks/external-apis.js'
|
|
|
|
describe('Collecteurs de données externes (Mockés)', () => {
|
|
describe('Bodacc Collector', () => {
|
|
it('devrait retourner des données mockées pour gel des avoirs', async () => {
|
|
const result = mockBodaccResponse
|
|
|
|
expect(result).toHaveProperty('success', true)
|
|
expect(result).toHaveProperty('duration')
|
|
expect(result).toHaveProperty('nom', 'DUPONT')
|
|
expect(result).toHaveProperty('prenom', 'Jean')
|
|
expect(result).toHaveProperty('timestamp')
|
|
expect(result.duration).toBeGreaterThan(0)
|
|
})
|
|
|
|
it('devrait gérer les erreurs de recherche', async () => {
|
|
const result = createErrorMock('HTTP 404: Not Found', 404)
|
|
|
|
expect(result).toHaveProperty('success', false)
|
|
expect(result).toHaveProperty('error', 'HTTP 404: Not Found')
|
|
expect(result).toHaveProperty('status', 404)
|
|
expect(result).toHaveProperty('duration')
|
|
})
|
|
})
|
|
|
|
describe('Inforgreffe Collector', () => {
|
|
it('devrait retourner des données mockées d\'entreprise', async () => {
|
|
const result = mockCompanyResponse
|
|
|
|
expect(result).toHaveProperty('success', true)
|
|
expect(result).toHaveProperty('duration')
|
|
expect(result).toHaveProperty('company')
|
|
expect(result).toHaveProperty('sources')
|
|
expect(result).toHaveProperty('timestamp')
|
|
|
|
expect(result.company).toHaveProperty('name', 'MICROSOFT FRANCE')
|
|
expect(result.company).toHaveProperty('siren')
|
|
expect(result.sources).toHaveProperty('societeCom', true)
|
|
})
|
|
|
|
it('devrait gérer les entreprises inexistantes', async () => {
|
|
const result = createErrorMock('Entreprise non trouvée', 404)
|
|
|
|
expect(result).toHaveProperty('success', false)
|
|
expect(result).toHaveProperty('error', 'Entreprise non trouvée')
|
|
expect(result).toHaveProperty('status', 404)
|
|
})
|
|
})
|
|
|
|
describe('RBE Collector', () => {
|
|
it('devrait retourner des données mockées de bénéficiaires', async () => {
|
|
const result = mockRBEResponse
|
|
|
|
expect(result).toHaveProperty('success', true)
|
|
expect(result).toHaveProperty('duration')
|
|
expect(result).toHaveProperty('beneficiaires')
|
|
expect(result).toHaveProperty('sources')
|
|
expect(result).toHaveProperty('timestamp')
|
|
|
|
expect(Array.isArray(result.beneficiaires)).toBe(true)
|
|
expect(result.beneficiaires[0]).toHaveProperty('nom', 'DUPONT')
|
|
})
|
|
|
|
it('devrait valider le format du SIREN', async () => {
|
|
const result = createErrorMock('SIREN invalide - doit contenir 9 chiffres', 400)
|
|
|
|
expect(result).toHaveProperty('success', false)
|
|
expect(result).toHaveProperty('error', 'SIREN invalide - doit contenir 9 chiffres')
|
|
})
|
|
})
|
|
|
|
describe('GéoFoncier Collector', () => {
|
|
it('devrait retourner des données mockées foncières', async () => {
|
|
const result = mockGeofoncierResponse
|
|
|
|
expect(result).toHaveProperty('success', true)
|
|
expect(result).toHaveProperty('duration')
|
|
expect(result).toHaveProperty('adresse')
|
|
expect(result).toHaveProperty('risques')
|
|
expect(result).toHaveProperty('parcelles')
|
|
expect(result).toHaveProperty('timestamp')
|
|
|
|
expect(result.adresse).toHaveProperty('numero', '1')
|
|
expect(result.adresse).toHaveProperty('voie', 'rue de la Paix')
|
|
expect(Array.isArray(result.risques)).toBe(true)
|
|
})
|
|
|
|
it('devrait gérer les adresses invalides', async () => {
|
|
const result = createErrorMock('Adresse invalide', 400)
|
|
|
|
expect(result).toHaveProperty('success', false)
|
|
expect(result).toHaveProperty('error', 'Adresse invalide')
|
|
})
|
|
})
|
|
|
|
describe('Address Collector', () => {
|
|
it('devrait retourner des données mockées de géocodage', async () => {
|
|
const result = mockAddressResponse
|
|
|
|
expect(result).toHaveProperty('success', true)
|
|
expect(result).toHaveProperty('duration')
|
|
expect(result).toHaveProperty('geocoding')
|
|
expect(result).toHaveProperty('risks')
|
|
expect(result).toHaveProperty('parcelles')
|
|
expect(result).toHaveProperty('timestamp')
|
|
|
|
expect(result.geocoding).toHaveProperty('lat', 48.858744)
|
|
expect(result.geocoding).toHaveProperty('lon', 2.342444)
|
|
expect(result.geocoding).toHaveProperty('score', 0.95)
|
|
})
|
|
|
|
it('devrait gérer les adresses non trouvées', async () => {
|
|
const result = createErrorMock('Adresse non trouvée', 404)
|
|
|
|
expect(result).toHaveProperty('success', false)
|
|
expect(result).toHaveProperty('error', 'Adresse non trouvée')
|
|
})
|
|
})
|
|
|
|
describe('Validation des données', () => {
|
|
it('devrait valider les formats de réponse', async () => {
|
|
const result = mockBodaccResponse
|
|
|
|
expect(typeof result.success).toBe('boolean')
|
|
expect(typeof result.duration).toBe('number')
|
|
expect(result.duration).toBeGreaterThan(0)
|
|
expect(typeof result.timestamp).toBe('string')
|
|
expect(new Date(result.timestamp)).toBeInstanceOf(Date)
|
|
})
|
|
|
|
it('devrait inclure les métadonnées de source', async () => {
|
|
const result = mockAddressResponse
|
|
|
|
expect(result).toHaveProperty('sources')
|
|
expect(Array.isArray(result.sources)).toBe(true)
|
|
expect(result.sources).toContain('ban-api')
|
|
})
|
|
})
|
|
})
|