When(/^I add an event$/) do
  @chosen_event_artist = "Aaron Kramer"
  @chosen_event_name = "Watir Test"
  @chosen_event_date = "2014-07-13"
  Support::Helpers::ScenarioVariables.add_scenario_variable("chosen_event_artist: ", @chosen_event_artist)
  Support::Helpers::ScenarioVariables.add_scenario_variable("chosen_event_name: ", @chosen_event_name)
  Support::Helpers::ScenarioVariables.add_scenario_variable("chosen_event_date: ", @chosen_event_date)

  on(Workstation::AnalyticsOverviewPage) do |page|
    page.wait_for_any_graph_to_load
    page.add_event
    page.wait_until { page.event_name? }
    page.event_name = @chosen_event_name
    page.event_date = @chosen_event_date
    page.active_date_on_calendar # to fire the correct click event
    page.artist_name = @chosen_event_artist
    page.first_suggested_artist_element.when_present.element.click
    page.event_category = "Tour Dates"
    page.save_event
  end
end

Then(/^the event should be added$/) do
  on(Workstation::AnalyticsOverviewPage) do |page|
    page.wait_until_an_event_line_is_present # wait until first line is present
    page.refresh # Line isn't being rendered correctly. Refresh so we can hover:
    page.wait_until_an_event_line_is_present
    page.line_corresponding_to_date(@chosen_event_date).element.fixed_hover
    page.wait_until { page.event_tooltip? }
    @created_event_id = page.last_event_desc_element.attribute "id"
    puts "Artist: #{page.event_title}"
    puts "Event name: #{page.last_event_desc}"
    puts "Event id attribute: #{@created_event_id}"
    expect(page.event_title).to eq(@chosen_event_artist)
    expect(page.last_event_desc).to eq(@chosen_event_name)
  end
end

When(/^I delete the event$/) do
  on(Workstation::AnalyticsOverviewPage) do |page|
    page.wait_until_an_event_line_is_present
    page.click_line_corresponding_to_date @chosen_event_date
    # Let's verify the last button has the correct ID, then delete it
    page.wait_until { page.delete_elements.count >= 1 }
    last_id = page.delete_elements.last.attribute "id"
    puts "id of the last button: #{last_id}"
    expect(last_id).to eq(@created_event_id)
    page.delete_all_events # to ensure that modal disappears & event line is deleted
  end
end

Then(/^the event should be deleted$/) do
  on(Workstation::AnalyticsOverviewPage) do |page|
    page.wait_until(
      PageObject.default_page_wait,
      "Marketable event line for #{@chosen_event_date} was not deleted!"
    ) do
      !page.line_corresponding_to_date(@chosen_event_date) # Method returns nil when line disappears
    end
  end
end
