module Contract
  class TrackArrangement < UniversalPage
    include PageHelpers::ReactHelpers

    page_url "/track-splits"

    div(:track_level_split, class: "TrackLevelSplit")
    div(:track_level_split_table, class: "TrackLevelSplit-table")
    div(:search_div, class: "Select-input")
    textarea(:search_input) { search_div_element.text_field_element }
    div(:search_results, class: "GlobalSearchResults-option")
    button(:submit, text: "Submit")
    spans(:delete_btn, class: "GlobalDeleteIcon")
    div(:success_message, class: %w[alert alert-success])
    div(:loading_dots, class: "LoadingIndicator")
    table(:clickable_table, class: %w[ClickableTable table table-striped])
    div(:no_tracks_message, text: "No track arrangements")

    text_field(:split) do
      div_element(class: "track-split-input").text_field(class: "form-control")
    end

    button(:confirm_delete) do
      div_element(class: "ReactModal-content").button(text: "Yes")
    end

    text_field(:split_with_validation_error) do
      div_element(class: "track-split-input-error").text_field(class: "form-control")
    end

    def delete_all_splits
      delete_btn_elements.each do |delete_button|
        delete_button.when_present.click
        loading_dots_element.wait_while(&:present?)
        confirm_delete
        confirm_delete_element.wait_while(&:present?)
        loading_dots_element.wait_while(&:present?)
      end
    end

    def add_split(isrc, split_rate)
      search_input_element.send_keys isrc
      search_results_element.when_present.click
      split_element.send_keys split_rate
      submit
      loading_dots_element.wait_while(&:present?)
      track_level_split_table_element.wait_until(&:present?)
      loading_dots_element.wait_while(&:present?)
    end
  end
end
