From 91b3a4c37a5685016ba281fdbd5cb2790bb0364a Mon Sep 17 00:00:00 2001 From: evazion Date: Thu, 25 Aug 2022 21:35:29 -0500 Subject: [PATCH] Fix #5205: Creating posts via API fails if you pass any commentary field but not all. --- app/models/artist_commentary.rb | 8 ++++---- test/functional/posts_controller_test.rb | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/models/artist_commentary.rb b/app/models/artist_commentary.rb index 783a5d757..8d980208f 100644 --- a/app/models/artist_commentary.rb +++ b/app/models/artist_commentary.rb @@ -80,10 +80,10 @@ class ArtistCommentary < ApplicationRecord end def trim_whitespace - self.original_title = original_title.gsub(/\A[[:space:]]+|[[:space:]]+\z/, "") - self.translated_title = translated_title.gsub(/\A[[:space:]]+|[[:space:]]+\z/, "") - self.original_description = original_description.gsub(/\A[[:space:]]+|[[:space:]]+\z/, "") - self.translated_description = translated_description.gsub(/\A[[:space:]]+|[[:space:]]+\z/, "") + self.original_title = original_title.to_s.gsub(/\A[[:space:]]+|[[:space:]]+\z/, "") + self.translated_title = translated_title.to_s.gsub(/\A[[:space:]]+|[[:space:]]+\z/, "") + self.original_description = original_description.to_s.gsub(/\A[[:space:]]+|[[:space:]]+\z/, "") + self.translated_description = translated_description.to_s.gsub(/\A[[:space:]]+|[[:space:]]+\z/, "") end def original_present? diff --git a/test/functional/posts_controller_test.rb b/test/functional/posts_controller_test.rb index aaa43788d..a4eeae803 100644 --- a/test/functional/posts_controller_test.rb +++ b/test/functional/posts_controller_test.rb @@ -760,6 +760,21 @@ class PostsControllerTest < ActionDispatch::IntegrationTest assert_equal("translated desc", @post.artist_commentary.translated_description) end + should "create a commentary record if a single commentary field is present" do + assert_difference("ArtistCommentary.count", 1) do + @post = create_post!( + user: @user, + artist_commentary_title: "title", + ) + end + + assert_equal(true, @post.artist_commentary.present?) + assert_equal("title", @post.artist_commentary.original_title) + assert_equal("", @post.artist_commentary.original_description) + assert_equal("", @post.artist_commentary.translated_title) + assert_equal("", @post.artist_commentary.translated_description) + end + should "not create a commentary record if the commentary is blank" do assert_no_difference("ArtistCommentary.count") do @post = create_post!(