Fix empty authors preview card serialization (#33151)
This commit is contained in:
		@@ -134,7 +134,7 @@ class PreviewCard < ApplicationRecord
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def authors
 | 
			
		||||
    @authors ||= [PreviewCard::Author.new(self)]
 | 
			
		||||
    @authors ||= Array(serialized_authors)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  class Author < ActiveModelSerializers::Model
 | 
			
		||||
@@ -169,6 +169,13 @@ class PreviewCard < ApplicationRecord
 | 
			
		||||
 | 
			
		||||
  private
 | 
			
		||||
 | 
			
		||||
  def serialized_authors
 | 
			
		||||
    if author_name? || author_url?
 | 
			
		||||
      PreviewCard::Author
 | 
			
		||||
        .new(self)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def extract_dimensions
 | 
			
		||||
    file = image.queued_for_write[:original]
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										41
									
								
								spec/serializers/rest/preview_card_serializer_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								spec/serializers/rest/preview_card_serializer_spec.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
require 'rails_helper'
 | 
			
		||||
 | 
			
		||||
RSpec.describe REST::PreviewCardSerializer do
 | 
			
		||||
  subject do
 | 
			
		||||
    serialized_record_json(
 | 
			
		||||
      preview_card,
 | 
			
		||||
      described_class
 | 
			
		||||
    )
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  context 'when preview card does not have author data' do
 | 
			
		||||
    let(:preview_card) { Fabricate.build :preview_card }
 | 
			
		||||
 | 
			
		||||
    it 'includes empty authors array' do
 | 
			
		||||
      expect(subject.deep_symbolize_keys)
 | 
			
		||||
        .to include(
 | 
			
		||||
          authors: be_an(Array).and(be_empty)
 | 
			
		||||
        )
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  context 'when preview card has author data' do
 | 
			
		||||
    let(:preview_card) { Fabricate.build :preview_card, author_name: 'Name', author_url: 'https://host.example/123' }
 | 
			
		||||
 | 
			
		||||
    it 'includes populated authors array' do
 | 
			
		||||
      expect(subject.deep_symbolize_keys)
 | 
			
		||||
        .to include(
 | 
			
		||||
          authors: be_an(Array).and(
 | 
			
		||||
            contain_exactly(
 | 
			
		||||
              include(
 | 
			
		||||
                name: 'Name',
 | 
			
		||||
                url: 'https://host.example/123'
 | 
			
		||||
              )
 | 
			
		||||
            )
 | 
			
		||||
          )
 | 
			
		||||
        )
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
		Reference in New Issue
	
	Block a user