module OA
  class EditReleasePage < OA::BasePage
    page_url "/cont_mgmt/edit_release.php"

    link(:add_edit_carveouts, text: "Add/Edit Carveout")
    div(:green_confirmation_message, class: "alertConfirm")
    div(:red_err_message, id: "err_msg")
    select_list(:release_meta_language, name: "meta_language")
    text_field(:release_name, name: "release_name")
    text_field(:label, name: "label")
    div(:orchard_upc, id: "display-upc")
    text_field(:release_date, name: "release_date")
    text_field(:sale_start_date, name: "sale_start_date")
    select(:genre, id: "genre_id")
    select(:subgenre, id: "subgenre")
    select(:format, id: "format")
    link(:manage_pricing, text: "Manage Pricing")
    text_field(:copy_right, name: "c_line")
    text_field(:p_line, name: "product_p_line")
    button(:submit, value: "Submit")
    button(:timed_release_link, css: "[data-testid='manage-timed-releases']")
    div(:timed_release_msg, id: "timed-release-msg")
    text_field(:release_time, css: "[data-testid='saleTime'] input")
    button(:save, value: "Save")
    button(:save_and_close, text: "Save & Close")
    div(:page_loader, class: "oa-page-loader")
    div(:date_picker, css: "[data-testid='DatePicker']")
    button(:calendar_next, css: "[aria-label='Go to next month']")
    button(:add_to_schedule, css: "[data-testid='addToSchedule']")
    div(:release_schedule_table, class: "LegacyReleaseScheduleTable")
    div(:sale_time_cell, class: "cell-column-3")

    # This creates a page element object for the country rating drop down and
    # reason field based off the country code that is passed in.
    indexed_property(
      :country_rating,
      [
        [:select_list, :movie_ratings, { id: "%s-ratings" }],
        [:text_field, :reason_film, { name: "reasons_film[%s]" }]
      ]
    )

    def add_country_rating(country, reason)
      rating_options = country_rating[country].movie_ratings_options
      country_rating[country].movie_ratings = rating_options[1]
      country_rating[country].reason_film = reason
    end

    def get_rating_values(country, timestamp)
      # check that the ratings list selected value is the first value in the list.
      rating_options = country_rating[country].movie_ratings_options
      rating_selected = country_rating[country].reason_film_element.element.value
      expect(rating_options[1] == rating_selected)
      # check that the reason field contains text
      expect(country_rating[country].reason_film).to eql timestamp
    end

    def set_release_name
      release_name_element.clear
      self.release_name = "test"
      self.label = "test"
    end

    def clear_digital_release_required_info
      wait_until { page_loader_element.present? == false }
      self.release_meta_language = "Select One"
      release_name_element.clear
      label.clear
      self.genre = "Folk"
      self.subgenre = "Select One"
      self.format = "Select One"
      copy_right_element.clear
    end

    def set_digital_release_required_info
      new_subgenre = "Anti-Folk"
      self.release_meta_language = "English"
      release_name_element.clear
      self.release_name = "edit in content release"
      self.label = "2015 arkepr"
      self.genre = "Folk"
      wait_until { subgenre_options.include? new_subgenre }
      self.subgenre = new_subgenre
      self.format = "EP"
      self.copy_right = "2016 isdhaa"
      self.p_line = "2018 TEST"
    end

    def select_dms(store)
      div_element(class: "GridTable-cell", text: store).click
    end

    def select_date
      date_picker_element.click
      calendar_next
      span_element(text: "15").click
    end
  end
end
