Skip to content
Snippets Groups Projects
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