Sha256: f2abb216fe6c329b79d04e730efb6ec80bfcaf094445eb1cac27535caf494789

Contents?: true

Size: 1.08 KB

Versions: 9

Compression:

Stored size: 1.08 KB

Contents

# encoding: UTF-8
require 'hashie'
require_relative './enum'

#
# A class to model the number of times an expectation should be respected.
# @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
#
module MockServer::Model
  # Enum for boolean values since Ruby does not have this by default
  class Boolean < Enum
    def allowed_values
      [true, false]
    end
  end

  # Model for times class
  class Times < Hashie::Dash
    include Hashie::Extensions::MethodAccess
    include Hashie::Extensions::IgnoreUndeclared
    include Hashie::Extensions::Coercion

    property :remaining_times, default: 0
    property :unlimited, default: false

    coerce_key :unlimited, Boolean
  end

  # DSL methods related to times
  module DSL
    def unlimited
      Times.new(unlimited: true)
    end

    def once
      Times.new(remaining_times: 1)
    end

    def exactly(num)
      Times.new(remaining_times: num)
    end

    def at_least(num)
      Times.new(remaining_times: num, unlimited: true)
    end

    def times(&_)
      obj = once
      yield obj if block_given?
      obj
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
mockserver-client-1.0.4 lib/mockserver/model/times.rb
mockserver-client-1.0.3 lib/mockserver/model/times.rb
mockserver-client-1.0.2.pre lib/mockserver/model/times.rb
mockserver-client-1.0.1.pre lib/mockserver/model/times.rb
mockserver-client-1.0.1 lib/mockserver/model/times.rb
mockserver-client-1.0.0 lib/mockserver/model/times.rb
mockserver-client-1.0.0.pre lib/mockserver/model/times.rb
mockserver-client-0.0.3 lib/mockserver/model/times.rb
mockserver-client-0.0.1 lib/mockserver/model/times.rb