From 01f6e5a06bdf746e74cea23a238fc2127703999f Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Tue, 4 Oct 2022 17:31:58 +0200 Subject: [PATCH] spec(dossier_preloader): add spec --- spec/models/dossier_preloader_spec.rb | 36 +++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 spec/models/dossier_preloader_spec.rb diff --git a/spec/models/dossier_preloader_spec.rb b/spec/models/dossier_preloader_spec.rb new file mode 100644 index 000000000..610a932bd --- /dev/null +++ b/spec/models/dossier_preloader_spec.rb @@ -0,0 +1,36 @@ +describe DossierPreloader do + let(:types_de_champ) do + [ + { type: :text }, + { type: :repetition, children: [{ type: :text }] } + ] + end + let(:procedure) { create(:procedure, types_de_champ_public: types_de_champ) } + let(:dossier) { create(:dossier, procedure: procedure) } + let(:repetition) { subject.champs.second } + let(:first_child) { subject.champs.second.champs.first } + + describe 'all' do + subject { DossierPreloader.new([dossier]).all.first } + + before { subject } + + it do + count = 0 + + callback = lambda { |*_args| count += 1 } + ActiveSupport::Notifications.subscribed(callback, "sql.active_record") do + expect(subject.id).to eq(dossier.id) + expect(subject.champs.size).to eq(types_de_champ.size) + expect(subject.changed?).to be false + + expect(first_child.type).to eq('Champs::TextChamp') + expect(repetition.id).not_to eq(first_child.id) + expect(subject.champs.first.dossier).to eq(subject) + expect(first_child.parent).to eq(repetition) + end + + expect(count).to eq(1) + end + end +end