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) é umarrayrepresentando um usuário anônimo (não autenticado). -
Se
$perfil_usuariofor um array:-
Verificar se a chave
idé igual a'_anonimo'OU se a chaveid_usuariosestá definida e convertida para inteiro é igual a0. -
Nesses casos, forçar
$perfil_usuario = false;para que a verificação de logado ($logado) seja definida corretamente comofalse. -
Isso garante que a condição do tipo
publicoretornetrue(válida) e que a condição do tipoperfil_usuariooulogadoretornefalse.
-
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_usuariofor umarray(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_usuariofor 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_perfisdo array$perfil_usuario. -
Se
$perfil_usuariofor um tipo primitivo (string/int), fazer a coerção convencional para string.
-
2. Validação e Testes
-
Testes Estáticos / Sintaxe:
-
Validar a integridade sintática do arquivo modificado:
-
php -l gestor/modulos/menus/menus.widget.php
-
-
-
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
MenusWidgetConditionalVisibilityTestpassem com sucesso sem nenhumFailureouWarning.
-