Module sites (#8)
All checks were successful
Auto Tag Develop / tag (push) Successful in 6s

| Numéro du ticket | Titre du ticket |
|------------------|-----------------|
|                  |                 |

## Description de la PR

## Modification du .env

## Check list

- [x] Pas de régression
- [x] TU/TI/TF rédigée
- [x] TU/TI/TF OK
- [ ] CHANGELOG modifié

Co-authored-by: Matthieu <mtholot19@gmail.com>
Reviewed-on: MALIO-DEV/Coltura#8
Co-authored-by: tristan <tristan@yuno.malio.fr>
Co-committed-by: tristan <tristan@yuno.malio.fr>
This commit was merged in pull request #8.
This commit is contained in:
2026-04-20 15:31:58 +00:00
committed by Autin
parent 6b4868b261
commit 6cf5ef4cfc
77 changed files with 7739 additions and 80 deletions

View File

@@ -0,0 +1,42 @@
import { describe, it, expect } from 'vitest'
import { isValidSiteColor } from '../color'
describe('isValidSiteColor', () => {
it('accepte un hex majuscule', () => {
expect(isValidSiteColor('#ABCDEF')).toBe(true)
})
it('accepte un hex minuscule', () => {
expect(isValidSiteColor('#abcdef')).toBe(true)
})
it('accepte un hex mixte', () => {
expect(isValidSiteColor('#0a1B2c')).toBe(true)
})
it('accepte les couleurs fixtures du projet', () => {
expect(isValidSiteColor('#056CF2')).toBe(true)
expect(isValidSiteColor('#F3CB00')).toBe(true)
expect(isValidSiteColor('#74BF04')).toBe(true)
})
it('rejette un nom CSS', () => {
expect(isValidSiteColor('red')).toBe(false)
})
it('rejette un hex court', () => {
expect(isValidSiteColor('#FFF')).toBe(false)
})
it('rejette un hex sans diese', () => {
expect(isValidSiteColor('FFFFFF')).toBe(false)
})
it('rejette un caractere non hex', () => {
expect(isValidSiteColor('#12345G')).toBe(false)
})
it('rejette une chaine vide', () => {
expect(isValidSiteColor('')).toBe(false)
})
})

View File

@@ -0,0 +1,19 @@
/**
* Utilitaires de couleur partages.
*
* Aligne sur la regex backend stricte #RRGGBB (voir Site.php).
*/
const HEX_COLOR_REGEX = /^#[0-9A-Fa-f]{6}$/
/**
* Valide qu'une chaine respecte le format #RRGGBB strict (7 caracteres,
* 6 chiffres hexadecimaux apres le #). Tolere la casse (majuscules,
* minuscules, mixte).
*
* Utilise cote front par SiteDrawer pour bloquer le submit avant l'envoi
* backend — miroir du pattern Symfony Assert\Regex sur Site::$color.
*/
export function isValidSiteColor(hex: string): boolean {
return HEX_COLOR_REGEX.test(hex)
}