class RuboCop::Cop::Rails::EnumUniqueness

enum status: [:active, :archived]
# good
enum status: [:active, :archived, :active]
# bad
enum status: { active: 0, archived: 1 }
# good
enum status: { active: 0, archived: 0 }
# bad
@example
Looks for duplicate values in enum declarations.

def enum_name(key)

def enum_name(key)
  case key.type
  when :sym, :str
    key.value
  else
    key.source
  end
end

def on_send(node)

def on_send(node)
  enum?(node) do |pairs|
    pairs.each do |pair|
      enum_values(pair) do |key, args|
        items = args.values
        next unless duplicates?(items)
        consecutive_duplicates(items).each do |item|
          add_offense(item, message: format(
            MSG, value: item.source, enum: enum_name(key)
          ))
        end
      end
    end
  end
end