Sha256: 8cbc78af7a9fb547ea07a275e0555fd4c19446d4f1f3d64362b0b6b34cb494bc
Contents?: true
Size: 1.35 KB
Versions: 3
Compression:
Stored size: 1.35 KB
Contents
# frozen_string_literal: true module Sbmt module Pact module Matchers module V3 class Each < Sbmt::Pact::Matchers::Base def initialize(template, min) raise MatcherInitializationError, "#{self.class}: #{min} should be greater than 0" if min.present? && min < 1 min_array_size = min.presence || 1 val = template.is_a?(Array) ? template : [template] * min_array_size raise MatcherInitializationError, "#{self.class}: #{min} is invalid: template size is #{val.size}" if min_array_size != val.size super( spec_version: Sbmt::Pact::Matchers::PACT_SPEC_V3, kind: "type", template: val, opts: {min: min_array_size}) end def as_plugin if @template.first.is_a?(Hash) return { "pact:match" => "eachValue(matching($'SAMPLE'))", "SAMPLE" => serialize!(@template.first.deep_dup, :plugin) } end params = @opts.except(:min).values.map { |v| format_primitive(v) }.join(",") value = format_primitive(@template.first) return "eachValue(matching(#{@kind}, #{params}, #{value}))" if params.present? "eachValue(matching(#{@kind}, #{value}))" end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
sbmt-pact-0.12.2 | lib/sbmt/pact/matchers/v3/each.rb |
sbmt-pact-0.12.1 | lib/sbmt/pact/matchers/v3/each.rb |
sbmt-pact-0.12.0 | lib/sbmt/pact/matchers/v3/each.rb |