==================================================== TDD: ExecucaoStrategyFactory — variante SEPARACAO:WMS via configuracoes ==================================================== --- 1. variante_separacao='WMS' (JSON string, como vem do banco) -> SeparacaoWmsStrategy --- ✅ [PASS] createFromMissao() sem $ordenacao + configuracoes.variante_separacao=WMS -> SeparacaoWmsStrategy --- 2. configuracoes SEM a chave -> default atual (SeparacaoEnderecamentoStrategy), regressão zero --- ✅ [PASS] Sem variante_separacao -> Strategy default (AC1.4/AC8) ✅ [PASS] Strategy default NÃO é SeparacaoWmsStrategy --- 3. configuracoes vazio/null -> default atual --- ✅ [PASS] configuracoes=null -> Strategy default ✅ [PASS] configuracoes='' -> Strategy default --- 4. valor não reconhecido (typo/valor antigo) -> fallback silencioso pro default --- ✅ [PASS] variante_separacao='wms' (lowercase, não é literal exato) -> fallback default ✅ [PASS] variante_separacao='ANDAR' (valor não mapeado) -> fallback default --- 5. configuracoes já como array PHP (não string JSON) -> também funciona (defensivo) --- ✅ [PASS] configuracoes como array PHP com variante_separacao=WMS -> SeparacaoWmsStrategy --- 6. $ordenacao explícito continua tendo prioridade sobre configuracoes (callers pré-existentes) --- ✅ [PASS] $ordenacao='rota' explícito vence configuracoes.variante_separacao=WMS (SEPARACAO:ROTA) --- 7. Outro tipo de missão (CARREGAMENTO) ignora variante_separacao mesmo se presente --- ✅ [PASS] Tipo CARREGAMENTO não é afetado pela chave variante_separacao (aditivo/isolado) --- 8. Tipo/missão inválidos -> null (comportamento pré-existente preservado) --- ✅ [PASS] tipo_missao_id ausente -> null ✅ [PASS] tipo_missao_id desconhecido -> null --- 9. Hot path combinado: variante persiste do início ao fim SEM query nova (AC1.3) --- ✅ [PASS] Missão WMS -> fila ordenada por endereço (3,2) + legado ao fim (1), tudo derivado só de $missao->configuracoes ==================================================== RESULTADO GERAL: ✅ SUCESSO Passou: 13 Falhou: 0 ====================================================