You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.7 KiB
44 lines
1.7 KiB
# frozen_string_literal: true |
|
|
|
require 'rails_helper' |
|
|
|
describe ActivityPub::NoteSerializer do |
|
let!(:account) { Fabricate(:account) } |
|
let!(:other) { Fabricate(:account) } |
|
let!(:parent) { Fabricate(:status, account: account, visibility: :public) } |
|
let!(:reply1) { Fabricate(:status, account: account, thread: parent, visibility: :public) } |
|
let!(:reply2) { Fabricate(:status, account: account, thread: parent, visibility: :public) } |
|
let!(:reply3) { Fabricate(:status, account: other, thread: parent, visibility: :public) } |
|
let!(:reply4) { Fabricate(:status, account: account, thread: parent, visibility: :public) } |
|
let!(:reply5) { Fabricate(:status, account: account, thread: parent, visibility: :direct) } |
|
|
|
before(:each) do |
|
@serialization = ActiveModelSerializers::SerializableResource.new(parent, serializer: ActivityPub::NoteSerializer, adapter: ActivityPub::Adapter) |
|
end |
|
|
|
subject { JSON.parse(@serialization.to_json) } |
|
|
|
it 'has a Note type' do |
|
expect(subject['type']).to eql('Note') |
|
end |
|
|
|
it 'has a replies collection' do |
|
expect(subject['replies']['type']).to eql('Collection') |
|
end |
|
|
|
it 'has a replies collection with a first Page' do |
|
expect(subject['replies']['first']['type']).to eql('CollectionPage') |
|
end |
|
|
|
it 'includes public self-replies in its replies collection' do |
|
expect(subject['replies']['first']['items']).to include(reply1.uri, reply2.uri, reply4.uri) |
|
end |
|
|
|
it 'does not include replies from others in its replies collection' do |
|
expect(subject['replies']['first']['items']).to_not include(reply3.uri) |
|
end |
|
|
|
it 'does not include replies with direct visibility in its replies collection' do |
|
expect(subject['replies']['first']['items']).to_not include(reply5.uri) |
|
end |
|
end
|
|
|