RSpec.shared_examples "an InternalPolicy dependant request" do |resource|
  let(:user) { create(:user) }

  context "when user is a single_resource_admin" do
    before do
      user.add_role(:single_resource_admin, resource)
      sign_in user
      allow(InternalPolicy).to receive(:new).and_call_original
    end

    it "responds with 200 OK" do
      request
      expect(response).to have_http_status(:success)
      expect(InternalPolicy).to have_received(:new).with(user, resource)
    end
  end

  context "when user is not an admin", proper_status: true do
    before do
      sign_in user
      allow(InternalPolicy).to receive(:new).and_call_original
    end

    it "responds with 404 not_found" do
      request
      expect(response).to have_http_status(:not_found)
      expect(InternalPolicy).to have_received(:new).with(user, resource)
    end
  end
end
