Sha256: e62888b1c967d4413bff9d782ad1fe74d744812260e0b5bfd4c6542a135012ef

Contents?: true

Size: 1.39 KB

Versions: 2

Compression:

Stored size: 1.39 KB

Contents

module Pact

   module Producer
      module DSL

         module Configuration
            def provider= provider
               @producer = provider
            end
         end

         Pact::Configuration.send(:include, Configuration)

         def service_provider name, &block
            service_provider = ServiceProviderDSL.new(name, &block).create_service_provider
            Pact.configuration.provider = service_provider
            service_provider
         end

        class ServiceProviderConfig
           attr_accessor :name

           def initialize name, &app_block
             @name = name
             @app_block = app_block
           end

           def app
             @app_block.call
           end
         end

         class ServiceProviderDSL

           def initialize name, &block
             @name = name
             @app = nil
             instance_eval(&block)
           end

           def validate
             raise "Please provide a name for the Producer" unless @name
             raise "Please configure an app for the Producer" unless @app_block
           end

           def name name
             @name = name
           end

           def app &block
             @app_block = block
           end

           def create_service_provider
             validate
             ServiceProviderConfig.new(@name, &@app_block)
           end
         end
      end
   end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pact-0.1.37 lib/pact/producer/dsl.rb
pact-0.1.35 lib/pact/producer/dsl.rb