2021-11-10 13:12:35 -05:00
|
|
|
# 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 &&
|
2022-03-30 14:08:19 -04:00
|
|
|
project.namespace_id == project_namespace.parent_id &&
|
2021-11-10 13:12:35 -05:00
|
|
|
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
|