Se um plugin usa type: group, ele deve ter o grupo criado (por exemplo, quando o banco de dados é migrado ou talvez em after_initialize) para que os testes passem (caso contrário, o teste falha porque as configurações incluem um grupo que não existe). Minha solução foi fazer com que essas configurações type: group fossem, em vez disso, type: text. Dessa forma, as configurações não falham porque o grupo não existe; eu posso criar os grupos nos meus testes usando let!, e os grupos são removidos quando os testes de Group são executados.
Se houver uma maneira melhor, adoraria saber. Argumentavelmente, para este caso, provavelmente nunca precisarei alterar qual grupo é usado para cada um desses propósitos, então eles poderiam ser simplesmente codificados no plugin e nem sequer ser configurações.
Divagações sobre como descobri o acima
Tenho um plugin que precisa de um conjunto de grupos. Quando um usuário é adicionado ao grupo, uma ação é executada no meu modelo. Funciona perfeitamente nos bancos de dados de produção e desenvolvimento. Yay! ![]()
O problema é que, para os testes, ou os grupos são criados (tentei fazer isso em uma função chamada em after_initialize e com fixtures executadas durante a migração), o que quebra os testes principais de Group (que, por exemplo, esperam que haja um certo número de grupos pré-existentes), ou os grupos não são criados, o que quebra meus testes.
Sobrescrevi refresh_automatic_groups no modelo Group e fiz com que ele excluísse meus grupos. Isso corrigiu todos os testes, exceto um, pois os nomes dos meus grupos incluem alguns que contêm essas strings e aquele teste não chama refresh_automatic_groups.
Então, minha solução foi usar apenas nomes que não quebram esse teste.
EDIT (Novamente): mas agora ainda tenho erros em destroy_task_spec.rb e no group_controller.
Existe algum truque simples que estou perdendo ou preciso apenas fazer com que este plugin não crie grupos automaticamente?