Add: Webでの引用表示 (#50)
* Add compacted component * 引用表示の間にコンテナをはさみ、不要なコードを削除 * 引用APIを作成、ついでにブロック状況を引用APIに反映 * テスト修正など * 引用をキャッシュに登録 * `quote_id`が`quote_of_id`になったのをSerializerに反映 * Fix test * 引用をフィルターの対象に含める設定+エラー修正 * ストリーミングの存在しないプロパティ削除によるエラーを修正 * Fix lint * 他のサーバーから来た引用付き投稿を処理 * Fix test * フィルター設定時エラーの調整 * 画像つき投稿のスタイルを調整 * 画像つき投稿の最大高さを調整 * 引用禁止・非表示の設定を追加 * ブロック対応 * マイグレーションコード調整 * 引用設定の翻訳を作成 * Lint修正 * 参照1つの場合は引用に変換する設定を削除 * 不要になったテストを削除 * ブロック設定追加、バグ修正 * 他サーバーへ引用送信・受け入れ
This commit is contained in:
parent
3c649aa74d
commit
44b739a39a
53 changed files with 1362 additions and 120 deletions
|
@ -217,6 +217,39 @@ RSpec.describe Status do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#quote' do
|
||||
let(:target_status) { Fabricate(:status) }
|
||||
let(:quote) { true }
|
||||
|
||||
before do
|
||||
Fabricate(:status_reference, status: subject, target_status: target_status, quote: quote)
|
||||
end
|
||||
|
||||
context 'when quoting single' do
|
||||
it 'get quote' do
|
||||
expect(subject.quote).to_not be_nil
|
||||
expect(subject.quote.id).to eq target_status.id
|
||||
end
|
||||
end
|
||||
|
||||
context 'when multiple quotes' do
|
||||
it 'get quote' do
|
||||
target2 = Fabricate(:status)
|
||||
Fabricate(:status_reference, status: subject, quote: quote)
|
||||
expect(subject.quote).to_not be_nil
|
||||
expect([target_status.id, target2.id].include?(subject.quote.id)).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when no quote but reference' do
|
||||
let(:quote) { false }
|
||||
|
||||
it 'get quote' do
|
||||
expect(subject.quote).to be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#content' do
|
||||
it 'returns the text of the status if it is not a reblog' do
|
||||
expect(subject.content).to eql subject.text
|
||||
|
@ -324,6 +357,38 @@ RSpec.describe Status do
|
|||
end
|
||||
end
|
||||
|
||||
describe '.blocks_map' do
|
||||
subject { described_class.blocks_map([status.account.id], account) }
|
||||
|
||||
let(:status) { Fabricate(:status) }
|
||||
let(:account) { Fabricate(:account) }
|
||||
|
||||
it 'returns a hash' do
|
||||
expect(subject).to be_a Hash
|
||||
end
|
||||
|
||||
it 'contains true value' do
|
||||
account.block!(status.account)
|
||||
expect(subject[status.account.id]).to be true
|
||||
end
|
||||
end
|
||||
|
||||
describe '.domain_blocks_map' do
|
||||
subject { described_class.domain_blocks_map([status.account.domain], account) }
|
||||
|
||||
let(:status) { Fabricate(:status, account: Fabricate(:account, domain: 'foo.bar', uri: 'https://foo.bar/status')) }
|
||||
let(:account) { Fabricate(:account) }
|
||||
|
||||
it 'returns a hash' do
|
||||
expect(subject).to be_a Hash
|
||||
end
|
||||
|
||||
it 'contains true value' do
|
||||
account.block_domain!(status.account.domain)
|
||||
expect(subject[status.account.domain]).to be true
|
||||
end
|
||||
end
|
||||
|
||||
describe '.favourites_map' do
|
||||
subject { described_class.favourites_map([status], account) }
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue