When(/^I select releases with (.*?): (.*?)$/) do |filter_type, selected_filters|
  on(ReactWorkstation::ReactCatalogPage) do |page|
    filter_by = filter_type.to_snake_case
    page.clear_all_filters
    @filter_values = []
    selected_filters.split(", ").each do |filter|
      filter_text = filter.to_snake_case
      @filter_values.push page.check_filter_and_get_value(filter_by, filter_text)
    end
  end
end

Then(/^I should see the updated search results filtered by (.*?)$/) do |filter_type|
  on(ReactWorkstation::ReactCatalogPage) do |page|
    filter_by = filter_type.to_snake_case
    if filter_by == "status"
      query = "productStatuses"
    elsif filter_by == "product_type"
      query = "productTypes"
    elsif filter_by == "date"
      query = "dateRangeType"
    end
    filters_in_url = page.query_value_from_current_url(query).split(",")
    puts "Filters in URL: #{filters_in_url}"
    puts "Selected filters: #{@filter_values}"
    expect(filters_in_url).to match_array(@filter_values)
  end
end

Then(/^I should see "(.*?)" in results$/) do |search_term|
  on(ReactWorkstation::ReactCatalogPage) do |page|
    page.wait_until { page.manage_releases_table.present? }
    page.manage_releases_row_elements.each do |element|
      expect(element.text).to include search_term
    end
  end
end

When(/^I search for releases in catalog matching the term "(.*?)"$/) do |search_term|
  on(ReactWorkstation::ReactCatalogPage) do |page|
    page.wait_until { page.manage_releases_row_elements.present? }
    page.search_field = search_term
  end
end

Then(/^I see that the catalog page works$/) do
  on(ReactWorkstation::ReactCatalogPage) do |page|
    page.wait_until { page.namage_filters_element.present? }
    expect(page.namage_filters_element.present?).to be true
    page.wait_until { page.manage_results_element.present? }
    expect(page.manage_results_element.present?).to be true
  end
end
