trabajo-afectivo/spec/support/custom_matchers/system/knowledge_base_public/have_breadcrumb.rb

55 lines
1.3 KiB
Ruby

# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
module KnowledgeBasePublicMatchers
module HaveBreadcrumb
extend RSpec::Matchers::DSL
matcher :have_breadcrumb do
match { breadcrumb_found? && of_specified_length? }
chain(:with, :length)
chain(:items) { nil }
description do
if @length.present?
"have #{@length}-item breadcrumb"
else
'have breadcrumb'
end
end
failure_message do
if breadcrumb_found? && !of_specified_length?
"expected breadcrumb to contain #{@length} items (#{actual_length} found)"
else
'expected to find breadcrumb, but none was found'
end
end
failure_message_when_negated do
if breadcrumb_found? && @length.present?
"expected breadcrumb not to contain #{@length} items"
else
'expected not to find breadcrumb, but did'
end
end
def breadcrumb_found?
actual.has_css?('.breadcrumbs')
end
def of_specified_length?
@length.nil? || @length == actual_length
end
def actual_length
actual.all('.breadcrumbs .breadcrumb').length
end
end
end
end
RSpec.configure do |config|
config.include KnowledgeBasePublicMatchers::HaveBreadcrumb, type: :system
end