From 75a36cd2ad367add86da3fb2e99f0d09f5f4f7e0 Mon Sep 17 00:00:00 2001 From: Yousaf Nabi Date: Wed, 14 Aug 2024 15:57:15 +0100 Subject: [PATCH] feat: add like_integer / like_decimal helpers --- lib/pact/helpers.rb | 8 ++++++++ spec/lib/pact/helpers_spec.rb | 21 +++++++++++++++++++++ spec/lib/pact/term_spec.rb | 2 +- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/lib/pact/helpers.rb b/lib/pact/helpers.rb index c6c8228..c4e663f 100644 --- a/lib/pact/helpers.rb +++ b/lib/pact/helpers.rb @@ -47,6 +47,14 @@ def like_date date Pact::Term.new(generate: date, matcher: /^\d{4}-[01]\d-[0-3]\d$/) end + def like_integer int + Pact::Term.new(generate: int, matcher: /[0-9]/) + end + + def like_decimal float + Pact::Term.new(generate: float, matcher: /[-+]?([0-9]*\.[0-9]+|[0-9]+)/) + end + def like_datetime_rfc822 datetime Pact::Term.new( generate: datetime, diff --git a/spec/lib/pact/helpers_spec.rb b/spec/lib/pact/helpers_spec.rb index 86a6eff..3381eb9 100644 --- a/spec/lib/pact/helpers_spec.rb +++ b/spec/lib/pact/helpers_spec.rb @@ -139,5 +139,26 @@ module Pact end end + + describe "#like_integer" do + let(:integer) { 1 } + + it "creates a Pact::Term with regex matcher for integers" do + expect(like_integer(integer)).to eq Pact::Term.new( + generate: integer, + matcher: /[0-9]/ + ) + end + end + describe "#like_decimal" do + let(:float) { 10.2 } + + it "creates a Pact::Term with regex matcher for decimals" do + expect(like_decimal(10.2)).to eq Pact::Term.new( + generate: float, + matcher: /[-+]?([0-9]*\.[0-9]+|[0-9]+)/ + ) + end + end end end diff --git a/spec/lib/pact/term_spec.rb b/spec/lib/pact/term_spec.rb index 414ca09..f899a58 100644 --- a/spec/lib/pact/term_spec.rb +++ b/spec/lib/pact/term_spec.rb @@ -23,7 +23,7 @@ module Pact end context "when the generate is a float" do - let(:term) { Term.new(generate: 50.51, matcher: /\d(\.\d{1,2})/)} + let(:term) { Term.new(generate: 50.51, matcher: /[-+]?([0-9]*\.[0-9]+|[0-9]+)/)} it 'does not raise an exception' do term