Sha256: b36a755264fbc64cef75601c6c129e13258c36db4dfd583c8a8fefebc0389f1f

Contents?: true

Size: 1.06 KB

Versions: 2

Compression:

Stored size: 1.06 KB

Contents

# encoding: utf-8

RSpec::Matchers.define :reference_domains do |expected|
  match do |actual|
    domains_eq? actual, expected
  end

  failure_message do |actual|
    expected_domains = format_domains(expected)
    actual_domains   = format_domains(extract_domains(actual))

    "expected that \"#{actual.current_url}\" references:\n#{expected_domains}\n\nBut it references:\n#{actual_domains}\n"
  end

  failure_message_when_negated do |actual|
    expected_domains = format_domains(expected)
    actual_domains   = format_domains(extract_domains(actual))

    "expected that \"#{actual.current_url}\" not references:\n#{expected_domains}\n\nBut it references:\n#{actual_domains}\n"
  end

  description do
    "to reference domains:\n#{format_domains(expected)}"
  end

  def domains_eq?(actual, expected)
    (extract_domains(actual) - expected).blank?
  end

  def extract_domains(page)
    page.driver.network_traffic.collect { |o| Addressable::URI.parse(o.url).host }.uniq
  end

  def format_domains(domains)
    domains.sort.collect { |d| format "* %s", d}.join("\n")
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
proxy_tester-0.1.10 lib/proxy_tester/rspec/matchers/reference_domains.rb
proxy_tester-0.1.8 lib/proxy_tester/rspec/matchers/reference_domains.rb