fix(revision): fix stable siblings order when there are multiple identical position

Ça arrive parfois dans les tests, et potentiellement en prod :
après avoir créé un nouveau `revision_type_de_champ`,
on se retrouve très momentanément avec 2
RTDC ayant le même position en attendant le renumérotation peu près.

https://github.com/betagouv/demarches-simplifiees.fr/blob/main/app/models/procedure_revision.rb#L55

Ceci conduisait à une renumérotation erronnée quand la db renvoyait
le nouveau RTDC créé *avant* les précédents.
This commit is contained in:
Colin Darie 2022-08-03 18:29:48 +02:00
parent 1601a18c34
commit adced0f33a

View file

@ -18,7 +18,7 @@ class ProcedureRevisionTypeDeChamp < ApplicationRecord
has_many :revision_types_de_champ, -> { ordered }, foreign_key: :parent_id, class_name: 'ProcedureRevisionTypeDeChamp', inverse_of: :parent, dependent: :destroy has_many :revision_types_de_champ, -> { ordered }, foreign_key: :parent_id, class_name: 'ProcedureRevisionTypeDeChamp', inverse_of: :parent, dependent: :destroy
has_one :procedure, through: :revision has_one :procedure, through: :revision
scope :root, -> { where(parent: nil) } scope :root, -> { where(parent: nil) }
scope :ordered, -> { order(:position) } scope :ordered, -> { order(:position, :id) }
scope :revision_ordered, -> { order(:revision_id) } scope :revision_ordered, -> { order(:revision_id) }
scope :public_only, -> { joins(:type_de_champ).where(types_de_champ: { private: false }) } scope :public_only, -> { joins(:type_de_champ).where(types_de_champ: { private: false }) }
scope :private_only, -> { joins(:type_de_champ).where(types_de_champ: { private: true }) } scope :private_only, -> { joins(:type_de_champ).where(types_de_champ: { private: true }) }