Este teste é extremamente simples e deveria ser direto… mas…
Uma configuração de plugin está mudando das que configurei.
Quando o Javascript é executado como resultado do carregamento do Composer, o valor da configuração definido anteriormente no bloco de aceitação não é mais o mesmo!
Deveria ser “user” como definido no código do teste, mas se registrado no console, é isso que vejo, e por que o teste falha:
Eu testei isso localmente. Parece que há alguns fatores em jogo:
O objeto siteSettings ao qual você está se referindo é obtido pelo inicializador e, em seguida, usado em uma chamada modifyClass:
Os inicializadores são executados novamente para cada teste. O problema é que não temos como “reiniciar” quaisquer chamadas modifyClass que foram feitas por testes anteriores. Nossa solução é o parâmetro pluginId - isso significa que apenas a primeira chamada modifyClassem toda a suíte de testes é realmente usada. Chamadas para modifyClass de inicializadores em testes futuros são ignoradas.
Normalmente, isso é bom - o código dentro de uma invocação modifyClass não tende a mudar em cada execução de teste. No entanto, neste caso, você está referenciando a referência siteSettings do escopo dos inicializadores.
O tl;dr aqui é: em testes, essa implementação significa que o modifyClass ficará preso com as configurações do site daquele teste que foi o primeiro a ser executado.
A solução é usar uma referência siteSettings “em tempo de execução” em vez de “tempo de inicializador”. Podemos usar a do próprio model:composer. Esta diferença faz com que os testes passem para mim:
Há outro problema aqui que suspeito ser pela mesma razão:
currentUser também é definido no inicializador.
Se o teste errado for executado em segundo lugar, isso é avaliado e não está mais definido, então os testes quando executados juntos podem falhar “metade” do tempo.
Acho que o modelo Composer tem user, então mudarei para ele…