class GovukAbTesting::AcceptanceTests::ActiveSupport

Attributes

request_headers[R]
scope[R]

Public Class Methods

new(scope) click to toggle source
# File lib/govuk_ab_testing/acceptance_tests/active_support.rb, line 6
def initialize(scope)
  @scope = scope
  @request_headers = {}

  if request.nil?
    raise "Couldn't find '@request' defined, are you using ActiveSupport test cases?"
  end
end

Public Instance Methods

analytics_meta_tags() click to toggle source
# File lib/govuk_ab_testing/acceptance_tests/active_support.rb, line 36
def analytics_meta_tags
  if scope.response.body.empty?
    raise "Cannot find response body. If this is an RSpec Rails test, " \
      "check that 'render_views' is being called."
  end

  tags = scope.css_select(ANALYTICS_META_TAG_SELECTOR)

  tags.map do |tag|
    MetaTag.new(
      content: tag.attributes["content"].value,
      dimension: tag.attributes["data-analytics-dimension"].value,
    )
  end
end
analytics_meta_tags_for_test(ab_test_name) click to toggle source
# File lib/govuk_ab_testing/acceptance_tests/active_support.rb, line 32
def analytics_meta_tags_for_test(ab_test_name)
  analytics_meta_tags.select { |tag| tag.for_ab_test?(ab_test_name) }
end
request() click to toggle source
# File lib/govuk_ab_testing/acceptance_tests/active_support.rb, line 15
def request
  @scope.instance_variable_get(:@request)
end
response() click to toggle source
# File lib/govuk_ab_testing/acceptance_tests/active_support.rb, line 19
def response
  @scope.instance_variable_get(:@response)
end
set_header(name, value) click to toggle source
# File lib/govuk_ab_testing/acceptance_tests/active_support.rb, line 23
def set_header(name, value)
  request.headers[name] = value
  @request_headers[name] = value
end
vary_header() click to toggle source
# File lib/govuk_ab_testing/acceptance_tests/active_support.rb, line 28
def vary_header
  response.headers["Vary"]
end