Sha256: bd2ebe44200101dcd666a48c6639e21d8806a53e8d459f260ad63446a122bb9d

Contents?: true

Size: 1.77 KB

Versions: 6

Compression:

Stored size: 1.77 KB

Contents

module Pact

   module Provider
      module DSL

         #TODO: Move this into a module, out of configuration
         module Configuration
            def provider= provider
               @provider = provider
            end

            def provider
              if defined? @provider
                @provider
              else
                raise "Please configure your provider. See the Provider section in the README for examples."
              end
            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 Provider" unless @name && !@name.strip.empty?
             raise "Please configure an app for the Provider" 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

Pact.send(:extend, Pact::Provider::DSL)

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
pact-1.0.5 lib/pact/provider/dsl.rb
pact-1.0.4 lib/pact/provider/dsl.rb
pact-1.0.3 lib/pact/provider/dsl.rb
pact-1.0.2 lib/pact/provider/dsl.rb
pact-1.0.1 lib/pact/provider/dsl.rb
pact-1.0.0 lib/pact/provider/dsl.rb