Merge branch 'main' into glitch-soc/merge-upstream
Conflicts: - `spec/models/status_spec.rb`: Upstream added tests too close to glitch-soc-specific tests. Kept both tests.
This commit is contained in:
		@@ -354,6 +354,87 @@ RSpec.describe Status, type: :model do
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe '.tagged_with' do
 | 
			
		||||
    let(:tag1)     { Fabricate(:tag) }
 | 
			
		||||
    let(:tag2)     { Fabricate(:tag) }
 | 
			
		||||
    let(:tag3)     { Fabricate(:tag) }
 | 
			
		||||
    let!(:status1) { Fabricate(:status, tags: [tag1]) }
 | 
			
		||||
    let!(:status2) { Fabricate(:status, tags: [tag2]) }
 | 
			
		||||
    let!(:status3) { Fabricate(:status, tags: [tag3]) }
 | 
			
		||||
    let!(:status4) { Fabricate(:status, tags: []) }
 | 
			
		||||
    let!(:status5) { Fabricate(:status, tags: [tag1, tag2, tag3]) }
 | 
			
		||||
 | 
			
		||||
    context 'when given one tag' do
 | 
			
		||||
      it 'returns the expected statuses' do
 | 
			
		||||
        expect(Status.tagged_with([tag1.id]).reorder(:id).pluck(:id).uniq).to eq [status1.id, status5.id]
 | 
			
		||||
        expect(Status.tagged_with([tag2.id]).reorder(:id).pluck(:id).uniq).to eq [status2.id, status5.id]
 | 
			
		||||
        expect(Status.tagged_with([tag3.id]).reorder(:id).pluck(:id).uniq).to eq [status3.id, status5.id]
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    context 'when given multiple tags' do
 | 
			
		||||
      it 'returns the expected statuses' do
 | 
			
		||||
        expect(Status.tagged_with([tag1.id, tag2.id]).reorder(:id).pluck(:id).uniq).to eq [status1.id, status2.id, status5.id]
 | 
			
		||||
        expect(Status.tagged_with([tag1.id, tag3.id]).reorder(:id).pluck(:id).uniq).to eq [status1.id, status3.id, status5.id]
 | 
			
		||||
        expect(Status.tagged_with([tag2.id, tag3.id]).reorder(:id).pluck(:id).uniq).to eq [status2.id, status3.id, status5.id]
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe '.tagged_with_all' do
 | 
			
		||||
    let(:tag1)     { Fabricate(:tag) }
 | 
			
		||||
    let(:tag2)     { Fabricate(:tag) }
 | 
			
		||||
    let(:tag3)     { Fabricate(:tag) }
 | 
			
		||||
    let!(:status1) { Fabricate(:status, tags: [tag1]) }
 | 
			
		||||
    let!(:status2) { Fabricate(:status, tags: [tag2]) }
 | 
			
		||||
    let!(:status3) { Fabricate(:status, tags: [tag3]) }
 | 
			
		||||
    let!(:status4) { Fabricate(:status, tags: []) }
 | 
			
		||||
    let!(:status5) { Fabricate(:status, tags: [tag1, tag2]) }
 | 
			
		||||
 | 
			
		||||
    context 'when given one tag' do
 | 
			
		||||
      it 'returns the expected statuses' do
 | 
			
		||||
        expect(Status.tagged_with_all([tag1.id]).reorder(:id).pluck(:id).uniq).to eq [status1.id, status5.id]
 | 
			
		||||
        expect(Status.tagged_with_all([tag2.id]).reorder(:id).pluck(:id).uniq).to eq [status2.id, status5.id]
 | 
			
		||||
        expect(Status.tagged_with_all([tag3.id]).reorder(:id).pluck(:id).uniq).to eq [status3.id]
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    context 'when given multiple tags' do
 | 
			
		||||
      it 'returns the expected statuses' do
 | 
			
		||||
        expect(Status.tagged_with_all([tag1.id, tag2.id]).reorder(:id).pluck(:id).uniq).to eq [status5.id]
 | 
			
		||||
        expect(Status.tagged_with_all([tag1.id, tag3.id]).reorder(:id).pluck(:id).uniq).to eq []
 | 
			
		||||
        expect(Status.tagged_with_all([tag2.id, tag3.id]).reorder(:id).pluck(:id).uniq).to eq []
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe '.tagged_with_none' do
 | 
			
		||||
    let(:tag1)     { Fabricate(:tag) }
 | 
			
		||||
    let(:tag2)     { Fabricate(:tag) }
 | 
			
		||||
    let(:tag3)     { Fabricate(:tag) }
 | 
			
		||||
    let!(:status1) { Fabricate(:status, tags: [tag1]) }
 | 
			
		||||
    let!(:status2) { Fabricate(:status, tags: [tag2]) }
 | 
			
		||||
    let!(:status3) { Fabricate(:status, tags: [tag3]) }
 | 
			
		||||
    let!(:status4) { Fabricate(:status, tags: []) }
 | 
			
		||||
    let!(:status5) { Fabricate(:status, tags: [tag1, tag2, tag3]) }
 | 
			
		||||
 | 
			
		||||
    context 'when given one tag' do
 | 
			
		||||
      it 'returns the expected statuses' do
 | 
			
		||||
        expect(Status.tagged_with_none([tag1.id]).reorder(:id).pluck(:id).uniq).to eq [status2.id, status3.id, status4.id]
 | 
			
		||||
        expect(Status.tagged_with_none([tag2.id]).reorder(:id).pluck(:id).uniq).to eq [status1.id, status3.id, status4.id]
 | 
			
		||||
        expect(Status.tagged_with_none([tag3.id]).reorder(:id).pluck(:id).uniq).to eq [status1.id, status2.id, status4.id]
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    context 'when given multiple tags' do
 | 
			
		||||
      it 'returns the expected statuses' do
 | 
			
		||||
        expect(Status.tagged_with_none([tag1.id, tag2.id]).reorder(:id).pluck(:id).uniq).to eq [status3.id, status4.id]
 | 
			
		||||
        expect(Status.tagged_with_none([tag1.id, tag3.id]).reorder(:id).pluck(:id).uniq).to eq [status2.id, status4.id]
 | 
			
		||||
        expect(Status.tagged_with_none([tag2.id, tag3.id]).reorder(:id).pluck(:id).uniq).to eq [status1.id, status4.id]
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe '.permitted_for' do
 | 
			
		||||
    subject { described_class.permitted_for(target_account, account).pluck(:visibility) }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user