# frozen_string_literal: true
#
module RuboCop
  module Cop
    # Cop that blacklists the usage of Group.public_or_visible_to_user
    class GroupPublicOrVisibleToUser < RuboCop::Cop::Cop
      MSG = '`Group.public_or_visible_to_user` should be used with extreme care. ' \
        'Please ensure that you are not using it on its own and that the amount ' \
        'of rows being filtered is reasonable.'

      def_node_matcher :public_or_visible_to_user?, <<~PATTERN
        (send (const nil? :Group) :public_or_visible_to_user ...)
      PATTERN

      def on_send(node)
        return unless public_or_visible_to_user?(node)

        add_offense(node, location: :expression)
      end
    end
  end
end
