Fix additional issues with status cache hydration (#19747)
* Spare one SQL query when hydrating polls * Improve tests * Fix more discrepancies * Fix possible crash when the status has no application set
This commit is contained in:
		@@ -11,8 +11,20 @@ describe StatusCacheHydrator do
 | 
			
		||||
 | 
			
		||||
    shared_examples 'shared behavior' do
 | 
			
		||||
      context 'when handling a new status' do
 | 
			
		||||
        let(:poll) { Fabricate(:poll) }
 | 
			
		||||
        let(:status) { Fabricate(:status, poll: poll) }
 | 
			
		||||
 | 
			
		||||
        it 'renders the same attributes as a full render' do
 | 
			
		||||
          expect(subject).to include(compare_to_hash)
 | 
			
		||||
          expect(subject).to eql(compare_to_hash)
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      context 'when handling a new status with own poll' do
 | 
			
		||||
        let(:poll) { Fabricate(:poll, account: account) }
 | 
			
		||||
        let(:status) { Fabricate(:status, poll: poll, account: account) }
 | 
			
		||||
 | 
			
		||||
        it 'renders the same attributes as a full render' do
 | 
			
		||||
          expect(subject).to eql(compare_to_hash)
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
@@ -26,7 +38,7 @@ describe StatusCacheHydrator do
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          it 'renders the same attributes as a full render' do
 | 
			
		||||
            expect(subject).to include(compare_to_hash)
 | 
			
		||||
            expect(subject).to eql(compare_to_hash)
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
@@ -36,7 +48,7 @@ describe StatusCacheHydrator do
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          it 'renders the same attributes as a full render' do
 | 
			
		||||
            expect(subject).to include(compare_to_hash)
 | 
			
		||||
            expect(subject).to eql(compare_to_hash)
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
@@ -48,7 +60,7 @@ describe StatusCacheHydrator do
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          it 'renders the same attributes as a full render' do
 | 
			
		||||
            expect(subject).to include(compare_to_hash)
 | 
			
		||||
            expect(subject).to eql(compare_to_hash)
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
@@ -62,7 +74,7 @@ describe StatusCacheHydrator do
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          it 'renders the same attributes as a full render' do
 | 
			
		||||
            expect(subject).to include(compare_to_hash)
 | 
			
		||||
            expect(subject).to eql(compare_to_hash)
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
@@ -71,7 +83,7 @@ describe StatusCacheHydrator do
 | 
			
		||||
          let(:reblog) { Fabricate(:status, poll: poll, account: account) }
 | 
			
		||||
 | 
			
		||||
          it 'renders the same attributes as a full render' do
 | 
			
		||||
            expect(subject).to include(compare_to_hash)
 | 
			
		||||
            expect(subject).to eql(compare_to_hash)
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
@@ -84,7 +96,7 @@ describe StatusCacheHydrator do
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          it 'renders the same attributes as a full render' do
 | 
			
		||||
            expect(subject).to include(compare_to_hash)
 | 
			
		||||
            expect(subject).to eql(compare_to_hash)
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user