module OA
  class ViewReleasePage < OA::BasePage
    page_url "/cont_mgmt/view_release.php"

    link(:manage_localization, text: "Manage Localization")

    link(:stream_link, class: "player-link")

    # Release Info section
    div(:release_info_header) do
      div_elements(class: "panelHeader").find do |header|
        header.h3_element(text: "Release Info").element.present?
      end
    end
    div(:release_info_summary) { div_element(class: "panelSummary") }
    b(:release_status, id: "release_status")
    link(:transfer_subaccount, text: "Transfer sub-account")
    table(:release_info_table) do
      release_info_header_element.div_element(xpath: "./following-sibling::div[1]").table_element
    end

    element(:first_expanded_track, :tr, css: "div.panelContent tr.expanded")
    link(:add_track, text: "Add Track")
    div(:green_confirmation_message, class: "alertConfirm")
    link(:view_expanded_link, text: "View Expanded")
    table(:track_list_table, class: "data")
    link(:edit_release, text: "Edit")
    div(:language_assets_header, id: "language-assets-header")
    link(:edit_language) { language_assets_header_element.link_element(text: "Edit") }

    cells(:download_track, class: "btn-download-single")

    # release nav
    link(:sales_sheets, text: "Sales Sheets")

    # Release Artist
    link(:manage_artist, text: "Manage Artists")

    # Manage Artist
    in_iframe(id: "popUpFrame") do |manage_artist|
      text_fields(:artist_name, name: "artist_name", frame: manage_artist)
      buttons(:update_artists, value: "Update", frame: manage_artist)
      select_lists(:select_role, name: "role", frame: manage_artist)
      button(:add_artist, value: "Add", frame: manage_artist)
      buttons(:remove_artist, value: "Remove", frame: manage_artist)
      div(:confirmation_message, class: "alertConfirm", frame: manage_artist)
      hidden_fields(:release_artist_id, name: "release_artist_id", frame: manage_artist)
    end

    def delete_first_artist
      browser.after_hooks.without do
        remove_artist_elements[0].click
        wait_until(3) { browser.alert.exists? }
        browser.alert.ok
        wait_until { remove_artist_elements.empty? }
      end
    end

    def no_artist?
      browser.wait_until(timeout: 60) { artist_name_elements.any? }
      artist_name_elements[0].value == ""
    end

    # Marketing Programs
    link(:add_marketing_programs, text: "Add New Materials")
    div(:marketing_program_info, id: "marketing_program_info_panel")
    table(:view_marketing_program) { marketing_program_info_element.table_element(class: "data") }
    links(:delete_marketing_programs) { view_marketing_program_element.link_elements(text: "Delete") }

    def delete_first_marketing_program
      browser.after_hooks.without do
        delete_marketing_programs_elements[0].click
        wait_until(3) { browser.alert.exists? }
        browser.alert.ok
      end
      expect(green_confirmation_message).to include "Marketing Program Info was successfully deleted."
    end

    def no_marketing_programs?
      view_marketing_program_element[1][0].text == "No marketing program info found."
    end

    def verify_marketing_program_exists(marketing_program_fields)
      description_value = view_marketing_program_element[1]["Description"].link_element.text
      info_point_for_value = view_marketing_program_element[1]["Info-point Type"].text
      expect(description_value).to eql marketing_program_fields[:description]
      expect(info_point_for_value).to eql marketing_program_fields[:info_point]
    end
  end
end
