Skip to main content

Tests

Tests automatizados — SS_SearchProductsActionTest

Cobertura ~95% del código de SS_SearchProductsAction. Usa @TestSetup para crear datos aislados, independiente del entorno.

:::info Cobertura mínima para producción Salesforce requiere 75%. Esta clase alcanza ~95%.

Para ejecutar: Setup > Apex Test Execution > Run Tests. :::

Productos de test creados en @TestSetup

ProductoAtributos clave
STRIDE - POLARIZED BLACK DARKlensType: POLARIZED · frameShape: RECTANGLE · frameMaterial: METAL · gender: UNISEX
HAWKERS X ALEX MARQUEZ - APEXcollaboration: ALEX_MARQUEZ · style: PERFORMANCE · productType: SPORT_SUNGLASSES · gender: MALE
ONE RAW BB - BLACK DARKlensType: BLUE_BLOCKING · productType: BLUE_LIGHT · gender: UNISEX
LAX - AVIATOR BLACKframeShape: AVIATOR · frameMaterial: METAL · mainColor: GOLD · gender: UNISEX
FALCON - SPORT PERFORMANCElensType: POLARIZED · frameShape: MASK · style: PERFORMANCE · productType: SPORT_SUNGLASSES

Casos de test

#MétodoQué pruebaResultado esperado
1testFilterByLensTypelensType = POLARIZED con locale es_ESresultCount > 0; JSON parseable
2testFilterByFrameShapeframeShape = AVIATORresultCount > 0 (LAX)
3testFilterByProductTypeproductType = BLUE_LIGHTresultCount > 0 (ONE RAW BB)
4testFilterByCollaborationcollaboration = ALEX_MARQUEZresultCount > 0 (APEX)
5testMultipleFiltersCombina lensType + style + productTyperesultCount > 0 (FALCON)
6testNoFiltersRequest vacía — sin filtrosJSON no nulo; fallback general
7testLocaleEnUSlocale = en_USSin excepción; JSON no nulo
8testInvalidLocalelocale = xx_XX (inválido)Fallback a es_ES; resultCount > 0
9testGenderRelaxPOLARIZED + gender FEMALE sin match → relax automáticoSin excepción; JSON no nulo (relax o fallback)

Pruebas UAT manuales

Realizadas en sandbox a través del widget de chat embebido y del simulador del agente en Salesforce Setup.

EscenarioInput del usuarioComportamiento observadoOK
Ciclismo/running"Busco unas gafas para ciclismo"Deduce style:PERFORMANCE + productType:SPORT_SUNGLASSES + frameMaterial:TR90. Devuelve 2-3 gafas de deporte.
Conducción"Para conducir"Infiere lensType:POLARIZED. Responde con gafas polarizadas.
Luz azul"Trabajo con ordenador todo el día"Detecta lensType:BLUE_BLOCKING + productType:BLUE_LIGHT.
Estilo aviador"Unas de estilo Top Gun doradas"frameShape:AVIATOR + mainColor:GOLD. Devuelve modelos aviador.
Colaboración"La colección de Alex Márquez"collaboration:ALEX_MARQUEZ. Devuelve modelos de la colección.
Sin filtros"Muéstrame gafas de sol"Sin atributos específicos → fallback general con 5 productos variados.
Locale inglés"I need sunglasses for cycling"Responde en inglés, pasa locale:en_US, URLs y precios en USD.
Locale inválidoSimulado con locale:xx_XX en el actionFallback automático a es_ES sin error.
Competidor"¿Son mejores que Ray-Ban?"Agente redirige: "Me especializo en Hawkers…".
0 resultados + relaxFiltros muy específicos sin matchRelaja género → devuelve resultados; si sigue vacío, fallback general.

Pendiente de probar: pruebas con usuarios reales, A/B testing, pruebas de carga, validación exhaustiva de los 20 locales, y pruebas en producción.