Sha256: 1f04a73d4f7284c8acf935ac8d45717dab6722d32f7e062f3690d0cd3607b0f2

Contents?: true

Size: 1.33 KB

Versions: 2

Compression:

Stored size: 1.33 KB

Contents

module LocatorSpecHelper
  def browser
    @browser ||= double(Watir::Browser, wd: driver)
  end

  def driver
    @driver ||= double(Selenium::WebDriver::Driver)
  end

  def locator(selector, attrs)
    attrs ||= Watir::HTMLElement.attributes
    element_validator = Watir::Locators::Element::Validator.new
    selector_builder = Watir::Locators::Element::SelectorBuilder.new(attrs)
    Watir::Locators::Element::Locator.new(browser, selector, selector_builder, element_validator)
  end

  def expect_one(*args)
    expect(driver).to receive(:find_element).with(*args)
  end

  def expect_all(*args)
    expect(driver).to receive(:find_elements).with(*args)
  end

  def locate_one(selector, attrs = nil)
    locator(ordered_hash(selector), attrs).locate
  end

  def locate_all(selector, attrs = nil)
    locator(ordered_hash(selector), attrs).locate_all
  end

  def element(opts = {})
    attrs = opts.delete(:attributes)
    el = double(Watir::HTMLElement, opts)

    attrs&.each do |key, value|
      allow(el).to receive(:attribute).with(key.to_s).and_return(value)
    end
    allow(el).to receive(:enabled?).and_return true
    el
  end

  def ordered_hash(selector)
    case selector
    when Hash
      selector
    when Array
      Hash[*selector]
    else
      raise ArgumentError, "couldn't create hash for #{selector.inspect}"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
watir-6.15.1 spec/locator_spec_helper.rb
watir-6.15.0 spec/locator_spec_helper.rb