aboutsummaryrefslogtreecommitdiffstats
path: root/actiontext
diff options
context:
space:
mode:
authorJavan Makhmali <javan@javan.us>2019-01-25 16:44:35 -0500
committerJavan Makhmali <javan@javan.us>2019-01-25 16:57:36 -0500
commit48c6ef9a7236a17799bb5d217fef721afdf06f44 (patch)
treeb38ce0838e138a072d2c75bf77f8476a92f4bc23 /actiontext
parentc7e7a4c79b21c7b9ee5b81589f4b4812b747ca59 (diff)
downloadrails-48c6ef9a7236a17799bb5d217fef721afdf06f44.tar.gz
rails-48c6ef9a7236a17799bb5d217fef721afdf06f44.tar.bz2
rails-48c6ef9a7236a17799bb5d217fef721afdf06f44.zip
Fix error saving Action Text content containing non-blob attachables
Failing test before the ActionText::RichText change: ``` Error: ActionText::ModelTest#test_embed_extraction_only_extracts_file_attachments: ArgumentError: Could not find or build blob: expected attachable, got #<ActionText::Attachables::RemoteImage:0x00007fb0259fef70 @url="http://example.com/cat.jpg", @content_type="image", @width=nil, @height=nil> ```
Diffstat (limited to 'actiontext')
-rw-r--r--actiontext/app/models/action_text/rich_text.rb2
-rw-r--r--actiontext/test/unit/model_test.rb9
2 files changed, 10 insertions, 1 deletions
diff --git a/actiontext/app/models/action_text/rich_text.rb b/actiontext/app/models/action_text/rich_text.rb
index 1f39bc51b9..19fa3e030e 100644
--- a/actiontext/app/models/action_text/rich_text.rb
+++ b/actiontext/app/models/action_text/rich_text.rb
@@ -15,7 +15,7 @@ module ActionText
has_many_attached :embeds
before_save do
- self.embeds = body.attachments.map(&:attachable) if body.present?
+ self.embeds = body.attachables.grep(ActiveStorage::Blob) if body.present?
end
def to_plain_text
diff --git a/actiontext/test/unit/model_test.rb b/actiontext/test/unit/model_test.rb
index 122a20700b..d56363adc0 100644
--- a/actiontext/test/unit/model_test.rb
+++ b/actiontext/test/unit/model_test.rb
@@ -35,6 +35,15 @@ class ActionText::ModelTest < ActiveSupport::TestCase
assert_equal "racecar.jpg", message.content.embeds.first.filename.to_s
end
+ test "embed extraction only extracts file attachments" do
+ remote_image_html = '<action-text-attachment content-type="image" url="http://example.com/cat.jpg"></action-text-attachment>'
+ blob = create_file_blob(filename: "racecar.jpg", content_type: "image/jpg")
+ content = ActionText::Content.new(remote_image_html).append_attachables(blob)
+ message = Message.create!(subject: "Greetings", content: content)
+ assert_equal [ActionText::Attachables::RemoteImage, ActiveStorage::Blob], message.content.body.attachables.map(&:class)
+ assert_equal [ActiveStorage::Attachment], message.content.embeds.map(&:class)
+ end
+
test "saving content" do
message = Message.create!(subject: "Greetings", content: "<h1>Hello world</h1>")
assert_equal "Hello world", message.content.to_plain_text