mirror of
https://github.com/glitch-soc/mastodon.git
synced 2025-12-21 14:18:36 +00:00
Merge commit 'f6dbb2206c5a4c1b27ce1395b477492139cfcbcc' into glitch-soc/merge-4.3
This commit is contained in:
@@ -4,29 +4,60 @@ require 'rails_helper'
|
||||
|
||||
RSpec.describe ActivityPub::Activity::Remove do
|
||||
let(:sender) { Fabricate(:account, featured_collection_url: 'https://example.com/featured') }
|
||||
let(:status) { Fabricate(:status, account: sender) }
|
||||
|
||||
let(:json) do
|
||||
{
|
||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||
id: 'foo',
|
||||
type: 'Add',
|
||||
actor: ActivityPub::TagManager.instance.uri_for(sender),
|
||||
object: ActivityPub::TagManager.instance.uri_for(status),
|
||||
target: sender.featured_collection_url,
|
||||
}.with_indifferent_access
|
||||
end
|
||||
|
||||
describe '#perform' do
|
||||
subject { described_class.new(json, sender) }
|
||||
|
||||
before do
|
||||
StatusPin.create!(account: sender, status: status)
|
||||
subject.perform
|
||||
context 'when removing a pinned status' do
|
||||
let(:status) { Fabricate(:status, account: sender) }
|
||||
|
||||
let(:json) do
|
||||
{
|
||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||
id: 'foo',
|
||||
type: 'Remove',
|
||||
actor: ActivityPub::TagManager.instance.uri_for(sender),
|
||||
object: ActivityPub::TagManager.instance.uri_for(status),
|
||||
target: sender.featured_collection_url,
|
||||
}.deep_stringify_keys
|
||||
end
|
||||
|
||||
before do
|
||||
StatusPin.create!(account: sender, status: status)
|
||||
end
|
||||
|
||||
it 'removes a pin' do
|
||||
expect { subject.perform }
|
||||
.to change { sender.pinned?(status) }.to(false)
|
||||
end
|
||||
end
|
||||
|
||||
it 'removes a pin' do
|
||||
expect(sender.pinned?(status)).to be false
|
||||
context 'when removing a featured tag' do
|
||||
let(:tag) { Fabricate(:tag) }
|
||||
|
||||
let(:json) do
|
||||
{
|
||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||
id: 'foo',
|
||||
type: 'Remove',
|
||||
actor: ActivityPub::TagManager.instance.uri_for(sender),
|
||||
object: {
|
||||
type: 'Hashtag',
|
||||
name: "##{tag.display_name}",
|
||||
href: "https://example.com/tags/#{tag.name}",
|
||||
},
|
||||
target: sender.featured_collection_url,
|
||||
}.deep_stringify_keys
|
||||
end
|
||||
|
||||
before do
|
||||
sender.featured_tags.find_or_create_by!(name: tag.name)
|
||||
end
|
||||
|
||||
it 'removes a pin' do
|
||||
expect { subject.perform }
|
||||
.to change { sender.featured_tags.exists?(tag: tag) }.to(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
51
spec/lib/activitypub/parser/media_attachment_parser_spec.rb
Normal file
51
spec/lib/activitypub/parser/media_attachment_parser_spec.rb
Normal file
@@ -0,0 +1,51 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe ActivityPub::Parser::MediaAttachmentParser do
|
||||
subject { described_class.new(json) }
|
||||
|
||||
let(:json) do
|
||||
{
|
||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||
type: 'Document',
|
||||
mediaType: 'image/png',
|
||||
url: 'http://example.com/attachment.png',
|
||||
}.deep_stringify_keys
|
||||
end
|
||||
|
||||
it 'correctly parses media attachment' do
|
||||
expect(subject).to have_attributes(
|
||||
remote_url: 'http://example.com/attachment.png',
|
||||
file_content_type: 'image/png'
|
||||
)
|
||||
end
|
||||
|
||||
context 'when the URL is a link with multiple options' do
|
||||
let(:json) do
|
||||
{
|
||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||
type: 'Document',
|
||||
url: [
|
||||
{
|
||||
type: 'Link',
|
||||
mediaType: 'image/png',
|
||||
href: 'http://example.com/attachment.png',
|
||||
},
|
||||
{
|
||||
type: 'Link',
|
||||
mediaType: 'image/avif',
|
||||
href: 'http://example.com/attachment.avif',
|
||||
},
|
||||
],
|
||||
}.deep_stringify_keys
|
||||
end
|
||||
|
||||
it 'returns the first option' do
|
||||
expect(subject).to have_attributes(
|
||||
remote_url: 'http://example.com/attachment.png',
|
||||
file_content_type: 'image/png'
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user