module Workstation
  class BulkUploadPage < Workstation::BasePage
    page_url "/multiplereleases"

    link(:metadata_template_link) do
      div_element(class: "newSpreadsheet").link_element(class: ["btn", "btn-default"])
    end

    file_field(:upload_spreadsheet_field, id: "spreadsheetupload")
    file_field(:upload_folder_field, id: "assets")
    table(:created_releases, class: "homepageTable")
    div(:loading_spinner, id: "loading_image")
    element(:error_tbody, :tbody, id: "error_releases") # because PageObject doesn't have a #tbody accessor
    link(:error_link_to_correct_spreadsheet) { error_tbody_element.link_element }
    div(:upload_progress, id: "html5_percent_done_label")
    div(:progress_bar, id: "html5ProgressBarContainer")

    def ensure_browser_is_chrome
      browser_name = browser.name
      fail "Didn't execute this step because browser = #{browser_name}" unless browser_name == :chrome
    end

    def template_url
      metadata_template_link_element.when_present.href
    end

    # Wait and Error Message methods
    def wait_for_loading
      loading_spinner_element.element.wait_while(timeout: 120, &:present?)
    end

    def errors
      browser.tbody(id: "error_releases")
    end

    def errors_array
      array = []
      if errors.present?
        errors.trs.each do |tr|
          array.push tr.text
        end
      end
      array
    end

    def upload_spreadsheet(file)
      upload_workaround(element: upload_spreadsheet_field_element, path: file)
    end

    def upload_folder(folder)
      upload_workaround(element: upload_folder_field_element, path: folder)
    end

    def created_release_id
      created_releases_element.when_present.link_element.href.scan(/\d+/).last
    end
  end
end
