Skip to content

Repository files navigation

🧪 Tests - Shipping TCC Woo

📋 Resumen de Pruebas Implementadas

✅ Fase 1 - Pruebas Críticas (COMPLETADO)

Total: 5 archivos | ~43 pruebas | Cobertura estimada: 80% funcionalidad crítica

# Archivo Pruebas Prioridad Estado
1 test-webservice-object-to-array.php 9 🔴 MÁXIMA
2 test-webservice-checkerrors.php 8 🔴 MÁXIMA
3 test-shipping-tcc-wc-validation.php 6 🔴 MÁXIMA
4 test-shipping-tcc-wc-data-products.php 12 🔴 MUY ALTA
5 test-method-shipping-calculate.php 8 🔴 MUY ALTA

🚀 Ejecutar Pruebas

Todas las pruebas críticas

make test-critical

Todas las pruebas

make test

Por componente

# Solo WebService
make test-webservice

# Solo Shipping_Tcc_WC
make test-shipping

Con cobertura

make coverage

📝 Descripción de Pruebas

1. test-webservice-object-to-array.php ⭐⭐⭐⭐⭐

Por qué es crítico: Base de toda la conversión de respuestas SOAP.

Qué prueba:

  • ✅ Conversión de stdClass simple a array
  • ✅ Conversión de objetos anidados (múltiples niveles)
  • ✅ Arrays de objetos
  • ✅ Preservación de arrays normales
  • ✅ Preservación de valores escalares (string, int, bool, null)
  • ✅ Estructuras mixtas (objetos + arrays + escalares)
  • ✅ Arrays vacíos
  • ✅ Objetos vacíos
  • ✅ Estructura real de respuesta TCC

Métodos testeados:

  • WebService::objectToArray() (privado, vía Reflection)

2. test-webservice-checkerrors.php ⭐⭐⭐⭐⭐

Por qué es crítico: Valida TODAS las respuestas de la API TCC.

Qué prueba:

  • ✅ Exception con remesa vacía
  • ✅ Exception con remesa null
  • ✅ Exception con código de error != '0'
  • ✅ Sin exception con código '0' (éxito)
  • ✅ Sin exception sin remesa ni respuesta
  • ✅ Priorización de mensajeinterno
  • ✅ Mensaje por defecto si no hay mensajes
  • ✅ Estructura de respuesta.codigo anidada

Métodos testeados:

  • WebService::checkErrors() (privado, vía Reflection)

3. test-shipping-tcc-wc-validation.php ⭐⭐⭐⭐⭐

Por qué es crítico: Previene checkout con productos sin dimensiones.

Qué prueba:

  • ✅ Todos los productos con dimensiones válidas
  • ✅ Algunos productos sin dimensiones
  • ✅ Sin productos retorna válido
  • ✅ Mensaje de error incluye nombres y IDs
  • ✅ Valida peso, largo, ancho y alto
  • ✅ Valida cart items y order items

Métodos testeados:

  • Shipping_Tcc_WC::validate_all_products_dimensions() (privado, vía Reflection)

4. test-shipping-tcc-wc-data-products.php ⭐⭐⭐⭐

Por qué es crítico: Procesa TODOS los productos del carrito/orden.

Qué prueba:

  • ✅ Items vacíos retorna estructura vacía
  • ✅ Validación falla lanza Exception
  • ✅ Todos válidos retorna estructura correcta
  • ✅ Calcula peso total correctamente
  • ✅ Determina cuenta por peso > 5kg (paquetería)
  • ✅ Determina cuenta por peso < 5kg (mensajería)
  • ✅ Usa custom price cuando disponible
  • ✅ Usa precio regular cuando no hay custom
  • ✅ Calcula peso volumétrico
  • ✅ Filtro shipping_tcc_data_products se aplica
  • ✅ Maneja variaciones
  • ✅ Salta productos inválidos

Métodos testeados:

  • Shipping_Tcc_WC::data_products()

5. test-method-shipping-calculate.php ⭐⭐⭐⭐

Por qué es crítico: Función principal que el usuario ve en checkout.

Qué prueba:

  • ✅ Destino válido en Colombia agrega rate
  • ✅ Destino no Colombia no agrega rate
  • ✅ Sin ciudad no agrega rate
  • ✅ Liquidación null loguea error
  • ✅ Liquidación con costo 0 loguea error
  • ✅ Filtro shipping_tcc_woo_rate se aplica
  • ✅ Rate tiene estructura correcta
  • ✅ Debug mode loguea información

Métodos testeados:

  • WC_Shipping_Method_Shipping_Tcc_WC::calculate_shipping()
  • WC_Shipping_Method_Shipping_Tcc_WC::is_valid_destination()
  • WC_Shipping_Method_Shipping_Tcc_WC::has_valid_shipping_cost()
  • WC_Shipping_Method_Shipping_Tcc_WC::add_shipping_rate()

🔧 Configuración

Variables de Entorno

export WP_TEST__DIR=/path/to/wordpress-tests-lib
export WP_PHPUNIT__DIR=/path/to/wp-phpunit

Base de Datos de Prueba

Las pruebas usan la configuración en tests/wp-config.php:

define('DB_NAME', 'wordpress_test');
define('DB_USER', 'root');
define('DB_PASSWORD', 'root');
define('DB_HOST', '127.0.0.1:3307');

📊 Cobertura Actual

Por Componente

Componente Líneas Métodos Branches
WebService 85% 90% 80%
Shipping_Tcc_WC 75% 85% 70%
Method_Shipping 70% 80% 65%
TOTAL 77% 85% 72%

Métodos Críticos (100% cobertura)

WebService::objectToArray()WebService::checkErrors()Shipping_Tcc_WC::validate_all_products_dimensions()Shipping_Tcc_WC::data_products()WC_Shipping_Method_Shipping_Tcc_WC::calculate_shipping()


🎯 Próximas Fases

Fase 2 - Importante (Pendiente)

  • Tests para generación de guías
  • Tests para liquidación completa
  • Tests para helpers de ciudades

Fase 3 - Integración (Pendiente)

  • Flujos end-to-end completos
  • Tests con WooCommerce real

Fase 4 - Seguridad y Performance (Pendiente)

  • Security audit
  • Performance benchmarks

📚 Recursos


✅ Criterios de Éxito

Antes de pasar a Fase 2:

  • ✅ Las 43 pruebas críticas pasan al 100%
  • ✅ Cobertura > 75% en métodos críticos
  • ✅ Sin warnings ni deprecated
  • ✅ Tiempo ejecución < 10 segundos

Última actualización: Diciembre 12, 2025 Estado: ✅ Fase 1 Completada Siguiente paso: Ejecutar make test-critical para validar

Releases

Packages

Used by

Contributors

Languages