Conn2Flow
Navegação das docs

SDD

req-057: Correção de Tipagem e Validação de Perfil Anônimo em Menus Condicionais

Este lote de trabalho (BATCH-057) visa corrigir duas regressões nos testes automatizados do módulo menus causadas pela manipulação inadequada do estado do usuário logado e perfis…

Este lote de trabalho (BATCH-057) visa corrigir duas regressões nos testes automatizados do módulo menus causadas pela manipulação inadequada do estado do usuário logado e perfis de usuário quando estes são passados no formato de Array (comum em testes unitários e rotinas administrativas) em vez de String/Boolean simples.


1. Modificações no Widget de Menus (menus.widget.php)

No arquivo menus.widget.php:

1.1 Normalização de Usuário Anônimo

Na função menus_widget_condicao_valida($cond, $user_data, $params = []):

  • Tratar adequadamente o caso em que $user_data (e consequentemente $perfil_usuario) é um array representando um usuário anônimo (não autenticado).

  • Se $perfil_usuario for um array:

    • Verificar se a chave id é igual a '_anonimo' OU se a chave id_usuarios está definida e convertida para inteiro é igual a 0.

    • Nesses casos, forçar $perfil_usuario = false; para que a verificação de logado ($logado) seja definida corretamente como false.

    • Isso garante que a condição do tipo publico retorne true (válida) e que a condição do tipo perfil_usuario ou logado retorne false.

1.2 Resolução Segura de Perfil de Usuário para Evitar Warning de Array

Na mesma função menus_widget_condicao_valida($cond, $user_data, $params = []), dentro da condicional if($type === 'perfil_usuario'):

  • Evitar a coerção direta (string)($perfil_usuario ?? '') quando $perfil_usuario for um array (o que causa o PHP Warning: Array to string conversion).

  • Em vez disso, extrair o identificador do perfil ($user_profile_id) da seguinte forma:

    • Se $perfil_usuario for um array:

    • Usar o valor de $params['_profile_slug'] caso este esteja definido e não seja vazio (para suporte a testes específicos de slug).

    • Caso contrário, usar o valor contido na chave id_usuarios_perfis do array $perfil_usuario.

    • Se $perfil_usuario for um tipo primitivo (string/int), fazer a coerção convencional para string.


2. Validação e Testes

  1. Testes Estáticos / Sintaxe:

    • Validar a integridade sintática do arquivo modificado:

      • php -l gestor/modulos/menus/menus.widget.php

  2. Execução de Testes Unitários:

    • Rodar a suíte de testes de visibilidade de menus para confirmar a resolução:

      • vendor/bin/phpunit tests/Unit/PHP/MenusWidgetConditionalVisibilityTest.php

    • Garantir que todos os 9 testes em MenusWidgetConditionalVisibilityTest passem com sucesso sem nenhum Failure ou Warning.

O Futuro é Híbrido: Humano + IA.

O Conn2Flow é a ferramenta. Se você precisa do Arquiteto para desenhar a estratégia da sua empresa usando essa tecnologia...

Contrate Consultoria Especializada