module Workstation
  class CreateMusicVideoModal < BasePage
    include CreateRelease

    select_list(:meta_language, id: "meta_language")
    text_field(:release_name, id: "releaseName")
    select_list(:orchard_artist, id: "artistName")
    text_field(:primary_artist, id: "primary_token_box")
    text_field(:release_date, id: "releaseDate")
    text_field(:sales_date, id: "salesDate")
    select_list(:imprint, id: "imprintName")
    select_list(:genre, id: "genre")
    select_list(:subgenre, id: "subgenre")

    text_field(:p_line, id: "p_line")
    select_list(:language, id: "language")
    label(:explicit_no, for: "explicit-N") # doesn't work?
    label(:closedcaption_yes, for: "createreleasemodal_closedcaption-YES") # doesn't work?

    def populate_music_video_basics(data)
      populate_language(data)
      populate_orchard_artist(data)
      populate_primary_artist(data)
      populate_date(data)
      populate_imprint_p_line(data)
      populate_genre(data[:genre], data[:subgenre])
      populate_radio_buttons
    end

    def verify_first_error(error)
      expect(errors[0].text).to include error
    end

    private

    # Populate music video basics data using methods for preventing rubocop
    def populate_genre(genre_data, subgenre_data)
      self.genre = genre_data
      subgenre_element.element.option(text: subgenre_data).wait_until(&:present?)
      self.subgenre = subgenre_data
    end

    def populate_language(data)
      self.meta_language = data[:meta_language]
      self.language = data[:language]
    end

    def populate_orchard_artist(data)
      self.release_name = data[:release_name]
      # disabled in project manager
      orchard_artist_data = data[:orchard_artist]
      self.orchard_artist = orchard_artist_data if orchard_artist_data
    end

    def populate_primary_artist(data)
      # auto-filled by orchard artist
      primary_artist_data = data[:primary_artist]
      self.primary_artist = primary_artist_data if primary_artist_data
    end

    def populate_date(data)
      self.release_date = data[:release_date].to_s
      self.sales_date = data[:sales_date].to_s
    end

    def populate_imprint_p_line(data)
      self.imprint = data[:imprint]
      self.p_line = data[:p_line]
    end

    def populate_radio_buttons
      # radio buttons
      explicit_no_element.click
      closedcaption_yes_element.element.click
    end
  end
end
