class RuboCop::Cop::Primer::TestSelector

Primer::BaseComponent.new(test_selector: “the-component”)
Good:
Primer::BaseComponent.new(data: { “test-selector”: “the-component” })
Bad:
a ‘data-test-selector` attribute.
Prefer the `test_selector` argument over manually generating

def on_send(node)

def on_send(node)
  return unless valid_node?(node)
  return unless node.arguments?
  kwargs = node.arguments.last
  return unless kwargs.type == :hash
  data_arg = kwargs.pairs.find { |kwarg| kwarg.key.value == :data }
  return if data_arg.nil?
  return unless data_arg.value.type == :hash
  hash = data_arg.child_nodes.find { |arg| arg.type == :hash }
  return unless hash
  test_selector = hash.pairs.find do |pair|
    pair.key.value == :"test-selector" || pair.key.value == "test-selector"
  end
  return unless test_selector
  add_offense(data_arg, message: INVALID_MESSAGE)
end