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