45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require 'rails_helper'
 | |
| 
 | |
| RSpec.describe Trends::Links do
 | |
|   describe 'Trends::Links::Query' do
 | |
|     subject { described_class.new.query }
 | |
| 
 | |
|     describe '#records' do
 | |
|       context 'with scored cards' do
 | |
|         let!(:higher_score) { Fabricate :preview_card_trend, score: 10, language: 'en' }
 | |
|         let!(:lower_score) { Fabricate :preview_card_trend, score: 1, language: 'es' }
 | |
| 
 | |
|         it 'returns higher score first' do
 | |
|           expect(subject.records)
 | |
|             .to eq([higher_score.preview_card, lower_score.preview_card])
 | |
|         end
 | |
| 
 | |
|         context 'with preferred locale' do
 | |
|           before { subject.in_locale!('es') }
 | |
| 
 | |
|           it 'returns in language order' do
 | |
|             expect(subject.records)
 | |
|               .to eq([lower_score.preview_card, higher_score.preview_card])
 | |
|           end
 | |
|         end
 | |
| 
 | |
|         context 'when account has chosen languages' do
 | |
|           let!(:lang_match_higher_score) { Fabricate :preview_card_trend, score: 10, language: 'is' }
 | |
|           let!(:lang_match_lower_score) { Fabricate :preview_card_trend, score: 1, language: 'da' }
 | |
|           let(:user) { Fabricate :user, chosen_languages: %w(da is) }
 | |
|           let(:account) { Fabricate :account, user: user }
 | |
| 
 | |
|           before { subject.filtered_for!(account) }
 | |
| 
 | |
|           it 'returns results' do
 | |
|             expect(subject.records)
 | |
|               .to eq([lang_match_higher_score.preview_card, lang_match_lower_score.preview_card, higher_score.preview_card, lower_score.preview_card])
 | |
|           end
 | |
|         end
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |