From d54af5d472380b456dcb89461e176fd2cc47c6ec Mon Sep 17 00:00:00 2001 From: Harriet H-W Date: Thu, 6 Feb 2025 11:52:49 +0000 Subject: [PATCH] update Content Block Tools This requires passing an embed code to any Content Block render methods. If this is for a preview, we have to grab the code first from the HTML data attribute. --- Gemfile.lock | 2 +- .../models/content_block_manager/content_block/edition.rb | 3 ++- .../find_and_replace_embed_codes_service.rb | 2 +- .../services/content_block_manager/generate_preview_html.rb | 3 ++- .../features/step_definitions/preview_steps.rb | 6 ++++-- .../test/unit/app/models/content_block_edition_test.rb | 4 +++- .../services/find_and_replace_embed_codes_service_test.rb | 4 ++-- .../test/unit/app/services/generate_preview_html_test.rb | 6 +++--- 8 files changed, 18 insertions(+), 12 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 0b405c38641..4c2a77e2f99 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -133,7 +133,7 @@ GEM coderay (1.1.3) concurrent-ruby (1.3.5) connection_pool (2.5.0) - content_block_tools (0.3.1) + content_block_tools (0.4.2) actionview (>= 6) crack (1.0.0) bigdecimal diff --git a/lib/engines/content_block_manager/app/models/content_block_manager/content_block/edition.rb b/lib/engines/content_block_manager/app/models/content_block_manager/content_block/edition.rb index 6309206efbb..2c2b4dfdc51 100644 --- a/lib/engines/content_block_manager/app/models/content_block_manager/content_block/edition.rb +++ b/lib/engines/content_block_manager/app/models/content_block_manager/content_block/edition.rb @@ -22,12 +22,13 @@ def update_document_reference_to_latest_edition! document.update!(latest_edition_id: id) end - def render + def render(embed_code) ContentBlockTools::ContentBlock.new( document_type: "content_block_#{block_type}", content_id: document.content_id, title:, details:, + embed_code:, ).render end diff --git a/lib/engines/content_block_manager/app/services/content_block_manager/find_and_replace_embed_codes_service.rb b/lib/engines/content_block_manager/app/services/content_block_manager/find_and_replace_embed_codes_service.rb index 62d91a0f014..bdc01c0ca33 100644 --- a/lib/engines/content_block_manager/app/services/content_block_manager/find_and_replace_embed_codes_service.rb +++ b/lib/engines/content_block_manager/app/services/content_block_manager/find_and_replace_embed_codes_service.rb @@ -9,7 +9,7 @@ def call content_block = content_blocks.find { |c| c.document.content_id == reference.content_id } next if content_block.nil? - html.gsub!(reference.embed_code, content_block.render) + html.gsub!(reference.embed_code, content_block.render(reference.embed_code)) end html diff --git a/lib/engines/content_block_manager/app/services/content_block_manager/generate_preview_html.rb b/lib/engines/content_block_manager/app/services/content_block_manager/generate_preview_html.rb index bf6ec029ec9..9dc94ca8fdc 100644 --- a/lib/engines/content_block_manager/app/services/content_block_manager/generate_preview_html.rb +++ b/lib/engines/content_block_manager/app/services/content_block_manager/generate_preview_html.rb @@ -72,7 +72,8 @@ def replace_existing_content_blocks(nokogiri_html) def replace_blocks(nokogiri_html) content_block_spans(nokogiri_html).each do |span| - span.replace content_block_edition.render + embed_code = span["data-embed-code"] + span.replace content_block_edition.render(embed_code) end end diff --git a/lib/engines/content_block_manager/features/step_definitions/preview_steps.rb b/lib/engines/content_block_manager/features/step_definitions/preview_steps.rb index ade8255eead..2924fe3ca31 100644 --- a/lib/engines/content_block_manager/features/step_definitions/preview_steps.rb +++ b/lib/engines/content_block_manager/features/step_definitions/preview_steps.rb @@ -1,5 +1,7 @@ When("I click on the first host document") do @current_host_document = @dependent_content.first + embed_code = "{{embed:#{@current_host_document['block_type']}:#{@current_host_document['content_id']}}}" + stub_request( :get, "#{Plek.find('publishing-api')}/v2/content/#{@current_host_document['host_content_id']}", @@ -21,7 +23,7 @@ Plek.website_root + @current_host_document["base_path"], ).to_return( status: 200, - body: "

#{@current_host_document['title']}

iframe preview Link to other page

#{@content_block.render}", + body: "

#{@current_host_document['title']}

iframe preview Link to other page

#{@content_block.render(embed_code)}", ) stub_request( @@ -29,7 +31,7 @@ "#{Plek.website_root}/other-page", ).to_return( status: 200, - body: "

#{@current_host_document['title']}

other page

#{@content_block.render}", + body: "

#{@current_host_document['title']}

other page

#{@content_block.render(embed_code)}", ) click_on @current_host_document["title"] diff --git a/lib/engines/content_block_manager/test/unit/app/models/content_block_edition_test.rb b/lib/engines/content_block_manager/test/unit/app/models/content_block_edition_test.rb index cd69f53c519..84581cd9e0b 100644 --- a/lib/engines/content_block_manager/test/unit/app/models/content_block_edition_test.rb +++ b/lib/engines/content_block_manager/test/unit/app/models/content_block_edition_test.rb @@ -178,6 +178,7 @@ class ContentBlockManager::ContentBlockEditionTest < ActiveSupport::TestCase let(:rendered_response) { "RENDERED" } let(:stub_block) { stub("ContentBlockTools::ContentBlock", render: rendered_response) } let(:document) { content_block_edition.document } + let(:embed_code) { "embed_code" } it "initializes and renders a content block" do ContentBlockTools::ContentBlock.expects(:new) @@ -186,9 +187,10 @@ class ContentBlockManager::ContentBlockEditionTest < ActiveSupport::TestCase content_id: document.content_id, title:, details:, + embed_code:, ).returns(stub_block) - assert_equal content_block_edition.render, rendered_response + assert_equal content_block_edition.render(embed_code), rendered_response end end diff --git a/lib/engines/content_block_manager/test/unit/app/services/find_and_replace_embed_codes_service_test.rb b/lib/engines/content_block_manager/test/unit/app/services/find_and_replace_embed_codes_service_test.rb index e0bbff090e9..295a1fe61d6 100644 --- a/lib/engines/content_block_manager/test/unit/app/services/find_and_replace_embed_codes_service_test.rb +++ b/lib/engines/content_block_manager/test/unit/app/services/find_and_replace_embed_codes_service_test.rb @@ -22,8 +22,8 @@ class ContentBlockManager::FindAndReplaceEmbedCodesServiceTest < ActiveSupport:: expected = "

Hello there

-

#{edition_2.render}

-

#{edition_1.render}

+

#{edition_2.render(edition_2.document.embed_code)}

+

#{edition_1.render(edition_1.document.embed_code)}

" result = ContentBlockManager::FindAndReplaceEmbedCodesService.call(html) diff --git a/lib/engines/content_block_manager/test/unit/app/services/generate_preview_html_test.rb b/lib/engines/content_block_manager/test/unit/app/services/generate_preview_html_test.rb index 43271d2e192..cafa2c8d2ea 100644 --- a/lib/engines/content_block_manager/test/unit/app/services/generate_preview_html_test.rb +++ b/lib/engines/content_block_manager/test/unit/app/services/generate_preview_html_test.rb @@ -11,13 +11,13 @@ class ContentBlockManager::GeneratePreviewHtmlTest < ActiveSupport::TestCase let(:host_base_path) { "/test" } let(:uri_mock) { mock } let(:fake_frontend_response) do - "

test

example@example.com" + "

test

example@example.com" end let(:block_render) do - "new@new.com" + "new@new.com" end let(:block_render_with_style) do - "new@new.com" + "new@new.com" end let(:expected_html) do "

test

#{block_render_with_style}"