プラグインで `type: group` を使用してスペックを渡すことは可能ですか?

プラグインが type: group を使用する場合は、仕様が通るためにグループが作成されている必要があります(例:データベースのマイグレーション時、あるいは after_initialize など)。そうしないと、設定に存在しないグループが含まれるため、仕様が失敗してしまいます。私の解決策は、これらの type: group 設定を type: text に変更することでした。これにより、グループが存在しないことによる設定の失敗を防ぎ、let! を使って仕様内でグループを作成し、Group の仕様が実行される際にはグループが削除されるようにしました。

もしより良い方法があれば、ぜひ教えてほしいです。このケースでは、おそらく各用途でどのグループを使用するかを変更する必要は永遠にないでしょう。そのため、これらをプラグイン内でハードコーディングし、設定自体を不要にするという選択肢もあるかもしれません。

上記をどうやって突き止めたかについての独り言

私のプラグインには、一連のグループが必要です。ユーザーがグループに追加されると、私のモデル内で何らかのアクションが実行されます。本番環境と開発環境のデータベースでは問題なく動作しています。やったー! :tada:

問題は、仕様テストにおいて、グループが作成されてしまう場合(after_initialize で呼び出される関数や、マイグレーション中に実行されるフィクスチャで試しましたが)、それがコアの Group 仕様(例えば、特定の数の事前存在するグループがあることを期待する仕様など)を壊してしまうことです。逆に、グループが作成されない場合は、私の仕様テストが失敗してしまいます。

私は Group モデルで refresh_automatic_groups をオーバーライドし、私のグループを削除するようにしました。これにより、1 つのテストを除くすべてのテストが通るようになりました。しかし、私のグループ名にはいくつかの文字列が含まれており、その文字列を含むグループ名を持つ仕様は refresh_automatic_groups を呼び出さないため、そのテストだけが失敗しました。

そこで、そのテストを壊さない名前だけを使用するようにしました。

編集(再):しかし、今でも destroy_task_spec.rbgroup_controller でエラーが発生しています。

見落としている簡単なコツがあるのでしょうか、それともこのプラグインが自動的にグループを作成しないようにする必要があるのでしょうか?