diff --git a/lib/engines/content_block_manager/app/controllers/concerns/workflow/update_methods.rb b/lib/engines/content_block_manager/app/controllers/concerns/workflow/update_methods.rb index f83f88a864d..bcd08d49327 100644 --- a/lib/engines/content_block_manager/app/controllers/concerns/workflow/update_methods.rb +++ b/lib/engines/content_block_manager/app/controllers/concerns/workflow/update_methods.rb @@ -5,7 +5,13 @@ module Workflow::UpdateMethods def update_draft @content_block_edition = ContentBlockManager::ContentBlock::Edition.find(params[:id]) - @content_block_edition.assign_attributes(edition_params.except(:creator, :document_attributes)) + + @content_block_edition.assign_attributes( + title: edition_params[:title], + organisation_id: edition_params[:organisation_id], + instructions_to_publishers: edition_params[:instructions_to_publishers], + details: @content_block_edition.details.merge(edition_params[:details]), + ) @content_block_edition.save! if @content_block_edition.document.is_new_block? diff --git a/lib/engines/content_block_manager/app/models/content_block_manager/content_block/edition/has_lead_organisation.rb b/lib/engines/content_block_manager/app/models/content_block_manager/content_block/edition/has_lead_organisation.rb index 18fc3313deb..5b59b7ea510 100644 --- a/lib/engines/content_block_manager/app/models/content_block_manager/content_block/edition/has_lead_organisation.rb +++ b/lib/engines/content_block_manager/app/models/content_block_manager/content_block/edition/has_lead_organisation.rb @@ -12,7 +12,7 @@ module ContentBlock::Edition::HasLeadOrganisation end def organisation_id=(organisation_id) - if organisation_id.empty? + if organisation_id.blank? self.edition_organisation = nil else edition_organisation = build_edition_organisation diff --git a/lib/engines/content_block_manager/app/views/content_block_manager/content_block/documents/show.html.erb b/lib/engines/content_block_manager/app/views/content_block_manager/content_block/documents/show.html.erb index 9e6cb10dc87..56b31a41e10 100644 --- a/lib/engines/content_block_manager/app/views/content_block_manager/content_block/documents/show.html.erb +++ b/lib/engines/content_block_manager/app/views/content_block_manager/content_block/documents/show.html.erb @@ -1,3 +1,4 @@ +<% content_for :page_full_width, true %> <% content_for :page_title, @content_block_document.title %> <% content_for :back_link do %> <%= render "govuk_publishing_components/components/back_link", { diff --git a/lib/engines/content_block_manager/features/edit_pension_object.feature b/lib/engines/content_block_manager/features/edit_pension_object.feature index efa1c25d151..2ab83f2e66a 100644 --- a/lib/engines/content_block_manager/features/edit_pension_object.feature +++ b/lib/engines/content_block_manager/features/edit_pension_object.feature @@ -76,3 +76,14 @@ Feature: Edit a pension object When I click to view the content block Then the edition should have been updated successfully And I should see details of my "rate" + + Scenario: GDS editor sees notification about an in-progress draft + When I visit the Content Block Manager home page + And I click to view the document + And I click to edit the "pension" + And I fill out the form + And I click the cancel link + And I click to save and come back later + When I click on the link to continue editing + And I click save + Then I should see the rates for that block diff --git a/lib/engines/content_block_manager/test/integration/content_block/workflow_test.rb b/lib/engines/content_block_manager/test/integration/content_block/workflow_test.rb index 0fa773bf608..e5a6d56a605 100644 --- a/lib/engines/content_block_manager/test/integration/content_block/workflow_test.rb +++ b/lib/engines/content_block_manager/test/integration/content_block/workflow_test.rb @@ -137,16 +137,33 @@ class ContentBlockManager::ContentBlock::WorkflowTest < ActionDispatch::Integrat params: { "content_block/edition" => { "title" => "New title", + "organisation_id" => organisation.id, "details" => { "foo" => "bar", }, }, } + assert_redirected_to content_block_manager_content_block_workflow_path(id: edition.id, step: :review_links) + assert_equal edition.reload.title, "New title" assert_equal edition.reload.details["foo"], "bar" + assert_equal edition.reload.details["bar"], "Bar text" + end - assert_redirected_to content_block_manager_content_block_workflow_path(id: edition.id, step: :review_links) + it "updates the block with an empty string if a details field is blank" do + put content_block_manager.content_block_manager_content_block_workflow_path(id: edition.id, step:), + params: { + "content_block/edition" => { + "title" => "New title", + "organisation_id" => organisation.id, + "details" => { + "foo" => "", + }, + }, + } + + assert_equal edition.reload.details["foo"], "" end it "updates the block and redirects to the review page if editing a new block" do @@ -156,16 +173,18 @@ class ContentBlockManager::ContentBlock::WorkflowTest < ActionDispatch::Integrat params: { "content_block/edition" => { "title" => "New title", + "organisation_id" => organisation.id, "details" => { "foo" => "bar", }, }, } + assert_redirected_to content_block_manager_content_block_workflow_path(id: edition.id, step: :review) + assert_equal edition.reload.title, "New title" assert_equal edition.reload.details["foo"], "bar" - - assert_redirected_to content_block_manager_content_block_workflow_path(id: edition.id, step: :review) + assert_equal edition.reload.details["bar"], "Bar text" end it "shows an error if a required field is blank" do