module OA
  class EditVendorPage < OA::BasePage
    page_url "/cont_mgmt/edit_vendor.php"

    text_field(:label_name, name: "company1")
    select_list(:owner, name: "owner_req")
    select_list(:assignment, name: "assigned_to")
    text_area(:label_summary, name: "label_summary")
    select_list(:label_priority, name: "priority")
    select_list(:genre, name: "genre")
    select_list(:country, name: "country")
    select_list(:physical_supply_chain, name: "defaultsupplychain[]")
    div(:confirmation_message, class: "alertConfirm")
    table(:feature_control) { div_element(id: "featureaccess_content").table_element }
    button(:submit_label, id: "labelinfo_btn")

    # Populate Required Label Fields
    def populate_label_info_fields(vendor_label_data)
      self.label_name = vendor_label_data[:label_name]
      populate_owner_assig_summ(vendor_label_data)
      populate_prior_genre_country(vendor_label_data)
    end

    # Check Data on Edit Page
    def check_label_info_fields(vendor_label_data)
      expect(confirmation_message).to include "Label profile successfully updated."
      expect(label_name).to eql vendor_label_data[:label_name]
      check_owner_assig_summ(vendor_label_data)
      check_prior_genre_country(vendor_label_data)
    end

    def enable_feature_control(feature)
      feature_row = feature_control_element.find { |row| row.text.include? feature }
      feature_row.radio_button_element(value: "Y").set
      submit_label
      expect(feature_row.radio_button_element(value: "Y").set?).to be true
    end

    def disable_feature_control(feature)
      feature_row = feature_control_element.find { |row| row.text.include? feature }
      feature_row.radio_button_element(value: "N").set
      submit_label
      expect(feature_row.radio_button_element(value: "N").set?).to be true
    end

    private

    def populate_owner_assig_summ(vendor_label_data)
      self.owner = vendor_label_data[:owner]
      self.assignment = vendor_label_data[:assignment]
      self.label_summary = vendor_label_data[:label_summary]
    end

    def populate_prior_genre_country(vendor_label_data)
      self.label_priority = vendor_label_data[:label_priority]
      self.genre = vendor_label_data[:genre]
      self.country = vendor_label_data[:country]
    end

    def check_owner_assig_summ(vendor_label_data)
      expect(owner).to eql vendor_label_data[:owner]
      expect(assignment).to eql vendor_label_data[:assignment]
      expect(label_summary).to eql vendor_label_data[:label_summary]
    end

    def check_prior_genre_country(vendor_label_data)
      expect(label_priority).to eql vendor_label_data[:label_priority]
      expect(genre).to eql vendor_label_data[:genre]
      expect(country).to eql vendor_label_data[:country]
    end
  end
end
