2021-06-01 12:20:20 +00:00
|
|
|
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
|
|
|
|
|
2019-10-22 09:40:35 +00:00
|
|
|
module KnowledgeBasePublicMatchers
|
|
|
|
module HaveBreadcrumbItem
|
|
|
|
extend RSpec::Matchers::DSL
|
|
|
|
|
|
|
|
matcher :have_breadcrumb_item do |expected|
|
|
|
|
match { breadcrumb_item_found? && at_specified_index? }
|
|
|
|
|
|
|
|
chain(:at_index, :index)
|
|
|
|
|
|
|
|
description do
|
|
|
|
if @index.present?
|
|
|
|
%(have "#{expected}" in breadcrumb at index #{@index})
|
|
|
|
else
|
|
|
|
%(have "#{expected}" in breadcrumb)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
failure_message do
|
|
|
|
if breadcrumb_item_found? && !at_specified_index?
|
|
|
|
%(expected to find "#{expected}" at index #{@index} of breadcrumb (found at #{breadcrumb_item_index}))
|
|
|
|
else
|
|
|
|
%(expected to find "#{expected}" in breadcrumb, but did not)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
failure_message_when_negated do
|
|
|
|
if breadcrumb_item_found? && @index.present?
|
|
|
|
%(expected not to find "#{expected}" at index #{@index} of breadcrumb)
|
|
|
|
else
|
|
|
|
%(expected not to find "#{expected}" in breadcrumb, but did)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def breadcrumb_item_found?
|
|
|
|
!breadcrumb_item_index.nil?
|
|
|
|
end
|
|
|
|
|
|
|
|
def at_specified_index?
|
|
|
|
@index.nil? || @index == breadcrumb_item_index
|
|
|
|
end
|
|
|
|
|
|
|
|
def breadcrumb_item_index
|
|
|
|
@breadcrumb_item_index ||= actual.all('.breadcrumbs .breadcrumb').index do |item|
|
|
|
|
item.find('span').text == expected
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
RSpec.configure do |config|
|
|
|
|
config.include KnowledgeBasePublicMatchers::HaveBreadcrumbItem, type: :system
|
|
|
|
end
|