Impossible pour un plugin d'utiliser `type: group` et de passer des specs ?

Si un plugin utilise un type: group, il doit avoir créé le groupe (par exemple, lors de la migration de la base de données, ou peut-être dans after_initialize) pour que les tests passent (sinon, le test échoue car les paramètres incluent un groupe qui n’existe pas). Ma solution a été de transformer ces paramètres de type: group en type: text. Ainsi, les paramètres ne échouent pas parce que le groupe n’existe pas ; je peux créer les groupes dans mes tests avec let!, et les groupes disparaissent lorsque les tests Group s’exécutent.

S’il existe une meilleure approche, j’aimerais beaucoup l’entendre. Dans ce cas précis, je n’aurai probablement jamais besoin de changer le groupe utilisé pour chacune de ces finalités ; on pourrait donc les coder en dur dans le plugin et ne pas les traiter comme des paramètres du tout.

Réflexions sur la manière dont j’ai trouvé la solution ci-dessus

J’ai un plugin qui nécessite un ensemble de groupes. Lorsqu’un utilisateur est ajouté à un groupe, une action est déclenchée dans mon modèle. Cela fonctionne parfaitement dans les bases de données de production et de développement. Génial. :tada:

Le problème, c’est que pour les tests, soit les groupes sont créés (j’ai essayé de le faire dans une fonction appelée dans after_initialize et avec des fixtures exécutées pendant la migration), ce qui casse les tests principaux de Group (qui, par exemple, s’attendent à un certain nombre de groupes préexistants), soit les groupes ne sont pas créés, ce qui casse mes propres tests.

J’ai surchargé refresh_automatic_groups dans le modèle Group pour qu’il supprime mes groupes. Cela a résolu tous les tests sauf un, car certains de mes noms de groupes contiennent des chaînes similaires à celles vérifiées dans ce test, qui n’appelle pas refresh_automatic_groups.

Ma solution a donc été d’utiliser uniquement des noms qui ne cassent pas ce test.

EDIT (encore une fois) : mais j’ai maintenant toujours des erreurs dans destroy_task_spec.rb et dans le group_controller.

Y a-t-il une astuce simple que j’aurais manquée, ou dois-je simplement faire en sorte que ce plugin ne crée pas de groupes automatiquement ?