@ -3,8 +3,6 @@
require 'rails_helper'
require 'rails_helper'
describe SearchService , type : :service do
describe SearchService , type : :service do
let ( :current_account ) { Fabricate ( :user ) . account }
subject { described_class . new }
subject { described_class . new }
describe '#call' do
describe '#call' do
@ -12,7 +10,7 @@ describe SearchService, type: :service do
it 'returns empty results without searching' do
it 'returns empty results without searching' do
allow ( AccountSearchService ) . to receive ( :new )
allow ( AccountSearchService ) . to receive ( :new )
allow ( Tag ) . to receive ( :search_for )
allow ( Tag ) . to receive ( :search_for )
results = subject . call ( '' , current_account , 10 )
results = subject . call ( '' , nil , 10 )
expect ( results ) . to eq ( empty_results )
expect ( results ) . to eq ( empty_results )
expect ( AccountSearchService ) . not_to have_received ( :new )
expect ( AccountSearchService ) . not_to have_received ( :new )
@ -29,33 +27,33 @@ describe SearchService, type: :service do
it 'returns the empty results' do
it 'returns the empty results' do
service = double ( call : nil )
service = double ( call : nil )
allow ( ResolveURLService ) . to receive ( :new ) . and_return ( service )
allow ( ResolveURLService ) . to receive ( :new ) . and_return ( service )
results = subject . call ( @query , current_account , 10 )
results = subject . call ( @query , nil , 10 )
expect ( service ) . to have_received ( :call ) . with ( @query , on_behalf_of : current_account )
expect ( service ) . to have_received ( :call ) . with ( @query , on_behalf_of : nil )
expect ( results ) . to eq empty_results
expect ( results ) . to eq empty_results
end
end
end
end
context 'that finds an account' do
context 'that finds an account' do
it 'includes the account in the results' do
it 'includes the account in the results' do
account = Fabricate( :account )
account = Account. new
service = double ( call : account )
service = double ( call : account )
allow ( ResolveURLService ) . to receive ( :new ) . and_return ( service )
allow ( ResolveURLService ) . to receive ( :new ) . and_return ( service )
results = subject . call ( @query , current_account , 10 )
results = subject . call ( @query , nil , 10 )
expect ( service ) . to have_received ( :call ) . with ( @query , on_behalf_of : current_account )
expect ( service ) . to have_received ( :call ) . with ( @query , on_behalf_of : nil )
expect ( results ) . to eq empty_results . merge ( accounts : [ account ] )
expect ( results ) . to eq empty_results . merge ( accounts : [ account ] )
end
end
end
end
context 'that finds a status' do
context 'that finds a status' do
it 'includes the status in the results' do
it 'includes the status in the results' do
status = Fabricate( :status )
status = Status. new
service = double ( call : status )
service = double ( call : status )
allow ( ResolveURLService ) . to receive ( :new ) . and_return ( service )
allow ( ResolveURLService ) . to receive ( :new ) . and_return ( service )
results = subject . call ( @query , current_account , 10 )
results = subject . call ( @query , nil , 10 )
expect ( service ) . to have_received ( :call ) . with ( @query , on_behalf_of : current_account )
expect ( service ) . to have_received ( :call ) . with ( @query , on_behalf_of : nil )
expect ( results ) . to eq empty_results . merge ( statuses : [ status ] )
expect ( results ) . to eq empty_results . merge ( statuses : [ status ] )
end
end
end
end
@ -65,12 +63,12 @@ describe SearchService, type: :service do
context 'that matches an account' do
context 'that matches an account' do
it 'includes the account in the results' do
it 'includes the account in the results' do
query = 'username'
query = 'username'
account = Fabricate( :account )
account = Account. new
service = double ( call : [ account ] )
service = double ( call : [ account ] )
allow ( AccountSearchService ) . to receive ( :new ) . and_return ( service )
allow ( AccountSearchService ) . to receive ( :new ) . and_return ( service )
results = subject . call ( query , current_account , 10 )
results = subject . call ( query , nil , 10 )
expect ( service ) . to have_received ( :call ) . with ( query , current_account , limit : 10 , offset : 0 , resolve : false )
expect ( service ) . to have_received ( :call ) . with ( query , nil , limit : 10 , offset : 0 , resolve : false )
expect ( results ) . to eq empty_results . merge ( accounts : [ account ] )
expect ( results ) . to eq empty_results . merge ( accounts : [ account ] )
end
end
end
end
@ -81,7 +79,7 @@ describe SearchService, type: :service do
tag = Tag . new
tag = Tag . new
allow ( Tag ) . to receive ( :search_for ) . with ( 'tag' , 10 , 0 ) . and_return ( [ tag ] )
allow ( Tag ) . to receive ( :search_for ) . with ( 'tag' , 10 , 0 ) . and_return ( [ tag ] )
results = subject . call ( query , current_account , 10 )
results = subject . call ( query , nil , 10 )
expect ( Tag ) . to have_received ( :search_for ) . with ( 'tag' , 10 , 0 )
expect ( Tag ) . to have_received ( :search_for ) . with ( 'tag' , 10 , 0 )
expect ( results ) . to eq empty_results . merge ( hashtags : [ tag ] )
expect ( results ) . to eq empty_results . merge ( hashtags : [ tag ] )
end
end
@ -89,7 +87,7 @@ describe SearchService, type: :service do
query = '@username'
query = '@username'
allow ( Tag ) . to receive ( :search_for )
allow ( Tag ) . to receive ( :search_for )
results = subject . call ( query , current_account , 10 )
results = subject . call ( query , nil , 10 )
expect ( Tag ) . not_to have_received ( :search_for )
expect ( Tag ) . not_to have_received ( :search_for )
expect ( results ) . to eq empty_results
expect ( results ) . to eq empty_results
end
end