mirror of
https://github.com/mastodon/mastodon.git
synced 2024-12-22 18:45:41 +01:00
Fix empty authors preview card serialization (#33151)
This commit is contained in:
parent
6fddf1610c
commit
e5bea68b20
2 changed files with 49 additions and 1 deletions
|
@ -134,7 +134,7 @@ class PreviewCard < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def authors
|
def authors
|
||||||
@authors ||= [PreviewCard::Author.new(self)]
|
@authors ||= Array(serialized_authors)
|
||||||
end
|
end
|
||||||
|
|
||||||
class Author < ActiveModelSerializers::Model
|
class Author < ActiveModelSerializers::Model
|
||||||
|
@ -169,6 +169,13 @@ class PreviewCard < ApplicationRecord
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def serialized_authors
|
||||||
|
if author_name? || author_url?
|
||||||
|
PreviewCard::Author
|
||||||
|
.new(self)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def extract_dimensions
|
def extract_dimensions
|
||||||
file = image.queued_for_write[:original]
|
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
|
Loading…
Reference in a new issue