module NavigationHelpers
  def path_to(path)
    path = path.to_sym
    args = []

    case path
    when /^landing$/i
      path = :home
    when /^(my )?workshop$/i
      path = :view_workshop
      args << TestState.last_conference.slug
      args << TestState.last_workshop.id
    when /^delete_workshop$/i
      args << TestState.last_conference.slug
      args << TestState.last_workshop.id
    when /^registration$/i
      path = :register
      args << TestState.last_conference.slug
    when /^(conference|register|workshops)$/i
      args << TestState.last_conference.slug
    when /^confirm(ation)?$/
      path = :confirm
      args << TestState.last_token
    when /^google maps$/
      path = /^https?:\/\/www\.google\.com\/maps\/place\/.*/
    end

    if path.is_a?(Symbol)
      path = Rails.application.routes.url_helpers.send("#{path}_path".to_sym, *args)
    end

    raise "Can't find mapping from \"#{path}\" to a path." unless path.present?

    return path
  end
end

World(NavigationHelpers)
