diff --git a/app/models/concerns/with_dependencies_synchronization.rb b/app/models/concerns/with_dependencies_synchronization.rb index ab1a97efea43bb4c3a0dfa1b6bb8263d287c3fef..31951d598d281e34459f05ac0e9a265f0692dd86 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 6252c5a66ab2cd8459875b5d7acaae76854a851e..d7fca444e5aee765e02bd0502455d26c05be2c40 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