module Workstation
  module CreateRelease
    include PageObject

    ##################
    # Modal elements #
    ##################
    div(:create_release_modal, id: "modalWindow")
    div(:saving_release_modal, id: "onsaverelease")
    spans(:required_field_indicator, class: "required")
    spans(:validation_message, class: "missing")

    button(:create_release, id: "saveRelease")
    button(:create_new, class: "btn-primary")
    link(:new_music_project, text: "Music Project")
    link(:new_film_project, text: "Film")
    div(:loading_edit_release_modal, id: "loading_imageeditReleaseModal")
    div(:close_create_release_modal) { create_release_modal_element.button_element(class: %w[close btn]) }

    # LOADING
    div(:loading_edited_release_modal, class: "modalLoading")

    def errors
      browser.spans(id: /invalid_|missing_/, text: /\w+/)
    end

    private

    # fields like Primary Artist and Featuring allow the user to enter multiple artists if they press enter
    # after each artist
    def populate_multiple_artist_element(element, data)
      if data.is_a? Array
        data.each { |single_artist| append_single_artist(element, single_artist) }
      else
        append_single_artist(element, data)
      end
    end

    # adds a single artist to a multiple artist field
    def append_single_artist(element, single_artist_data)
      # for some reason, this has to be done separately - can't just do #append("#{single_artist}\n")
      element.append single_artist_data
      element.append "\n"
    end
  end
end
