Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToon Claes <toon@gitlab.com>2018-03-06 22:42:14 +0300
committerToon Claes <toon@gitlab.com>2018-03-06 22:42:14 +0300
commitb0e5906d190ce1de499a553132f25de9135a1449 (patch)
treea8fd5b45c29db44dc32988a2d98678b6cadf6599 /spec/support/matchers
parent35f6efaee05835b75e605e1f269e57a8d6daf3fa (diff)
Add matcher to match elements by ids
Initially added in gitlab-org/gitlab-ee!4864 and gitlab-org/gitlab-ee!4689.
Diffstat (limited to 'spec/support/matchers')
-rw-r--r--spec/support/matchers/match_ids.rb24
1 files changed, 24 insertions, 0 deletions
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