diff options
Diffstat (limited to 'spec/support/matchers/project_namespace_matcher.rb')
-rw-r--r-- | spec/support/matchers/project_namespace_matcher.rb | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/spec/support/matchers/project_namespace_matcher.rb b/spec/support/matchers/project_namespace_matcher.rb new file mode 100644 index 00000000000..95aa5429679 --- /dev/null +++ b/spec/support/matchers/project_namespace_matcher.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +RSpec::Matchers.define :be_in_sync_with_project do |project| + match do |project_namespace| + # if project is not persisted make sure we do not have a persisted project_namespace for it + break false if project.new_record? && project_namespace&.persisted? + # don't really care if project is not in sync if the project was never persisted. + break true if project.new_record? && !project_namespace.present? + + project_namespace.present? && + project.name == project_namespace.name && + project.path == project_namespace.path && + project.namespace == project_namespace.parent && + project.visibility_level == project_namespace.visibility_level && + project.shared_runners_enabled == project_namespace.shared_runners_enabled + end + + failure_message_when_negated do |project_namespace| + if project.new_record? && project_namespace&.persisted? + "expected that a non persisted project #{project} does not have a persisted project namespace #{project_namespace}" + else + <<-MSG + expected that the project's attributes name, path, namespace_id, visibility_level, shared_runners_enabled + are in sync with the corresponding project namespace attributes + MSG + end + end +end |