Sha256: 7f7e13bc172960ddf67e00128699e1f1640b30891fd5deae4ecdf13a7dab82ac

Contents?: true

Size: 1.94 KB

Versions: 1

Compression:

Stored size: 1.94 KB

Contents

module KendoPageObjectWidgets
  module Widgets
    class KendoMultiSelectComboBox < PageObject::Elements::TextField

      def clear_all
        self.parent.click
        KendoMultiSelectComboBox.clear_values(self)
      end

      def set(values)
        values.each do |value|
          unless value.empty?
            self.parent.click
            self.append(value.strip)
            sleep 0.5
            self.send_keys :enter
          end
        end
      end

      def self.clear_values(base)
        list_elements = base.parent.span_elements(:class => 'k-i-close')
        list_elements.map { |item| item }.each { |li| li.click }
      end

      def self.accessor_methods(accessor, name)

        accessor.send :define_method, "#{name}_option_text" do
          self.send("open_#{name}")
          self.send("#{name}_listbox").when_visible(10)
          self.send("#{name}_listbox").text
        end

        accessor.send :define_method, "clear_#{name}" do
          self.send("open_#{name}")
          KendoMultiSelectComboBox.clear_values(self.send("#{name}_element"))
        end

        accessor.send :define_method, "#{name}=" do |values|
          values.each do |new_value|
            unless new_value.empty?
              send("open_#{name}")
              list_item = send("#{name}_listbox").list_item_element(text: new_value.strip)
              list_item.click if list_item.when_present 10
            end
          end
        end

        #private

        accessor.send :define_method, "open_#{name}" do
          self.send("#{name}_element").parent.click
        end

        accessor.send :define_method, "#{name}_listbox" do
          self.platform.unordered_list_for(:id => "#{self.send("#{name}_id")}_listbox")
        end

        accessor.send :define_method, "#{name}_id" do
          self.send("#{name}_element").attribute('id')
        end

        accessor.send :private, "open_#{name}", "#{name}_listbox", "#{name}_id"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
kendo-page-object-widgets-0.2.10 lib/widgets/kendo_multi_select_combo_box.rb