Sha256: 182699b44dac657bcdba9d01f971ac13bb43801323f0979d41e1d01555d829d0

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 KB

Contents

module Polyblock
  module CapybaraHelpers
    def fill_in_polyblock(locator, params={})
      # Find out ckeditor id at runtime using its label
      # if page.has_css? "##{locator}"
      if !locator.include?(' ') && page.evaluate_script("$('##{locator}').is('*')")
        # Locator is fine as is for capybara.
      # elsif page.has_css? 'label', text: locator
      elsif page.evaluate_script("$(\"label:contains('#{locator}')\").is('*')")
        locator = find('label', text: locator)[:for]
      else
        raise "Locator #{locator} not found!!"
      end
      # Fill the editor content
      page.execute_script <<-SCRIPT
          var ckeditor = CKEDITOR.instances['#{locator}'];
          ckeditor.setData('#{params[:with].gsub("'", "\\'")}');
          ckeditor.focus();
          setTimeout(function(){
            ckeditor.updateElement();
          }, 1);
      SCRIPT
      sleep 0.1
    end

    def fill_in_inline_polyblock(name, params={})
      page.execute_script <<-SCRIPT
          var element = $('.polyblock[data-pbname="#{name}"]');
          var ckeditor = CKEDITOR.instances[element.attr('id')];
          setTimeout(function(){
            ckeditor.fire('focus');
            ckeditor.setData('#{params[:with]}');
            ckeditor.focus();
            ckeditor.updateElement();
          }, 1);
      SCRIPT
      sleep 0.1
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
polyblock-1.1.0 lib/polyblock/capybara_helpers.rb
polyblock-1.0.8 lib/polyblock/capybara_helpers.rb