From 54c5ca1d44c54d4e90ec0677512c78a8aaee92f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Gaya?= <sebastien.gaya@gmail.com> Date: Mon, 24 Apr 2023 16:45:29 +0200 Subject: [PATCH] wip deps --- .../with_dependencies_synchronization.rb | 18 ++++++++++++------ .../communication/website/dependency_test.rb | 6 +++++- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/app/models/concerns/with_dependencies_synchronization.rb b/app/models/concerns/with_dependencies_synchronization.rb index ab1a97efe..31951d598 100644 --- a/app/models/concerns/with_dependencies_synchronization.rb +++ b/app/models/concerns/with_dependencies_synchronization.rb @@ -6,23 +6,29 @@ module WithDependenciesSynchronization attr_accessor :dependencies_before_save - before_save :compute_dependencies_before_save - after_save :cleanup_websites, if: :dependencies_missing_after_save? + # TODO + # before_save :compute_dependencies_before_save + # after_save :cleanup_websites, if: :lost_dependencies_after_save? after_destroy :cleanup_websites end protected def compute_dependencies_before_save - @dependencies_before_save = recursive_dependencies_syncable + @dependencies_before_save = begin + array = [] + array = self.class.find(id).recursive_dependencies_syncable if persisted? + array.select { |dependency| dependency.respond_to?(:git_files) } + end end - def dependencies_missing_after_save? - # byebug - (@dependencies_before_save - recursive_dependencies_syncable).any? + def lost_dependencies_after_save? + lost_dependencies_after_save = @dependencies_before_save - recursive_dependencies_syncable + lost_dependencies_after_save.any? end def cleanup_websites + # byebug unless is_a?(Communication::Block) if is_direct_object? website.destroy_obsolete_git_files else diff --git a/test/models/communication/website/dependency_test.rb b/test/models/communication/website/dependency_test.rb index 6252c5a66..d7fca444e 100644 --- a/test/models/communication/website/dependency_test.rb +++ b/test/models/communication/website/dependency_test.rb @@ -15,7 +15,11 @@ class Communication::Website::DependencyTest < ActiveSupport::TestCase def test_change_block_dependencies page = communication_website_pages(:page_with_no_dependency) - # On ajoute un block "OrganizationChart" lié à Arnaud : 9 dépendances (4 composants du organization_chart + 1 élément du organization_chart (arnaud) + 3 éléments liés à arnaud + le block lui-même) + # On ajoute un block Personnes lié à Arnaud : 9 dépendances + # - le block Personnes (1) + # - 4 composants du template du block + 1 élément (5) + # - 2 composants de l'élément du template (2) + # - La personne en dépendance du composant Person (1) block = page.blocks.create(position: 1, published: true, template_kind: :organization_chart) block.data = "{ \"elements\": [ { \"id\": \"#{arnaud.id}\" } ] }" block.save -- GitLab