lib/pact_broker/matrix/service.rb in pact_broker-2.7.0.beta.1 vs lib/pact_broker/matrix/service.rb in pact_broker-2.7.0.beta.2
- old
+ new
@@ -1,47 +1,54 @@
require 'pact_broker/repositories'
module PactBroker
module Matrix
module Service
- VERSION_SELECTOR_PATTERN = %r{(^[^/]+)/version/[^/]+$}.freeze
extend self
extend PactBroker::Repositories
extend PactBroker::Services
- def find params
- matrix_repository.find params[:consumer_name], params[:provider_name]
+ def find criteria, options = {}
+ matrix_repository.find criteria, options
end
+ def find_for_consumer_and_provider params
+ matrix_repository.find_for_consumer_and_provider params[:consumer_name], params[:provider_name]
+ end
+
def find_compatible_pacticipant_versions criteria
matrix_repository.find_compatible_pacticipant_versions criteria
end
def validate_selectors selectors
error_messages = []
- selectors.each do | version_selector |
- if !(version_selector =~ VERSION_SELECTOR_PATTERN)
- error_messages << "Invalid version selector '#{version_selector}'. Format must be <pacticipant_name>/version/<version>"
+
+ selectors.each do | selector |
+ if selector[:pacticipant_name].nil? && selector[:pacticipant_version_number].nil?
+ error_messages << "Please specify the pacticipant name and version"
+ elsif selector[:pacticipant_name].nil?
+ error_messages << "Please specify the pacticipant name"
end
end
- selectors.each do | version_selector |
- if match = version_selector.match(VERSION_SELECTOR_PATTERN)
- pacticipant_name = match[1]
- unless pacticipant_service.find_pacticipant_by_name(pacticipant_name)
- error_messages << "Pacticipant '#{pacticipant_name}' not found"
- end
+ selectors.collect{ |selector| selector[:pacticipant_name] }.compact.each do | pacticipant_name |
+ unless pacticipant_service.find_pacticipant_by_name(pacticipant_name)
+ error_messages << "Pacticipant '#{pacticipant_name}' not found"
end
end
if error_messages.empty?
- selected_versions = version_service.find_versions_by_selector(selectors)
- if selected_versions.any?(&:nil?)
- selected_versions.each_with_index do | selected_version, i |
- error_messages << "No pact or verification found for #{selectors[i]}" if selected_version.nil?
+ selectors.each do | selector |
+ if selector[:pacticipant_version_number]
+ version = version_service.find_by_pacticipant_name_and_number(pacticipant_name: selector[:pacticipant_name], pacticipant_version_number: selector[:pacticipant_version_number])
+ error_messages << "No pact or verification found for #{selector[:pacticipant_name]} version #{selector[:pacticipant_version_number]}" if version.nil?
end
end
+ end
+
+ if selectors.size == 0
+ error_messages << "Please provide 1 or more version selectors."
end
error_messages
end
end