From b0e5906d190ce1de499a553132f25de9135a1449 Mon Sep 17 00:00:00 2001 From: Toon Claes Date: Tue, 6 Mar 2018 20:42:14 +0100 Subject: [PATCH] Add matcher to match elements by ids Initially added in gitlab-org/gitlab-ee!4864 and gitlab-org/gitlab-ee!4689. --- spec/support/matchers/match_ids.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 spec/support/matchers/match_ids.rb diff --git a/spec/support/matchers/match_ids.rb b/spec/support/matchers/match_ids.rb new file mode 100644 index 00000000000..d8424405b96 --- /dev/null +++ b/spec/support/matchers/match_ids.rb @@ -0,0 +1,24 @@ +RSpec::Matchers.define :match_ids do |*expected| + match do |actual| + actual_ids = map_ids(actual) + expected_ids = map_ids(expected) + + expect(actual_ids).to match_array(expected_ids) + end + + description do + 'matches elements by ids' + end + + def map_ids(elements) + elements = elements.flatten if elements.respond_to?(:flatten) + + if elements.respond_to?(:map) + elements.map(&:id) + elsif elements.respond_to?(:id) + [elements.id] + else + raise ArgumentError, "could not map elements to ids: #{elements}" + end + end +end