42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
import $ from 'jquery';
 | 
						|
import Api from '~/api';
 | 
						|
import Search from '~/pages/search/show/search';
 | 
						|
 | 
						|
describe('Search', () => {
 | 
						|
  const fixturePath = 'search/show.html.raw';
 | 
						|
  const searchTerm = 'some search';
 | 
						|
  const fillDropdownInput = (dropdownSelector) => {
 | 
						|
    const dropdownElement = document.querySelector(dropdownSelector).parentNode;
 | 
						|
    const inputElement = dropdownElement.querySelector('.dropdown-input-field');
 | 
						|
    inputElement.value = searchTerm;
 | 
						|
    return inputElement;
 | 
						|
  };
 | 
						|
 | 
						|
  preloadFixtures(fixturePath);
 | 
						|
 | 
						|
  beforeEach(() => {
 | 
						|
    loadFixtures(fixturePath);
 | 
						|
    new Search(); // eslint-disable-line no-new
 | 
						|
  });
 | 
						|
 | 
						|
  it('requests groups from backend when filtering', (done) => {
 | 
						|
    spyOn(Api, 'groups').and.callFake((term) => {
 | 
						|
      expect(term).toBe(searchTerm);
 | 
						|
      done();
 | 
						|
    });
 | 
						|
    const inputElement = fillDropdownInput('.js-search-group-dropdown');
 | 
						|
 | 
						|
    $(inputElement).trigger('input');
 | 
						|
  });
 | 
						|
 | 
						|
  it('requests projects from backend when filtering', (done) => {
 | 
						|
    spyOn(Api, 'projects').and.callFake((term) => {
 | 
						|
      expect(term).toBe(searchTerm);
 | 
						|
      done();
 | 
						|
    });
 | 
						|
    const inputElement = fillDropdownInput('.js-search-project-dropdown');
 | 
						|
 | 
						|
    $(inputElement).trigger('input');
 | 
						|
  });
 | 
						|
});
 |