Given(/^I am on the Project::DigitalProductOverviewPage for an incomplete product$/) do
  @project_id = 3_751_367
  @product_id = 2_079_490
  Support::Helpers::ScenarioVariables.add_scenario_variable("Project id: ", @project_id)
  Support::Helpers::ScenarioVariables.add_scenario_variable("Product id: ", @product_id)

  visit(Project::DigitalProductOverviewPage,
        using_params: { project_id: @project_id, product_id: @product_id,
                        queries: @url_queries })
end

When(/^I validate the digital product$/) do
  @browser.alert.ok if @browser.alert.exists?
  on(Project::DigitalProductBasePage).validate_product_element.when_present.click
end

Then(/^I see an error icon next to the (.*) section$/) do |section_name|
  on(Project::DigitalProductBasePage) do |page|
    page.wait_for_completeness_check
    expect(page.step_has_error?(section_name.to_snake_case)).to be true
  end
end

Then(/^I see errors on the digital product basics page$/) do
  on(Project::DigitalProductBasicsPage) do |page|
    expect(page.missing_information_alert?).to be true
    expect(page.field_error_elements).not_to be_empty
  end
end

Then(/^I see errors on the digital product artwork page$/) do
  on(Project::ProductArtworkPage) do |page|
    expect(page.missing_information_alert?).to be true
    expect(page.upload_success?).to be false
  end
end

Then(/^I see errors on the digital product tracks page$/) do
  on(Project::DigitalProductTracksPage) do |page|
    expect(page.missing_information_alert?).to be true
    expect(page.tracklist_alert_triangle_elements.any?).to be true
  end
end

Then(/^I see errors on the digital product scheduling and pricing page$/) do
  on(Project::DigitalProductPricingPage) do |page|
    expect(page.missing_information_alert?).to be true
    expect(page.field_error_elements).not_to be_empty
  end
end

Then(/^I see errors on the digital product publishing obligation page$/) do
  on(Project::ProductPublishingPage) do |page|
    expect(page.missing_information_alert?).to be true
    eventually do
      expect(page.field_error_elements).not_to be_empty
    end
  end
end
