mirror of
https://github.com/mastodon/mastodon.git
synced 2024-08-20 21:08:15 -07:00
Add have_http_link_header
matcher
This commit is contained in:
parent
fbf95216c5
commit
711901d85a
1 changed files with 34 additions and 0 deletions
34
spec/support/matchers/http_link_header.rb
Normal file
34
spec/support/matchers/http_link_header.rb
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
RSpec::Matchers.define :have_http_link_header do |rel, href|
|
||||||
|
chain :with_type do |type|
|
||||||
|
@type = type
|
||||||
|
end
|
||||||
|
|
||||||
|
match do |response|
|
||||||
|
header_link = link_for(response, rel)
|
||||||
|
|
||||||
|
header_link.href == href &&
|
||||||
|
(@type.nil? || header_link.attrs['type'] == @type)
|
||||||
|
end
|
||||||
|
|
||||||
|
match_when_negated do |response|
|
||||||
|
response.headers['Link'].blank?
|
||||||
|
end
|
||||||
|
|
||||||
|
failure_message do |response|
|
||||||
|
(+'').tap do |string|
|
||||||
|
string << "Expected `#{response.headers['Link']}` to include `href` value of `#{href}` "
|
||||||
|
string << "with `type` of `#{@type}` " if @type.present?
|
||||||
|
string << "for `rel=#{rel}` but it did not."
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def link_for(response, rel)
|
||||||
|
LinkHeader
|
||||||
|
.parse(response.headers['Link'])
|
||||||
|
.find_link(['rel', rel.to_s])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
RSpec::Matchers.define_negated_matcher :not_have_http_link_header, :have_http_link_header # Allow chaining
|
Loading…
Reference in a new issue