Skip to content
Snippets Groups Projects
search_input_test.js 6.15 KiB
/**
 * Copyright (c) 2014, Agence Française Informatique (AFI). All rights reserved.
 *
 * BOKEH is free software; you can redistribute it and/or modify
 * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
 * the Free Software Foundation.
 *
 * There are special exceptions to the terms and conditions of the AGPL as it
 * is applied to this software (see README file).
 *
 * BOKEH is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
 *
 * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
 * along with BOKEH; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
 */
var fixture;
var html = $('html');
html.find('div').css('color', 'green');
QUnit.module('search_widget', {
  setup: function() {

    fixture = $('<div>'
		+'<article>Bokeh</article>'
		+'<div class="article_full_separator"></div>'
		+'<article>Biquette</article>'
		+'<div class="article_full_separator"></div>'
		+'<article>La biquette</article>'
		+'</div>');

    fixture_ul_li = $(
        '<div>'
	    + '<ul>'
	    +   '<li>'
            +     '<div class="sections">Listes</div>'
            +     '<div class="actions">Actions</div>'
            +     '<ul>'
	    +       '<li>'
	    +         '<div class="contents">Prems</div>'
            +         '<div class="actions">Actions</div>'
	    +       '</li>'
            +       '<li>'
	    +         '<div class="contents">Seconds</div>'
            +         '<div class="actions">Actions</div>'
	    +       '</li>'
            +     '</ul>'
	    +   '</li>'
	    +   '<li>'
	    +     '<div class="sections">Categories</div>'
            +     '<div class="actions">Actions</div>'
            +     '<ul>'
	    +       '<li>'
	    +         '<div class="contents">Premier</div>'
            +         '<div class="actions">Actions</div>'
	    +       '</li>'
	    +       '<li>'
	    +         '<div class="contents">Premier bis</div>'
            +         '<div class="actions">Actions</div>'
	    +       '</li>'
	    +       '<li>'
	    +         '<div class="contents">Premier ter</div>'
            +         '<div class="actions">Actions</div>'
	    +       '</li>'
            +       '<li>'
	    +          '<div class="contents">Deuxieme</div>'
            +           '<div class="actions">Actions</div>'
	    +       '</li>'
	    +     '</ul></li></ul></div>');

    fixture.search_input({ id : 'admin_left_menu', 
			   label : '' ,
			   fixed_display : 'div'});
    fixture_ul_li.search_input({ id : 'admin_left_menu', 
			   label : '' ,
			   search_path : 'ul li div'});
  }
});


test('search input should be present', function() {
  deepEqual(fixture.find('input[name="search_input"][id="admin_left_menu"]').length, 1, fixture.html());
});


test('search input css should be present', function() {
  deepEqual(html.find('link[href*="public/opac/java/search_input/search_input.css"]').length, 1, html.html());
});


test('div class separator should not be hide', function() {
  fixture.find('input').val('biq');
  fixture.find('input').trigger($.Event( "keyup", { keyCode: 0 }));
  deepEqual(fixture.find('div.search_input_not_found.article_full_separator').length, 0, fixture.html());
});


test('search term "biq" should hide article Bokeh', function() {
  fixture.find('input').val('biq');
  fixture.find('input').trigger($.Event( "keyup", { keyCode: 0 }));
  deepEqual(fixture.find('article.search_input_not_found').length, 1, fixture.html());
});


test('search terms "biq la" should hide articles Bokeh and Biquette', function() {
  fixture.find('input').val('biq la');
  fixture.find('input').trigger($.Event( "keyup", { keyCode: 0 }));
  deepEqual(fixture.find('article.search_input_not_found').length, 2, fixture.html());
});


test('search terms "prem" should hide li contents Seconds and Deuxieme', function() {
  fixture_ul_li.find('input').val('prem');
  fixture_ul_li.find('input').trigger($.Event( "keyup", { keyCode: 0 }));
  equal(fixture_ul_li.find('div.contents.search_input_not_found').length, 2,
        fixture_ul_li.html());
});


test('search terms "prem" should hide 2 div.actions', function() {
  fixture_ul_li.find('input').val('prem');
  fixture_ul_li.find('input').trigger($.Event( "keyup", { keyCode: 0 }));
  equal(fixture_ul_li.find('div.actions.search_input_not_found').length, 2,
            fixture_ul_li.html());
});


test('search terms "prem" should not hide li sections', function() {
  fixture_ul_li.find('input').val('prem');
  fixture_ul_li.find('input').trigger($.Event( "keyup", { keyCode: 0 }));
  equal(fixture_ul_li.find('div.sections.search_input_not_found').length, 0,
        fixture_ul_li.html());
});


test('search terms "deux" should hide li contents Prems Seconds and Premier', function() {
  fixture_ul_li.find('input').val('deux');
  fixture_ul_li.find('input').trigger($.Event( "keyup", { keyCode: 0 }));
  equal(fixture_ul_li.find('div.contents.search_input_not_found').length, 5,
        fixture_ul_li.html());
});


test('search terms "deux" should hide 6 div.actions', function() {
  fixture_ul_li.find('input').val('deux');
  fixture_ul_li.find('input').trigger($.Event( "keyup", { keyCode: 0 }));
  equal(fixture_ul_li.find('div.actions.search_input_not_found').length, 6,
        fixture_ul_li.html());
});


test('search terms "deux" should hide li sections Listes', function() {
  fixture_ul_li.find('input').val('deux');
  fixture_ul_li.find('input').trigger($.Event( "keyup", { keyCode: 0 }));
  equal(fixture_ul_li.find('div.sections.search_input_not_found').length, 1,
        fixture_ul_li.html());
});


test('search terms "cate" should not hide his childs', function() {
  fixture_ul_li.find('input').val('cate');
  fixture_ul_li.find('input').trigger($.Event( "keyup", { keyCode: 0 }));
  equal(fixture_ul_li.find('div.contents.search_input_not_found').length, 2,
        fixture_ul_li.html());
});


test('keypress on search input should be bind', function() {
  $events = $._data(fixture_ul_li.find('input')[0], 'events');
  equal($events['keypress'] !== undefined , true);
});