When(/^I search for (.*) in the add a song box$/) do |search_term|
  on(ReactWorkstation::ReactComparisonToolPage) do |page|
    page.search_for_a_song(search_term)
  end
end

When(/^I search and select (.*) in the add a song box$/) do |search_term|
  on(ReactWorkstation::ReactComparisonToolPage) do |page|
    page.search_and_select_a_song(search_term)
  end
end

When(/^I choose (.*) in the comparison date filter$/) do |period|
  on(ReactWorkstation::ReactComparisonToolPage) do |page|
    page.select_period(period)
  end
end

Then(/^I see that the comparison tool page works$/) do
  on(ReactWorkstation::ReactComparisonToolPage) do |page|
    page.wait_until { page.frontend_analytics_element.present? }
    expect(page.frontend_analytics_element.present?).to be true
  end
end

Then("I see one result displayed") do
  on(ReactWorkstation::ReactComparisonToolPage) do |page|
    page.wait_until { page.search_result_elements.count == 1 }
    expect(page.search_result_elements.count).to eq(1)
  end
end

Then("I see a performance over time chart with some data") do
  on(ReactWorkstation::ReactComparisonToolPage) do |page|
    expect(page.performance_over_time_chart.present?).to be true
  end
end

And("I see a Source of Streams chart with some data") do
  on(ReactWorkstation::ReactComparisonToolPage) do |page|
    page.wait_until { page.streams_bar_elements.any? }
    expect(page.streams_bar_elements.count).to eq(4)
  end
end

And("I see a Streams by Subscription chart with some data") do
  on(ReactWorkstation::ReactComparisonToolPage) do |page|
    expect(page.streams_by_subscription_chart.present?).to be true
  end
end

And("I see a Top Playlists chart with some data") do
  on(ReactWorkstation::ReactComparisonToolPage) do |page|
    page.wait_until { page.top_playlist_elements.any? }
    expect(page.top_playlist_elements.count).to be_between(1, 5).inclusive
  end
end

And("I see a Top Territories chart with some data") do
  on(ReactWorkstation::ReactComparisonToolPage) do |page|
    page.top_territories_populated?
  end
end

And("I see the Top Audience charts with some data") do
  on(ReactWorkstation::ReactComparisonToolPage) do |page|
    page.top_audience_populated?
  end
end
