Sha256: dd4526af3d8c8c481d19398b367c7cb54f2daad84a073a9939bc87ccac4a3e3e

Contents?: true

Size: 1.23 KB

Versions: 8

Compression:

Stored size: 1.23 KB

Contents

require 'pact/provider/configuration/pact_verification'
require 'pact/provider/configuration/service_provider_config'

module Pact

  module Provider

    module Configuration

      class ServiceProviderDSL

        extend Pact::DSL

        attr_accessor :name, :app_block

        CONFIG_RU_APP = lambda { Rack::Builder.parse_file(Pact.configuration.config_ru_path).first }

        def initialize name
          @name = name
          @app_block = CONFIG_RU_APP
        end

        dsl do
          def app &block
            self.app_block = block
          end

          def honours_pact_with consumer_name, options = {}, &block
            create_pact_verification consumer_name, options, &block
          end
        end

        def create_pact_verification consumer_name, options, &block
          PactVerification.build(consumer_name, options, &block)
        end

        def finalize
          validate
          create_service_provider
        end

        private

        def validate
          raise "Please provide a name for the Provider" unless name && !name.strip.empty?
        end

        def create_service_provider
          Pact.configuration.provider = ServiceProviderConfig.new(&@app_block)
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
pact-1.3.0 lib/pact/provider/configuration/service_provider_dsl.rb
pact-1.2.1.rc2 lib/pact/provider/configuration/service_provider_dsl.rb
pact-1.2.1.rc1 lib/pact/provider/configuration/service_provider_dsl.rb
pact-1.1.1 lib/pact/provider/configuration/service_provider_dsl.rb
pact-1.1.0 lib/pact/provider/configuration/service_provider_dsl.rb
pact-1.1.0.rc5 lib/pact/provider/configuration/service_provider_dsl.rb
pact-1.1.0.rc4 lib/pact/provider/configuration/service_provider_dsl.rb
pact-1.1.0.rc3 lib/pact/provider/configuration/service_provider_dsl.rb