d16c7e5541
Onglet « Carte » sur les fiches Client et Fournisseur (visible sous field_sales.tours.view et module actif) : tous les points géolocalisés du Tiers sur une carte Leaflet, pin ajustable (PATCH lat/lng + geoManual), adresses non géolocalisées listées à part. Composant réutilisable TierAddressMap. Écran de planification : point de départ choisi parmi les sites de l'utilisateur (MalioSelect) ou en adresse libre (autocomplete BAN), marqueur « maison » sur la carte et trace partant du départ. Le mode n'est dérivé du back qu'au premier chargement (les sauvegardes ne réécrasent plus le choix). Suppression de l'ajout d'étape « point libre » (bouton + modale) ; l'affichage des étapes custom existantes est conservé.
36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { describe, it, expect } from 'vitest'
|
|
import { siteFullAddress, siteOptionLabel, type StartSite } from '../startPoint'
|
|
|
|
function site(over: Partial<StartSite> = {}): StartSite {
|
|
return {
|
|
name: 'Châtellerault',
|
|
street: "14 allée d'Argenson",
|
|
postalCode: '86100',
|
|
city: 'Châtellerault',
|
|
...over,
|
|
}
|
|
}
|
|
|
|
describe('startPoint — siteFullAddress', () => {
|
|
it('utilise fullAddress du backend quand il est présent', () => {
|
|
expect(siteFullAddress(site({ fullAddress: "14 allée d'Argenson, 86100 Châtellerault" })))
|
|
.toBe("14 allée d'Argenson, 86100 Châtellerault")
|
|
})
|
|
|
|
it('recompose « rue, CP ville » quand fullAddress est absent', () => {
|
|
expect(siteFullAddress(site({ fullAddress: undefined })))
|
|
.toBe("14 allée d'Argenson, 86100 Châtellerault")
|
|
})
|
|
|
|
it('ignore les segments vides à la recomposition', () => {
|
|
expect(siteFullAddress({ name: 'X', street: '', postalCode: '79000', city: 'Niort' }))
|
|
.toBe('79000 Niort')
|
|
})
|
|
})
|
|
|
|
describe('startPoint — siteOptionLabel', () => {
|
|
it('formate « nom — code postal »', () => {
|
|
expect(siteOptionLabel(site())).toBe('Châtellerault — 86100')
|
|
})
|
|
})
|