2

ascts_as_tenant を使用したマルチテナンシー アプリがあります。スコープをテストする仕様を書こうとしています。そこで、User.active の出力をテストしたいと思います。

一般に、これは次のようなコードでうまく機能します

it "returns a correct active user" do
  user_active = Fabricate(:user, curremp: true)
  user_scope2_active = Fabricate(:user, curremp: true)
  user_not_active = Fabricate(:user, account_id: user_active.account_id, curremp: false)
  expect(User.active).should include(user_active)
  #expect(User.active).to_not include(user_scope2_active)
  expect(User.active).to_not include(user_not_active) 
end

ただし、acts_as_tenant 機能を使用して current_tenant を使用し、1 つのテナントのアクティブなユーザーのみを一覧表示することを検証する方法がわかりません。これは以前に行われたと確信していますが、まだドキュメントを見つけていません。

したがって、acts_as_tenant ユーザー モデルを rspec でテストするにはどうすればよいですか?

4

2 に答える 2

0

テナントで何かおかしなことが起こった場合に備えて、正しいエラー メッセージがスローされるようにしておくと役立つことがわかりました。次に例を示します。

    before(:each) do
      ActsAsTenant.current_tenant = FactoryBot.create(:account)
    end

    it 'is not valid without an account' do
      foo = FactoryBot.create(:foo)
      expect { foo.account = nil }.to raise_error ActsAsTenant::Errors::TenantIsImmutable
    end
于 2021-01-06T20:29:38.757 に答える