summaryrefslogtreecommitdiff
path: root/tooling/danger/user_types.rb
blob: 8320c43ae93f49bb0c699488c2065796153ac4bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# frozen_string_literal: true

module Tooling
  module Danger
    module UserTypes
      FILE_PATH = "app/models/concerns/has_user_type.rb"
      BOT_USER_TYPES_CHANGE_INDICATOR_REGEX = %r{BOT_USER_TYPES}.freeze
      BOT_USER_TYPES_CHANGED_WARNING = <<~MSG
        You are changing BOT_USER_TYPES in `app/models/concerns/has_user_type.rb`.
        If you are adding or removing new bots, remember to update the `active_billable_users` index with the new value.
        If the bot is not billable, remember to make sure that it's not counted as a billable user.
      MSG

      def bot_user_types_change_warning
        return unless impacted?

        warn BOT_USER_TYPES_CHANGED_WARNING if bot_user_types_impacted?
      end

      private

      def impacted?
        helper.modified_files.include?(FILE_PATH)
      end

      def bot_user_types_impacted?
        helper.changed_lines(FILE_PATH).any? { |change| change =~ BOT_USER_TYPES_CHANGE_INDICATOR_REGEX }
      end
    end
  end
end