# frozen_string_literal: true

module HtmlSelectorsHelpers
  # Maps a name to a selector. Used primarily by the
  #
  #   When /^(.+) within (.+)$/ do |step, scope|
  #
  # step definitions in web_steps.rb
  #
  def selector_for(locator)
    case locator

    when 'the page'
      'html > body'

      # Add more mappings here.
      # Here is an example that pulls values out of the Regexp:
      #
      #  when /^the (notice|error|info) flash$/
      #    ".flash.#{$1}"

      # You can also return an array to use a different selector
      # type, like:
      #
      #  when /the header/
      #    [:xpath, "//header"]

      # This allows you to provide a quoted selector as the scope
      # for "within" steps as was previously the default for the
      # web steps:
    when 'Account details'
      'form#edit_user'
    when 'video description'
      '#video_contents'
    when 'player'
      '#ytplayer'
    when 'Modal window'
      '.modal-body'
    when 'The Breadcrumb'
      '#not-sidebar-content'
    when 'Search'
      'form#search'
    when /^"(.+)"$/
      Regexp.last_match(1)

    else
      raise "Can't find mapping from \"#{locator}\" to a selector.\n" \
            "Now, go and add a mapping in #{__FILE__}"
    end
  end
end

World(HtmlSelectorsHelpers)
