Merge pull request #8066 from tchak/refactor-procedure-types-de-champ

refactor(procedure): types_de_champ -> active_revision.types_de_champ_public
This commit is contained in:
Paul Chavard 2022-11-17 14:01:25 +01:00 committed by GitHub
commit d52bdd598c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
23 changed files with 91 additions and 94 deletions

View file

@ -12,7 +12,7 @@ class Procedure::Card::ChampsComponent < ApplicationComponent
def error_messages def error_messages
[ [
@procedure.errors.messages_for(:draft_types_de_champ), @procedure.errors.messages_for(:draft_types_de_champ_public),
@procedure.errors.messages_for(:draft_revision) @procedure.errors.messages_for(:draft_revision)
].flatten.to_sentence ].flatten.to_sentence
end end

View file

@ -8,7 +8,7 @@ class ProcedureDashboard < Administrate::BaseDashboard
# which determines how the attribute is displayed # which determines how the attribute is displayed
# on pages throughout the dashboard. # on pages throughout the dashboard.
ATTRIBUTE_TYPES = { ATTRIBUTE_TYPES = {
published_types_de_champ: TypesDeChampCollectionField, published_types_de_champ_public: TypesDeChampCollectionField,
published_types_de_champ_private: TypesDeChampCollectionField, published_types_de_champ_private: TypesDeChampCollectionField,
path: ProcedureLinkField, path: ProcedureLinkField,
dossiers: Field::HasMany, dossiers: Field::HasMany,
@ -76,7 +76,7 @@ class ProcedureDashboard < Administrate::BaseDashboard
:whitelisted_at, :whitelisted_at,
:hidden_at, :hidden_at,
:closed_at, :closed_at,
:published_types_de_champ, :published_types_de_champ_public,
:published_types_de_champ_private, :published_types_de_champ_private,
:for_individual, :for_individual,
:auto_archive_on, :auto_archive_on,

View file

@ -75,10 +75,11 @@ class Procedure < ApplicationRecord
belongs_to :published_revision, class_name: 'ProcedureRevision', optional: true belongs_to :published_revision, class_name: 'ProcedureRevision', optional: true
has_many :deleted_dossiers, dependent: :destroy has_many :deleted_dossiers, dependent: :destroy
has_many :published_types_de_champ, through: :published_revision, source: :types_de_champ_public has_many :draft_types_de_champ_public, through: :draft_revision, source: :types_de_champ_public
has_many :published_types_de_champ_private, through: :published_revision, source: :types_de_champ_private
has_many :draft_types_de_champ, through: :draft_revision, source: :types_de_champ_public
has_many :draft_types_de_champ_private, through: :draft_revision, source: :types_de_champ_private has_many :draft_types_de_champ_private, through: :draft_revision, source: :types_de_champ_private
has_many :published_types_de_champ_public, through: :published_revision, source: :types_de_champ_public
has_many :published_types_de_champ_private, through: :published_revision, source: :types_de_champ_private
has_one :draft_attestation_template, through: :draft_revision, source: :attestation_template has_one :draft_attestation_template, through: :draft_revision, source: :attestation_template
has_one :published_attestation_template, through: :published_revision, source: :attestation_template has_one :published_attestation_template, through: :published_revision, source: :attestation_template
@ -110,14 +111,6 @@ class Procedure < ApplicationRecord
brouillon? ? draft_revision : published_revision brouillon? ? draft_revision : published_revision
end end
def types_de_champ
brouillon? ? draft_types_de_champ : published_types_de_champ
end
def types_de_champ_private
brouillon? ? draft_types_de_champ_private : published_types_de_champ_private
end
def types_de_champ_for_procedure_presentation(parent = nil) def types_de_champ_for_procedure_presentation(parent = nil)
if brouillon? if brouillon?
if parent.nil? if parent.nil?
@ -269,7 +262,7 @@ class Procedure < ApplicationRecord
validates :description, presence: true, allow_blank: false, allow_nil: false validates :description, presence: true, allow_blank: false, allow_nil: false
validates :administrateurs, presence: true validates :administrateurs, presence: true
validates :lien_site_web, presence: true, if: :publiee? validates :lien_site_web, presence: true, if: :publiee?
validates :draft_types_de_champ, validates :draft_types_de_champ_public,
'types_de_champ/no_empty_block': true, 'types_de_champ/no_empty_block': true,
'types_de_champ/no_empty_drop_down': true, 'types_de_champ/no_empty_drop_down': true,
on: :publication on: :publication
@ -535,7 +528,7 @@ class Procedure < ApplicationRecord
end end
if is_different_admin || from_library if is_different_admin || from_library
procedure.draft_types_de_champ.each { |tdc| tdc.options&.delete(:old_pj) } procedure.draft_revision.types_de_champ_public.each { |tdc| tdc.options&.delete(:old_pj) }
end end
procedure procedure
@ -860,7 +853,7 @@ class Procedure < ApplicationRecord
children.each do |child| children.each do |child|
child.update!(parent: coordinates_by_stable_id.fetch(child.parent.stable_id)) child.update!(parent: coordinates_by_stable_id.fetch(child.parent.stable_id))
end end
new_draft.revision_types_de_champ.reload new_draft.reload
end end
def before_publish def before_publish

View file

@ -48,7 +48,11 @@ class ProcedureSerializer < ActiveModel::Serializer
end end
def types_de_champ def types_de_champ
object.types_de_champ.reject { |c| c.old_pj.present? } object.active_revision.types_de_champ_public.reject { |c| c.old_pj.present? }
end
def types_de_champ_private
object.active_revision.types_de_champ_private
end end
def types_de_piece_justificative def types_de_piece_justificative

View file

@ -4,11 +4,11 @@
[@procedure.libelle.truncate_words(10), admin_procedure_path(@procedure)], [@procedure.libelle.truncate_words(10), admin_procedure_path(@procedure)],
['Publication']] } ['Publication']] }
.container .container
- if @procedure.draft_types_de_champ.dubious.present? - if @procedure.draft_revision.types_de_champ_public.dubious.present?
.card.warning.mb-3 .card.warning.mb-3
.card-title Attention, certains champs ne peuvent être demandé par l'administration. Voici les champs qui nous semblent suspect : .card-title Attention, certains champs ne peuvent être demandé par l'administration. Voici les champs qui nous semblent suspect :
%ul %ul
- @procedure.draft_types_de_champ.dubious.each do |dubious_champs| - @procedure.draft_revision.types_de_champ_public.dubious.each do |dubious_champs|
%li.dubious-champs= "#{dubious_champs.libelle} (#{dubious_champs.description})" %li.dubious-champs= "#{dubious_champs.libelle} (#{dubious_champs.description})"
.lien-demarche .lien-demarche
%h1 %h1

View file

@ -31,7 +31,7 @@ en:
attributes: attributes:
api_particulier_token: api_particulier_token:
invalid: 'invalid format' invalid: 'invalid format'
draft_types_de_champ: draft_types_de_champ_public:
format: 'Public field %{message}' format: 'Public field %{message}'
draft_types_de_champ_private: draft_types_de_champ_private:
format: 'Private field %{message}' format: 'Private field %{message}'

View file

@ -31,7 +31,7 @@ fr:
attributes: attributes:
api_particulier_token: api_particulier_token:
invalid: 'na pas le bon format' invalid: 'na pas le bon format'
draft_types_de_champ: draft_types_de_champ_public:
format: 'Le champ %{message}' format: 'Le champ %{message}'
draft_types_de_champ_private: draft_types_de_champ_private:
format: 'Lannotation privée %{message}' format: 'Lannotation privée %{message}'

View file

@ -2,7 +2,7 @@ describe TypesDeChampEditor::ChampComponent, type: :component do
describe 'render by type' do describe 'render by type' do
context 'explication' do context 'explication' do
let(:procedure) { create(:procedure, :with_explication) } let(:procedure) { create(:procedure, :with_explication) }
let(:tdc) { procedure.types_de_champ.first } let(:tdc) { procedure.active_revision.types_de_champ_public.first }
let(:coordinate) { procedure.draft_revision.coordinate_for(tdc) } let(:coordinate) { procedure.draft_revision.coordinate_for(tdc) }
let(:component) { described_class.new(coordinate: coordinate, upper_coordinates: []) } let(:component) { described_class.new(coordinate: coordinate, upper_coordinates: []) }

View file

@ -43,7 +43,7 @@ describe API::V1::ProceduresController, type: :controller do
describe 'type_de_champ' do describe 'type_de_champ' do
subject { super()[:types_de_champ][0] } subject { super()[:types_de_champ][0] }
let(:champ) { procedure.types_de_champ.first } let(:champ) { procedure.active_revision.types_de_champ_public.first }
it { expect(subject[:id]).to eq(champ.id) } it { expect(subject[:id]).to eq(champ.id) }
it { expect(subject[:libelle]).to eq(champ.libelle) } it { expect(subject[:libelle]).to eq(champ.libelle) }

View file

@ -148,7 +148,7 @@ describe API::V2::GraphqlController do
draftRevision: { id: procedure.draft_revision.to_typed_id }, draftRevision: { id: procedure.draft_revision.to_typed_id },
publishedRevision: { publishedRevision: {
id: procedure.published_revision.to_typed_id, id: procedure.published_revision.to_typed_id,
champDescriptors: procedure.published_types_de_champ.map do |tdc| champDescriptors: procedure.published_revision.types_de_champ_public.map do |tdc|
{ {
type: tdc.type_champ type: tdc.type_champ
} }
@ -159,7 +159,7 @@ describe API::V2::GraphqlController do
typeOrganisme: procedure.service.type_organisme, typeOrganisme: procedure.service.type_organisme,
organisme: procedure.service.organisme organisme: procedure.service.organisme
}, },
champDescriptors: procedure.types_de_champ.map do |tdc| champDescriptors: procedure.active_revision.types_de_champ_public.map do |tdc|
{ {
id: tdc.to_typed_id, id: tdc.to_typed_id,
label: tdc.libelle, label: tdc.libelle,

View file

@ -2,7 +2,7 @@ describe '20201001161931_migrate_filters_to_use_stable_id' do
let(:rake_task) { Rake::Task['after_party:migrate_filters_to_use_stable_id'] } let(:rake_task) { Rake::Task['after_party:migrate_filters_to_use_stable_id'] }
let(:procedure) { create(:procedure, :with_instructeur, :with_type_de_champ) } let(:procedure) { create(:procedure, :with_instructeur, :with_type_de_champ) }
let(:type_de_champ) { procedure.types_de_champ.first } let(:type_de_champ) { procedure.active_revision.types_de_champ_public.first }
let(:sort) do let(:sort) do
{ {
"table" => "type_de_champ", "table" => "type_de_champ",

View file

@ -75,7 +75,7 @@ describe Champ do
procedure.active_revision.add_type_de_champ( procedure.active_revision.add_type_de_champ(
libelle: 'header', libelle: 'header',
type_champ: 'header_section', type_champ: 'header_section',
parent_stable_id: procedure.types_de_champ.find(&:repetition?).stable_id parent_stable_id: procedure.active_revision.types_de_champ_public.find(&:repetition?).stable_id
) )
end end
end end
@ -494,7 +494,7 @@ describe Champ do
describe 'repetition' do describe 'repetition' do
let(:procedure) { create(:procedure, :published, :with_type_de_champ, :with_type_de_champ_private, :with_repetition) } let(:procedure) { create(:procedure, :published, :with_type_de_champ, :with_type_de_champ_private, :with_repetition) }
let(:tdc_repetition) { procedure.types_de_champ.find(&:repetition?) } let(:tdc_repetition) { procedure.active_revision.types_de_champ_public.find(&:repetition?) }
let(:tdc_text) { procedure.active_revision.children_of(tdc_repetition).first } let(:tdc_text) { procedure.active_revision.children_of(tdc_repetition).first }
let(:dossier) { create(:dossier, procedure: procedure) } let(:dossier) { create(:dossier, procedure: procedure) }

View file

@ -2,8 +2,8 @@ describe Dossier do
describe '#can_rebase?' do describe '#can_rebase?' do
let(:procedure) { create(:procedure, :with_type_de_champ_mandatory, :with_yes_no, attestation_template: build(:attestation_template)) } let(:procedure) { create(:procedure, :with_type_de_champ_mandatory, :with_yes_no, attestation_template: build(:attestation_template)) }
let(:attestation_template) { procedure.draft_revision.attestation_template.find_or_revise! } let(:attestation_template) { procedure.draft_revision.attestation_template.find_or_revise! }
let(:type_de_champ) { procedure.types_de_champ.find { |tdc| !tdc.mandatory? } } let(:type_de_champ) { procedure.active_revision.types_de_champ_public.find { |tdc| !tdc.mandatory? } }
let(:mandatory_type_de_champ) { procedure.types_de_champ.find(&:mandatory?) } let(:mandatory_type_de_champ) { procedure.active_revision.types_de_champ_public.find(&:mandatory?) }
before { Flipper.enable(:procedure_revisions, procedure) } before { Flipper.enable(:procedure_revisions, procedure) }
@ -155,17 +155,17 @@ describe Dossier do
let(:procedure) { create(:procedure, :with_type_de_champ_mandatory, :with_yes_no, :with_repetition, :with_datetime) } let(:procedure) { create(:procedure, :with_type_de_champ_mandatory, :with_yes_no, :with_repetition, :with_datetime) }
let(:dossier) { create(:dossier, procedure: procedure) } let(:dossier) { create(:dossier, procedure: procedure) }
let(:yes_no_type_de_champ) { procedure.types_de_champ.find { |tdc| tdc.type_champ == TypeDeChamp.type_champs.fetch(:yes_no) } } let(:yes_no_type_de_champ) { procedure.active_revision.types_de_champ_public.find { |tdc| tdc.type_champ == TypeDeChamp.type_champs.fetch(:yes_no) } }
let(:text_type_de_champ) { procedure.types_de_champ.find(&:mandatory?) } let(:text_type_de_champ) { procedure.active_revision.types_de_champ_public.find(&:mandatory?) }
let(:text_champ) { dossier.champs_public.find(&:mandatory?) } let(:text_champ) { dossier.champs_public.find(&:mandatory?) }
let(:rebased_text_champ) { dossier.champs_public.find { |c| c.type_champ == TypeDeChamp.type_champs.fetch(:text) } } let(:rebased_text_champ) { dossier.champs_public.find { |c| c.type_champ == TypeDeChamp.type_champs.fetch(:text) } }
let(:datetime_type_de_champ) { procedure.types_de_champ.find { |tdc| tdc.type_champ == TypeDeChamp.type_champs.fetch(:datetime) } } let(:datetime_type_de_champ) { procedure.active_revision.types_de_champ_public.find { |tdc| tdc.type_champ == TypeDeChamp.type_champs.fetch(:datetime) } }
let(:datetime_champ) { dossier.champs_public.find { |c| c.type_champ == TypeDeChamp.type_champs.fetch(:datetime) } } let(:datetime_champ) { dossier.champs_public.find { |c| c.type_champ == TypeDeChamp.type_champs.fetch(:datetime) } }
let(:rebased_datetime_champ) { dossier.champs_public.find { |c| c.type_champ == TypeDeChamp.type_champs.fetch(:date) } } let(:rebased_datetime_champ) { dossier.champs_public.find { |c| c.type_champ == TypeDeChamp.type_champs.fetch(:date) } }
let(:repetition_type_de_champ) { procedure.types_de_champ.find { |tdc| tdc.type_champ == TypeDeChamp.type_champs.fetch(:repetition) } } let(:repetition_type_de_champ) { procedure.active_revision.types_de_champ_public.find { |tdc| tdc.type_champ == TypeDeChamp.type_champs.fetch(:repetition) } }
let(:repetition_text_type_de_champ) { procedure.active_revision.children_of(repetition_type_de_champ).find { |tdc| tdc.type_champ == TypeDeChamp.type_champs.fetch(:text) } } let(:repetition_text_type_de_champ) { procedure.active_revision.children_of(repetition_type_de_champ).find { |tdc| tdc.type_champ == TypeDeChamp.type_champs.fetch(:text) } }
let(:repetition_champ) { dossier.champs_public.find { |c| c.type_champ == TypeDeChamp.type_champs.fetch(:repetition) } } let(:repetition_champ) { dossier.champs_public.find { |c| c.type_champ == TypeDeChamp.type_champs.fetch(:repetition) } }
let(:rebased_repetition_champ) { dossier.champs_public.find { |c| c.type_champ == TypeDeChamp.type_champs.fetch(:repetition) } } let(:rebased_repetition_champ) { dossier.champs_public.find { |c| c.type_champ == TypeDeChamp.type_champs.fetch(:repetition) } }

View file

@ -1485,12 +1485,12 @@ describe Dossier do
describe "champs_for_export" do describe "champs_for_export" do
context 'with a unconditionnal procedure' do context 'with a unconditionnal procedure' do
let(:procedure) { create(:procedure, :with_type_de_champ, :with_datetime, :with_yes_no, :with_explication, :with_commune, :with_repetition, zones: [create(:zone)]) } let(:procedure) { create(:procedure, :with_type_de_champ, :with_datetime, :with_yes_no, :with_explication, :with_commune, :with_repetition, zones: [create(:zone)]) }
let(:text_type_de_champ) { procedure.types_de_champ.find { |type_de_champ| type_de_champ.type_champ == TypeDeChamp.type_champs.fetch(:text) } } let(:text_type_de_champ) { procedure.active_revision.types_de_champ_public.find { |type_de_champ| type_de_champ.type_champ == TypeDeChamp.type_champs.fetch(:text) } }
let(:yes_no_type_de_champ) { procedure.types_de_champ.find { |type_de_champ| type_de_champ.type_champ == TypeDeChamp.type_champs.fetch(:yes_no) } } let(:yes_no_type_de_champ) { procedure.active_revision.types_de_champ_public.find { |type_de_champ| type_de_champ.type_champ == TypeDeChamp.type_champs.fetch(:yes_no) } }
let(:datetime_type_de_champ) { procedure.types_de_champ.find { |type_de_champ| type_de_champ.type_champ == TypeDeChamp.type_champs.fetch(:datetime) } } let(:datetime_type_de_champ) { procedure.active_revision.types_de_champ_public.find { |type_de_champ| type_de_champ.type_champ == TypeDeChamp.type_champs.fetch(:datetime) } }
let(:explication_type_de_champ) { procedure.types_de_champ.find { |type_de_champ| type_de_champ.type_champ == TypeDeChamp.type_champs.fetch(:explication) } } let(:explication_type_de_champ) { procedure.active_revision.types_de_champ_public.find { |type_de_champ| type_de_champ.type_champ == TypeDeChamp.type_champs.fetch(:explication) } }
let(:commune_type_de_champ) { procedure.types_de_champ.find { |type_de_champ| type_de_champ.type_champ == TypeDeChamp.type_champs.fetch(:communes) } } let(:commune_type_de_champ) { procedure.active_revision.types_de_champ_public.find { |type_de_champ| type_de_champ.type_champ == TypeDeChamp.type_champs.fetch(:communes) } }
let(:repetition_type_de_champ) { procedure.types_de_champ.find { |type_de_champ| type_de_champ.type_champ == TypeDeChamp.type_champs.fetch(:repetition) } } let(:repetition_type_de_champ) { procedure.active_revision.types_de_champ_public.find { |type_de_champ| type_de_champ.type_champ == TypeDeChamp.type_champs.fetch(:repetition) } }
let(:repetition_champ) { dossier.champs_public.find(&:repetition?) } let(:repetition_champ) { dossier.champs_public.find(&:repetition?) }
let(:repetition_second_revision_champ) { dossier_second_revision.champs_public.find(&:repetition?) } let(:repetition_second_revision_champ) { dossier_second_revision.champs_public.find(&:repetition?) }
let(:dossier) { create(:dossier, procedure: procedure) } let(:dossier) { create(:dossier, procedure: procedure) }
@ -1554,8 +1554,8 @@ describe Dossier do
let(:types_de_champ) { [{ type: :yes_no }, { type: :text }] } let(:types_de_champ) { [{ type: :yes_no }, { type: :text }] }
let(:procedure) { create(:procedure, types_de_champ_public: types_de_champ) } let(:procedure) { create(:procedure, types_de_champ_public: types_de_champ) }
let(:dossier) { create(:dossier, procedure:) } let(:dossier) { create(:dossier, procedure:) }
let(:yes_no_tdc) { procedure.types_de_champ.first } let(:yes_no_tdc) { procedure.active_revision.types_de_champ_public.first }
let(:text_tdc) { procedure.types_de_champ.second } let(:text_tdc) { procedure.active_revision.types_de_champ_public.second }
let(:tdcs) { dossier.champs_public.map(&:type_de_champ) } let(:tdcs) { dossier.champs_public.map(&:type_de_champ) }
subject { Dossier.champs_for_export(dossier.champs_public, tdcs) } subject { Dossier.champs_for_export(dossier.champs_public, tdcs) }

View file

@ -2,7 +2,7 @@ describe ProcedurePresentation do
let(:procedure) { create(:procedure, :with_type_de_champ, :with_type_de_champ_private) } let(:procedure) { create(:procedure, :with_type_de_champ, :with_type_de_champ_private) }
let(:instructeur) { create(:instructeur) } let(:instructeur) { create(:instructeur) }
let(:assign_to) { create(:assign_to, procedure: procedure, instructeur: instructeur) } let(:assign_to) { create(:assign_to, procedure: procedure, instructeur: instructeur) }
let(:first_type_de_champ) { assign_to.procedure.types_de_champ.first } let(:first_type_de_champ) { assign_to.procedure.active_revision.types_de_champ_public.first }
let(:first_type_de_champ_id) { first_type_de_champ.stable_id.to_s } let(:first_type_de_champ_id) { first_type_de_champ.stable_id.to_s }
let(:procedure_presentation) { let(:procedure_presentation) {
create(:procedure_presentation, create(:procedure_presentation,
@ -52,10 +52,10 @@ describe ProcedurePresentation do
describe "#fields" do describe "#fields" do
context 'when the procedure can have a SIRET number' do context 'when the procedure can have a SIRET number' do
let(:procedure) { create(:procedure, :with_type_de_champ, :with_type_de_champ_private, types_de_champ_count: 4, types_de_champ_private_count: 4) } let(:procedure) { create(:procedure, :with_type_de_champ, :with_type_de_champ_private, types_de_champ_count: 4, types_de_champ_private_count: 4) }
let(:tdc_1) { procedure.types_de_champ[0] } let(:tdc_1) { procedure.active_revision.types_de_champ_public[0] }
let(:tdc_2) { procedure.types_de_champ[1] } let(:tdc_2) { procedure.active_revision.types_de_champ_public[1] }
let(:tdc_private_1) { procedure.types_de_champ_private[0] } let(:tdc_private_1) { procedure.active_revision.types_de_champ_private[0] }
let(:tdc_private_2) { procedure.types_de_champ_private[1] } let(:tdc_private_2) { procedure.active_revision.types_de_champ_private[1] }
let(:expected) { let(:expected) {
[ [
{ "label" => 'Créé le', "table" => 'self', "column" => 'created_at', 'classname' => '', 'virtual' => false, 'type' => :date, "scope" => '' }, { "label" => 'Créé le', "table" => 'self', "column" => 'created_at', 'classname' => '', 'virtual' => false, 'type' => :date, "scope" => '' },
@ -90,10 +90,10 @@ describe ProcedurePresentation do
} }
before do before do
procedure.types_de_champ[2].update_attribute(:type_champ, TypeDeChamp.type_champs.fetch(:header_section)) procedure.active_revision.types_de_champ_public[2].update_attribute(:type_champ, TypeDeChamp.type_champs.fetch(:header_section))
procedure.types_de_champ[3].update_attribute(:type_champ, TypeDeChamp.type_champs.fetch(:explication)) procedure.active_revision.types_de_champ_public[3].update_attribute(:type_champ, TypeDeChamp.type_champs.fetch(:explication))
procedure.types_de_champ_private[2].update_attribute(:type_champ, TypeDeChamp.type_champs.fetch(:header_section)) procedure.active_revision.types_de_champ_private[2].update_attribute(:type_champ, TypeDeChamp.type_champs.fetch(:header_section))
procedure.types_de_champ_private[3].update_attribute(:type_champ, TypeDeChamp.type_champs.fetch(:explication)) procedure.active_revision.types_de_champ_private[3].update_attribute(:type_champ, TypeDeChamp.type_champs.fetch(:explication))
end end
subject { create(:procedure_presentation, assign_to: assign_to) } subject { create(:procedure_presentation, assign_to: assign_to) }
@ -225,7 +225,7 @@ describe ProcedurePresentation do
context 'for type_de_champ table' do context 'for type_de_champ table' do
context 'with no revisions' do context 'with no revisions' do
let(:table) { 'type_de_champ' } let(:table) { 'type_de_champ' }
let(:column) { procedure.types_de_champ.first.stable_id.to_s } let(:column) { procedure.active_revision.types_de_champ_public.first.stable_id.to_s }
let(:beurre_dossier) { create(:dossier, procedure: procedure) } let(:beurre_dossier) { create(:dossier, procedure: procedure) }
let(:tartine_dossier) { create(:dossier, procedure: procedure) } let(:tartine_dossier) { create(:dossier, procedure: procedure) }
@ -251,7 +251,7 @@ describe ProcedurePresentation do
context 'with a revision adding a new type_de_champ' do context 'with a revision adding a new type_de_champ' do
let!(:tdc) { { type_champ: :text, libelle: 'nouveau champ' } } let!(:tdc) { { type_champ: :text, libelle: 'nouveau champ' } }
let(:table) { 'type_de_champ' } let(:table) { 'type_de_champ' }
let(:column) { procedure.types_de_champ.last.stable_id.to_s } let(:column) { procedure.active_revision.types_de_champ_public.last.stable_id.to_s }
let(:nothing_dossier) { create(:dossier, procedure: procedure) } let(:nothing_dossier) { create(:dossier, procedure: procedure) }
let(:beurre_dossier) { create(:dossier, procedure: procedure) } let(:beurre_dossier) { create(:dossier, procedure: procedure) }
@ -280,7 +280,7 @@ describe ProcedurePresentation do
context 'for type_de_champ_private table' do context 'for type_de_champ_private table' do
context 'with no revisions' do context 'with no revisions' do
let(:table) { 'type_de_champ_private' } let(:table) { 'type_de_champ_private' }
let(:column) { procedure.types_de_champ_private.first.stable_id.to_s } let(:column) { procedure.active_revision.types_de_champ_private.first.stable_id.to_s }
let(:biere_dossier) { create(:dossier, procedure: procedure) } let(:biere_dossier) { create(:dossier, procedure: procedure) }
let(:vin_dossier) { create(:dossier, procedure: procedure) } let(:vin_dossier) { create(:dossier, procedure: procedure) }
@ -306,7 +306,7 @@ describe ProcedurePresentation do
context 'with a revision adding a new type_de_champ' do context 'with a revision adding a new type_de_champ' do
let!(:tdc) { { type_champ: :text, private: true, libelle: 'nouveau champ' } } let!(:tdc) { { type_champ: :text, private: true, libelle: 'nouveau champ' } }
let(:table) { 'type_de_champ_private' } let(:table) { 'type_de_champ_private' }
let(:column) { procedure.types_de_champ_private.last.stable_id.to_s } let(:column) { procedure.active_revision.types_de_champ_private.last.stable_id.to_s }
let(:nothing_dossier) { create(:dossier, procedure: procedure) } let(:nothing_dossier) { create(:dossier, procedure: procedure) }
let(:biere_dossier) { create(:dossier, procedure: procedure) } let(:biere_dossier) { create(:dossier, procedure: procedure) }
@ -511,7 +511,7 @@ describe ProcedurePresentation do
let(:kept_dossier) { create(:dossier, procedure: procedure) } let(:kept_dossier) { create(:dossier, procedure: procedure) }
let(:discarded_dossier) { create(:dossier, procedure: procedure) } let(:discarded_dossier) { create(:dossier, procedure: procedure) }
let(:type_de_champ) { procedure.types_de_champ.first } let(:type_de_champ) { procedure.active_revision.types_de_champ_public.first }
context 'with single value' do context 'with single value' do
before do before do
@ -561,7 +561,7 @@ describe ProcedurePresentation do
let(:kept_dossier) { create(:dossier, procedure: procedure) } let(:kept_dossier) { create(:dossier, procedure: procedure) }
let(:discarded_dossier) { create(:dossier, procedure: procedure) } let(:discarded_dossier) { create(:dossier, procedure: procedure) }
let(:type_de_champ_private) { procedure.types_de_champ_private.first } let(:type_de_champ_private) { procedure.active_revision.types_de_champ_private.first }
before do before do
kept_dossier.champs_private.find_by(type_de_champ: type_de_champ_private).update(value: 'keep me') kept_dossier.champs_private.find_by(type_de_champ: type_de_champ_private).update(value: 'keep me')

View file

@ -303,7 +303,7 @@ describe Procedure do
end end
describe 'draft_types_de_champ validations' do describe 'draft_types_de_champ validations' do
let(:repetition) { repetition = procedure.types_de_champ.find(&:repetition?) } let(:repetition) { repetition = procedure.draft_revision.types_de_champ_public.find(&:repetition?) }
let(:text_field) { build(:type_de_champ_text) } let(:text_field) { build(:type_de_champ_text) }
let(:invalid_repetition_error_message) { 'Le champ « Enfants » doit comporter au moins un champ répétable' } let(:invalid_repetition_error_message) { 'Le champ « Enfants » doit comporter au moins un champ répétable' }
@ -323,14 +323,14 @@ describe Procedure do
context 'on a draft procedure' do context 'on a draft procedure' do
it 'doesnt validate the types de champs' do it 'doesnt validate the types de champs' do
procedure.validate procedure.validate
expect(procedure.errors[:draft_types_de_champ]).not_to be_present expect(procedure.errors[:draft_types_de_champ_public]).not_to be_present
end end
end end
context 'when validating for publication' do context 'when validating for publication' do
it 'validates that no repetition type de champ is empty' do it 'validates that no repetition type de champ is empty' do
procedure.validate(:publication) procedure.validate(:publication)
expect(procedure.errors.full_messages_for(:draft_types_de_champ)).to include(invalid_repetition_error_message) expect(procedure.errors.full_messages_for(:draft_types_de_champ_public)).to include(invalid_repetition_error_message)
new_draft = procedure.draft_revision new_draft = procedure.draft_revision
@ -338,16 +338,16 @@ describe Procedure do
new_draft.revision_types_de_champ.create(type_de_champ: create(:type_de_champ), position: 0, parent: parent_coordinate) new_draft.revision_types_de_champ.create(type_de_champ: create(:type_de_champ), position: 0, parent: parent_coordinate)
procedure.validate(:publication) procedure.validate(:publication)
expect(procedure.errors.full_messages_for(:draft_types_de_champ)).not_to include(invalid_repetition_error_message) expect(procedure.errors.full_messages_for(:draft_types_de_champ_public)).not_to include(invalid_repetition_error_message)
end end
it 'validates that no drop-down type de champ is empty' do it 'validates that no drop-down type de champ is empty' do
procedure.validate(:publication) procedure.validate(:publication)
expect(procedure.errors.full_messages_for(:draft_types_de_champ)).to include(invalid_drop_down_error_message) expect(procedure.errors.full_messages_for(:draft_types_de_champ_public)).to include(invalid_drop_down_error_message)
drop_down.update!(drop_down_list_value: "--title--\r\nsome value") drop_down.update!(drop_down_list_value: "--title--\r\nsome value")
procedure.reload.validate(:publication) procedure.reload.validate(:publication)
expect(procedure.errors.full_messages_for(:draft_types_de_champ)).not_to include(invalid_drop_down_error_message) expect(procedure.errors.full_messages_for(:draft_types_de_champ_public)).not_to include(invalid_drop_down_error_message)
end end
end end
@ -441,8 +441,8 @@ describe Procedure do
api_particulier_token: '123456789012345', api_particulier_token: '123456789012345',
api_particulier_scopes: ['cnaf_famille']) api_particulier_scopes: ['cnaf_famille'])
end end
let(:type_de_champ_repetition) { procedure.types_de_champ.last } let(:type_de_champ_repetition) { procedure.draft_revision.types_de_champ_public.last }
let(:type_de_champ_private_repetition) { procedure.types_de_champ_private.last } let(:type_de_champ_private_repetition) { procedure.draft_revision.types_de_champ_private.last }
let(:received_mail) { build(:received_mail) } let(:received_mail) { build(:received_mail) }
let(:from_library) { false } let(:from_library) { false }
let(:opendata) { true } let(:opendata) { true }
@ -485,28 +485,28 @@ describe Procedure do
it 'should duplicate specific objects with different id' do it 'should duplicate specific objects with different id' do
expect(subject.id).not_to eq(procedure.id) expect(subject.id).not_to eq(procedure.id)
expect(subject.draft_types_de_champ.size).to eq(procedure.draft_types_de_champ.size) expect(subject.draft_revision.types_de_champ_public.size).to eq(procedure.draft_revision.types_de_champ_public.size)
expect(subject.draft_types_de_champ_private.size).to eq(procedure.draft_types_de_champ_private.size) expect(subject.draft_revision.types_de_champ_private.size).to eq(procedure.draft_revision.types_de_champ_private.size)
procedure.draft_types_de_champ.zip(subject.draft_types_de_champ).each do |ptc, stc| procedure.draft_revision.types_de_champ_public.zip(subject.draft_revision.types_de_champ_public).each do |ptc, stc|
expect(stc).to have_same_attributes_as(ptc) expect(stc).to have_same_attributes_as(ptc)
expect(stc.revision).to eq(subject.draft_revision) expect(stc.revision).to eq(subject.draft_revision)
end end
public_repetition = type_de_champ_repetition public_repetition = type_de_champ_repetition
cloned_public_repetition = subject.draft_types_de_champ.repetition.first cloned_public_repetition = subject.draft_revision.types_de_champ_public.repetition.first
procedure.draft_revision.children_of(public_repetition).zip(subject.draft_revision.children_of(cloned_public_repetition)).each do |ptc, stc| procedure.draft_revision.children_of(public_repetition).zip(subject.draft_revision.children_of(cloned_public_repetition)).each do |ptc, stc|
expect(stc).to have_same_attributes_as(ptc) expect(stc).to have_same_attributes_as(ptc)
expect(stc.revision).to eq(subject.draft_revision) expect(stc.revision).to eq(subject.draft_revision)
end end
procedure.draft_types_de_champ_private.zip(subject.draft_types_de_champ_private).each do |ptc, stc| procedure.draft_revision.types_de_champ_private.zip(subject.draft_revision.types_de_champ_private).each do |ptc, stc|
expect(stc).to have_same_attributes_as(ptc) expect(stc).to have_same_attributes_as(ptc)
expect(stc.revision).to eq(subject.draft_revision) expect(stc.revision).to eq(subject.draft_revision)
end end
private_repetition = type_de_champ_private_repetition private_repetition = type_de_champ_private_repetition
cloned_private_repetition = subject.draft_types_de_champ_private.repetition.first cloned_private_repetition = subject.draft_revision.types_de_champ_private.repetition.first
procedure.draft_revision.children_of(private_repetition).zip(subject.draft_revision.children_of(cloned_private_repetition)).each do |ptc, stc| procedure.draft_revision.children_of(private_repetition).zip(subject.draft_revision.children_of(cloned_private_repetition)).each do |ptc, stc|
expect(stc).to have_same_attributes_as(ptc) expect(stc).to have_same_attributes_as(ptc)
expect(stc.revision).to eq(subject.draft_revision) expect(stc.revision).to eq(subject.draft_revision)
@ -540,7 +540,7 @@ describe Procedure do
end end
it 'should discard old pj information' do it 'should discard old pj information' do
subject.draft_types_de_champ.each do |stc| subject.draft_revision.types_de_champ_public.each do |stc|
expect(stc.old_pj).to be_nil expect(stc.old_pj).to be_nil
end end
end end
@ -575,7 +575,7 @@ describe Procedure do
end end
it 'should discard old pj information' do it 'should discard old pj information' do
subject.draft_types_de_champ.each do |stc| subject.draft_revision.types_de_champ_public.each do |stc|
expect(stc.old_pj).to be_nil expect(stc.old_pj).to be_nil
end end
end end
@ -645,12 +645,12 @@ describe Procedure do
end end
it 'should keep types_de_champ ids stable' do it 'should keep types_de_champ ids stable' do
expect(subject.draft_types_de_champ.first.id).not_to eq(procedure.draft_types_de_champ.first.id) expect(subject.draft_revision.types_de_champ_public.first.id).not_to eq(procedure.draft_revision.types_de_champ_public.first.id)
expect(subject.draft_types_de_champ.first.stable_id).to eq(procedure.draft_types_de_champ.first.id) expect(subject.draft_revision.types_de_champ_public.first.stable_id).to eq(procedure.draft_revision.types_de_champ_public.first.id)
end end
it 'should duplicate piece_justificative_template on a type_de_champ' do it 'should duplicate piece_justificative_template on a type_de_champ' do
expect(subject.draft_types_de_champ.where(type_champ: "piece_justificative").first.piece_justificative_template.attached?).to be true expect(subject.draft_revision.types_de_champ_public.where(type_champ: "piece_justificative").first.piece_justificative_template.attached?).to be_truthy
end end
context 'with a notice attached' do context 'with a notice attached' do

View file

@ -210,8 +210,8 @@ describe TypeDeChamp do
let(:procedure) { create(:procedure, :with_type_de_champ, :with_type_de_champ_private) } let(:procedure) { create(:procedure, :with_type_de_champ, :with_type_de_champ_private) }
it 'partition public and private' do it 'partition public and private' do
expect(procedure.types_de_champ.count).to eq(1) expect(procedure.active_revision.types_de_champ_public.count).to eq(1)
expect(procedure.types_de_champ_private.count).to eq(1) expect(procedure.active_revision.types_de_champ_private.count).to eq(1)
end end
end end

View file

@ -23,8 +23,8 @@ describe DemarchesPubliquesExportService do
revision: { revision: {
champDescriptors: [ champDescriptors: [
{ {
description: procedure.types_de_champ.first.description, description: procedure.active_revision.types_de_champ_public.first.description,
label: procedure.types_de_champ.first.libelle, label: procedure.active_revision.types_de_champ_public.first.libelle,
options: nil, options: nil,
required: false, required: false,
type: "text", type: "text",

View file

@ -13,7 +13,7 @@ describe DossierProjectionService do
[ [
{ {
"table" => "type_de_champ", "table" => "type_de_champ",
"column" => procedure.types_de_champ[0].stable_id.to_s "column" => procedure.active_revision.types_de_champ_public[0].stable_id.to_s
} }
] ]
end end
@ -153,7 +153,7 @@ describe DossierProjectionService do
context 'for type_de_champ table' do context 'for type_de_champ table' do
let(:table) { 'type_de_champ' } let(:table) { 'type_de_champ' }
let(:dossier) { create(:dossier) } let(:dossier) { create(:dossier) }
let(:column) { dossier.procedure.types_de_champ.first.stable_id.to_s } let(:column) { dossier.procedure.active_revision.types_de_champ_public.first.stable_id.to_s }
before { dossier.champs_public.first.update(value: 'kale') } before { dossier.champs_public.first.update(value: 'kale') }
@ -163,7 +163,7 @@ describe DossierProjectionService do
context 'for type_de_champ_private table' do context 'for type_de_champ_private table' do
let(:table) { 'type_de_champ_private' } let(:table) { 'type_de_champ_private' }
let(:dossier) { create(:dossier) } let(:dossier) { create(:dossier) }
let(:column) { dossier.procedure.types_de_champ_private.first.stable_id.to_s } let(:column) { dossier.procedure.active_revision.types_de_champ_private.first.stable_id.to_s }
before { dossier.champs_private.first.update(value: 'quinoa') } before { dossier.champs_private.first.update(value: 'quinoa') }
@ -174,7 +174,7 @@ describe DossierProjectionService do
let(:table) { 'type_de_champ' } let(:table) { 'type_de_champ' }
let(:procedure) { create(:procedure, :with_yes_no) } let(:procedure) { create(:procedure, :with_yes_no) }
let(:dossier) { create(:dossier, procedure: procedure) } let(:dossier) { create(:dossier, procedure: procedure) }
let(:column) { dossier.procedure.types_de_champ.first.stable_id.to_s } let(:column) { dossier.procedure.active_revision.types_de_champ_public.first.stable_id.to_s }
before { dossier.champs_public.first.update(value: 'true') } before { dossier.champs_public.first.update(value: 'true') }
@ -185,7 +185,7 @@ describe DossierProjectionService do
let(:table) { 'type_de_champ' } let(:table) { 'type_de_champ' }
let(:procedure) { create(:procedure, :with_address) } let(:procedure) { create(:procedure, :with_address) }
let(:dossier) { create(:dossier, procedure: procedure) } let(:dossier) { create(:dossier, procedure: procedure) }
let(:column) { dossier.procedure.types_de_champ.first.stable_id.to_s } let(:column) { dossier.procedure.active_revision.types_de_champ_public.first.stable_id.to_s }
before { dossier.champs_public.first.update(data: { 'label' => '18 a la bonne rue', 'departement' => 'd' }) } before { dossier.champs_public.first.update(data: { 'label' => '18 a la bonne rue', 'departement' => 'd' }) }
@ -196,7 +196,7 @@ describe DossierProjectionService do
let(:table) { 'type_de_champ' } let(:table) { 'type_de_champ' }
let(:procedure) { create(:procedure, types_de_champ_public: [{ type: :pays }]) } let(:procedure) { create(:procedure, types_de_champ_public: [{ type: :pays }]) }
let(:dossier) { create(:dossier, procedure: procedure) } let(:dossier) { create(:dossier, procedure: procedure) }
let(:column) { dossier.procedure.types_de_champ.first.stable_id.to_s } let(:column) { dossier.procedure.active_revision.types_de_champ_public.first.stable_id.to_s }
let!(:previous_locale) { I18n.locale } let!(:previous_locale) { I18n.locale }
before { I18n.locale = :fr } before { I18n.locale = :fr }

View file

@ -387,7 +387,7 @@ describe ProcedureExportService do
context 'with long libelle composed of utf8 characteres' do context 'with long libelle composed of utf8 characteres' do
before do before do
procedure.types_de_champ.each do |c| procedure.active_revision.types_de_champ_public.each do |c|
c.update!(libelle: "#{c.id} - ?/[] ééé ééé ééééééé ééééééé éééééééé. ééé éé éééééééé éé ééé. ééééé éééééééé ééé ééé.") c.update!(libelle: "#{c.id} - ?/[] ééé ééé ééééééé ééééééé éééééééé. ééé éé éééééééé éé ééé. ééééé éééééééé ééé ééé.")
end end
champ_repetition.champs.each do |c| champ_repetition.champs.each do |c|

View file

@ -4,7 +4,7 @@ describe 'wcag rules for usager', js: true do
let(:litteraire_user) { create(:user, password: password) } let(:litteraire_user) { create(:user, password: password) }
before do before do
procedure.types_de_champ.find { |tdc| tdc.type_champ == TypeDeChamp.type_champs.fetch(:carte) }.destroy procedure.active_revision.types_de_champ_public.find { |tdc| tdc.type_champ == TypeDeChamp.type_champs.fetch(:carte) }.destroy
end end
context 'pages without the need to be logged in' do context 'pages without the need to be logged in' do

View file

@ -126,8 +126,8 @@ describe 'As an administrateur I can edit types de champ', js: true do
fill_in 'Libellé du champ', with: 'Libellé de champ carte', fill_options: { clear: :backspace } fill_in 'Libellé du champ', with: 'Libellé de champ carte', fill_options: { clear: :backspace }
check 'Cadastres' check 'Cadastres'
wait_until { procedure.draft_types_de_champ.first.layer_enabled?(:cadastres) } wait_until { procedure.active_revision.types_de_champ_public.first.layer_enabled?(:cadastres) }
wait_until { procedure.draft_types_de_champ.first.libelle == 'Libellé de champ carte' } wait_until { procedure.active_revision.types_de_champ_public.first.libelle == 'Libellé de champ carte' }
expect(page).to have_content('Formulaire enregistré') expect(page).to have_content('Formulaire enregistré')
preview_window = window_opened_by { click_on 'Prévisualiser le formulaire' } preview_window = window_opened_by { click_on 'Prévisualiser le formulaire' }
@ -147,8 +147,8 @@ describe 'As an administrateur I can edit types de champ', js: true do
fill_in 'Options de la liste', with: 'Un menu', fill_options: { clear: :backspace } fill_in 'Options de la liste', with: 'Un menu', fill_options: { clear: :backspace }
check "Proposer une option « autre » avec un texte libre" check "Proposer une option « autre » avec un texte libre"
wait_until { procedure.draft_types_de_champ.first.drop_down_list_options == ['', 'Un menu'] } wait_until { procedure.active_revision.types_de_champ_public.first.drop_down_list_options == ['', 'Un menu'] }
wait_until { procedure.draft_types_de_champ.first.drop_down_other == "1" } wait_until { procedure.active_revision.types_de_champ_public.first.drop_down_other == "1" }
expect(page).to have_content('Formulaire enregistré') expect(page).to have_content('Formulaire enregistré')
page.refresh page.refresh

View file

@ -1,7 +1,7 @@
describe "procedure filters" do describe "procedure filters" do
let(:instructeur) { create(:instructeur) } let(:instructeur) { create(:instructeur) }
let(:procedure) { create(:procedure, :published, :with_type_de_champ, instructeurs: [instructeur]) } let(:procedure) { create(:procedure, :published, :with_type_de_champ, instructeurs: [instructeur]) }
let!(:type_de_champ) { procedure.types_de_champ.first } let!(:type_de_champ) { procedure.active_revision.types_de_champ_public.first }
let!(:new_unfollow_dossier) { create(:dossier, procedure: procedure, state: Dossier.states.fetch(:en_instruction)) } let!(:new_unfollow_dossier) { create(:dossier, procedure: procedure, state: Dossier.states.fetch(:en_instruction)) }
let!(:champ) { Champ.find_by(type_de_champ_id: type_de_champ.id, dossier_id: new_unfollow_dossier.id) } let!(:champ) { Champ.find_by(type_de_champ_id: type_de_champ.id, dossier_id: new_unfollow_dossier.id) }
let!(:new_unfollow_dossier_2) { create(:dossier, procedure: procedure, state: Dossier.states.fetch(:en_instruction)) } let!(:new_unfollow_dossier_2) { create(:dossier, procedure: procedure, state: Dossier.states.fetch(:en_instruction)) }