module OA
  class ReleaseApprovalPage < OA::BasePage
    include Project
    include ProjectionsCommon

    div(:sony_validation_message, id: "mixedRelease")
    div(:left_pane, id: "leftPane")
    h2(:approval_heading) { left_pane_element.h2_element }
    checkbox(:approve_checkbox, id: "chkApprove")
    button(:approve, id: "btnApprove")
    textarea(:approval_comments, id: "approvalComments")
    button(:confirm, id: "btnConfApproval")
    div(:hidden_artist_warning, id: "blacklistWarningMessage")
    button(:confirm_not_for_distribution, id: "btnConfApproval")
    div(:release_name, id: "spanrelease_name0")
    div(:release_date, id: "spanrelease_date0")
    div(:artwork, id: "artwork")
    img(:artwork_image) do
      artwork_element.image_element
    end
    div(:track_name, id: /lbltrack_name/)
    textarea(:general_rejection_comments, id: "txtareaOther")
    textarea(:artwork_rejection_comments, id: "textarea_artwork_0")
    textarea(:release_name_rejection_comments, id: "textarea_release_name_0")
    textarea(:release_date_rejection_comments, id: "textarea_release_date_0")
    textarea(:track_name_rejection_comments, id: /textarea_track_name/)
    button(:reject, id: "btnReject")
    span(:physical_product) { div_element(id: "lblproduct_type").span_element(text: /Physical/) }
    div(:product_name) { span_element(id: "lblrelease_name").div_element }

    button(:save_marketing, text: "Save")
    button(:edit_marketing, class: "MarketingHighlightsTable-edit-button")
    select_list(:marketing_priority) do
      cell_element(class: "MarketingHighlightsTable-select").select_list_element
    end

    def approve_and_confirm(reason)
      ensure_approve_enabled
      approve
      self.approval_comments = reason
      confirm
    end

    def ensure_approve_enabled
      return if approve_element.enabled?
      puts "Why the f didn't the previous step mark the checkbox?"
      check_approve_checkbox
      expect(approve_element.enabled?).to be true
    end

    def edit_marketing_when_available
      wait_until { edit_marketing_element.present? }
      edit_marketing_element.scroll.to
      edit_marketing
    end
  end
end
