Forked from
PortalMEC / portalmec
716 commits behind the upstream repository.
searches_spec.rb 2.08 KiB
require 'acceptance_helpers'
resource 'Searches' do
explanation "Search is a query for Learning Objects, Collections or Users."
before { 12.times { create(:learning_object); LearningObject.reindex } }
get '/v1/search' do
parameter :page, 'Results page number'
parameter :results_per_page, 'Number of results per page'
parameter :order, 'How the results should be ordered. Default is by relevance, possible values are: author, publicationasc, publicationdesc, title, likes, downloads, review_average. User order by relevance and name.'
parameter :query, 'The query string to be searched'
parameter :search_class, 'What kind of object are going to be searched: LearningObject, Collection, User'
parameter :tags, 'Filter the search by tags, separated by ’&’. Example: tags[]=Biologia&tags[]=Artes'
parameter :subjects, 'Filter the search by subjects, array of ids. Example: subjects[]=1&subjects[]=2'
parameter :educational_stages, 'Filter the search by educational_stages, array of ids. Example: educational_stages[]=1&educational_stages[]=2'
parameter :types, 'Filter the search by Learning Object object types, array of ids. Example: object_types[]=1&object_types[]=2'
let(:page) { 1 }
let(:results_per_page) { 12 }
let(:order) { "score" }
let(:query) { "*" }
let(:search_class) { "LearningObject" }
before do
end
example_request 'Fetching objects' do
# active model serializer may render model associations in different order for collections (array of items), so we're verifing only returned ids
do_request
expect(status).to eq(200)
expect(JSON.parse(response_body).map { |o| o['id'] }.sort).to eq(LearningObject.limit(results_per_page).pluck(:id).sort)
end
end
get '/v1/search/autocomplete' do
parameter :query, 'The query string to be searched'
parameter :search_class, 'What kind of object are going to be searched'
let(:search_class) { "LearningObject" }
example 'Autocomplete objects names' do
do_request
expect(status).to eq(200)
end
end
end