diff --git a/app/models/configurable_associations/factory.rb b/app/models/configurable_associations/factory.rb index 946f221a8cb..9bfb50f67cf 100644 --- a/app/models/configurable_associations/factory.rb +++ b/app/models/configurable_associations/factory.rb @@ -13,8 +13,6 @@ def configurable_associations end end - private - def associations { "ministerial_role_appointments" => ->(edition) { ConfigurableAssociations::MinisterialRoleAppointments.new(edition.role_appointments) }, diff --git a/app/presenters/publishing_api/payload_builder/configurable_document_links.rb b/app/presenters/publishing_api/payload_builder/configurable_document_links.rb index 8e8c0655457..92a60a3c66b 100644 --- a/app/presenters/publishing_api/payload_builder/configurable_document_links.rb +++ b/app/presenters/publishing_api/payload_builder/configurable_document_links.rb @@ -9,6 +9,14 @@ def self.association_links(item) factory.configurable_associations.map(&:links).reduce({}, :merge) end + def self.link_set(item) + factory = ConfigurableAssociations::Factory.new(item) + association_links = factory.configurable_associations.map(&:links) + link_difference = factory.associations.keys.map(&:to_sym) - association_links.map(&:keys).flatten + association_links.concat(link_difference.map { |association| [[association, []]].to_h }) + association_links.reduce({}, :merge) + end + def self.government_links(item) return {} unless item.type_instance.settings["history_mode_enabled"] diff --git a/app/presenters/publishing_api/standard_edition_presenter.rb b/app/presenters/publishing_api/standard_edition_presenter.rb index 7618964fd26..f93d987f4f3 100644 --- a/app/presenters/publishing_api/standard_edition_presenter.rb +++ b/app/presenters/publishing_api/standard_edition_presenter.rb @@ -33,6 +33,10 @@ def links PayloadBuilder::ConfigurableDocumentLinks.for(item) end + def link_set + PayloadBuilder::ConfigurableDocumentLinks.link_set(item) + end + def document_type type.settings["publishing_api_document_type"] end diff --git a/lib/whitehall/publishing_api.rb b/lib/whitehall/publishing_api.rb index bb03d0bb381..a31b7710697 100644 --- a/lib/whitehall/publishing_api.rb +++ b/lib/whitehall/publishing_api.rb @@ -84,7 +84,12 @@ def self.save_draft_translation( def self.patch_links(model_instance, bulk_publishing: false) presenter = PublishingApiPresenters.presenter_for(model_instance) - links = presenter.links + links = if presenter.respond_to?(:link_set) + presenter.link_set + else + presenter.links + end + return if links.empty? Services.publishing_api.patch_links(