Sha256: 97d33e20fba8223b2aba97c7128f3d99fb468de8ab144ceaa78ac8a7bac0e8f5

Contents?: true

Size: 1.1 KB

Versions: 4

Compression:

Stored size: 1.1 KB

Contents

require 'pact_broker/repositories'

module PactBroker

  module Services
    module PactService

      extend self

      extend PactBroker::Repositories

      def find_pact params
        if params[:number] == 'last'
          pact_repository.find_latest_version(params[:consumer], params[:provider])
        else
          raise NotImplementedError
        end
      end

      def create_or_update_pact params
        provider = pacticipant_repository.find_by_name_or_create params[:provider]
        consumer = pacticipant_repository.find_by_name_or_create params[:consumer]
        version = version_repository.find_by_pacticipant_id_and_number_or_create consumer.id, params[:number]

        if pact = pact_repository.find_by_version_and_provider(version.id, provider.id)
          http_status = 200
          pact.update(json_content: params[:json_content])
          return pact, false
        else
          http_status = 201
          pact_repository.create json_content: params[:json_content], version_id: version.id, provider_id: provider.id
          return pact, true
        end

      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
pact_broker-0.0.4 lib/pact_broker/services/pact_service.rb
pact_broker-0.0.3 lib/pact_broker/services/pact_service.rb
pact_broker-0.0.2 lib/pact_broker/services/pact_service.rb
pact_broker-0.0.1 lib/pact_broker/services/pact_service.rb