From 9773977496467289ff46622b8a32e5e2f5f4fc2f Mon Sep 17 00:00:00 2001 From: Christophe Robillard Date: Fri, 12 Aug 2022 17:37:30 +0200 Subject: [PATCH] know if a zone exist at a specific date --- app/models/zone.rb | 4 ++++ spec/models/zone_spec.rb | 31 +++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/app/models/zone.rb b/app/models/zone.rb index ccb1205a9..73af1eb74 100644 --- a/app/models/zone.rb +++ b/app/models/zone.rb @@ -23,4 +23,8 @@ class Zone < ApplicationRecord date >= designated_on end.at(1) end + + def available_at?(date) + label_at(date) != 'NA' + end end diff --git a/spec/models/zone_spec.rb b/spec/models/zone_spec.rb index 8cc0becf0..75dbb7e7e 100644 --- a/spec/models/zone_spec.rb +++ b/spec/models/zone_spec.rb @@ -34,5 +34,36 @@ describe Zone do expect(zone.label_at(start_previous_government - 1.week)).to eq "Ministère de l'Économie, des Finances et de la Relance" end end + + describe "#available_at?" do + let(:start_previous_government) { Date.parse('2020-07-06') } + let(:start_last_government) { Date.parse('2022-05-20') } + let(:start_futur_government) { Date.parse('2027-05-20') } + let(:zone) do + create(:zone, labels: [ + { + designated_on: start_previous_government, + name: "Ministère des Outre-mer" + }, + { + designated_on: start_last_government, + name: "NA" + }, + { + designated_on: start_futur_government, + name: "Ministère des Territoires d'Outre-mer" + } + ]) + end + + it "returns false if the zone does'nt exist at a specific date" do + expect(zone.available_at?(start_last_government + 1.week)).to be_falsy + end + + it "returns true if the zone exist at a specific date" do + expect(zone.available_at?(start_futur_government + 1.week)).to be_truthy + expect(zone.available_at?(start_previous_government + 1.week)).to be_truthy + end + end end