11var QUnit = require ( 'steal-qunit' ) ;
22var SearchControl = require ( '../static/search' ) ;
33var searchLogic = require ( '../static/search-logic' ) ;
4+ var searchBarTemplate = require ( '../templates/search-bar.mustache!steal-stache' ) ;
5+ var searchResultsTemplate = require ( '../templates/search-results.mustache!steal-stache' ) ;
46
57/* Helper function for finding a specific result */
68var indexOfPageInResults = function ( pageName , results ) {
@@ -14,28 +16,45 @@ var indexOfPageInResults = function(pageName, results) {
1416/* Clear local storage */
1517window . localStorage . clear ( ) ;
1618
17- /* Create the search bar element */
18- var searchBar = document . createElement ( 'div ') ;
19- searchBar . id = 'search-bar' ;
20- document . body . appendChild ( searchBar ) ;
19+ /* Render the search templates into the page */
20+ var qunitFixture = document . getElementById ( 'qunit-fixture ') ;
21+ qunitFixture . appendChild ( searchBarTemplate ( ) ) ;
22+ qunitFixture . appendChild ( searchResultsTemplate ( ) ) ;
2123
2224/* Create a new instance of the search control */
23- var search = new SearchControl ( '# search-bar' , {
25+ var search = new SearchControl ( '. search-bar' , {
2426 pathPrefix : '../doc'
2527} ) ;
2628
2729/* Tests */
2830QUnit . module ( 'search control' ) ;
2931
30- var readyToSearch = function ( ) {
31- return search . searchEnginePromise . then ( function ( searchMap ) {
32- searchLogic . indexData ( search . convertSearchMapToIndexableItems ( searchMap ) ) ;
32+ var setUpSearchControl = search . searchEnginePromise . then ( function ( searchMap ) {
33+ return new Promise ( function ( resolve ) {
34+ // Wait for the search worker to be set up
35+ setTimeout ( function ( ) {
36+ resolve ( searchLogic . indexData ( search . convertSearchMapToIndexableItems ( searchMap ) ) ) ;
37+ } , 1000 ) ;
3338 } ) ;
34- } ;
39+ } ) ;
40+
41+ QUnit . test ( 'Search results render' , function ( assert ) {
42+ var done = assert . async ( ) ;
43+ setUpSearchControl . then ( function ( ) {
44+ search . search ( 'can-' ) ;
45+ setTimeout ( function ( ) {
46+ var searchResultLis = document . querySelectorAll ( '.search-results li' ) ;
47+ assert . equal ( searchResultLis . length > 1 , true , 'got more than 1 result' ) ;
48+ var firstResultText = searchResultLis [ 0 ] . querySelector ( 'a' ) . textContent . trim ( ) ;
49+ assert . notEqual ( firstResultText , '' , 'first result has text' ) ;
50+ done ( ) ;
51+ } , 1000 ) ;
52+ } ) ;
53+ } ) ;
3554
3655QUnit . test ( 'Search for “about”' , function ( assert ) {
3756 var done = assert . async ( ) ;
38- readyToSearch ( ) . then ( function ( ) {
57+ setUpSearchControl . then ( function ( ) {
3958 var results = searchLogic . search ( 'about' ) ;
4059 assert . equal ( results . length > 1 , true , 'got more than 1 result' ) ;
4160 assert . equal ( indexOfPageInResults ( 'about' , results ) , 0 , 'first result is the About page' ) ;
@@ -45,7 +64,7 @@ QUnit.test('Search for “about”', function(assert) {
4564
4665QUnit . test ( 'Search for “can-component”' , function ( assert ) {
4766 var done = assert . async ( ) ;
48- readyToSearch ( ) . then ( function ( ) {
67+ setUpSearchControl . then ( function ( ) {
4968 var results = searchLogic . search ( 'can-component' ) ;
5069 assert . equal ( results . length > 1 , true , 'got more than 1 result' ) ;
5170 assert . equal ( indexOfPageInResults ( 'can-component' , results ) , 0 , 'first result is the can-component page' ) ;
@@ -55,7 +74,7 @@ QUnit.test('Search for “can-component”', function(assert) {
5574
5675QUnit . test ( 'Search for “can-connect”' , function ( assert ) {
5776 var done = assert . async ( ) ;
58- readyToSearch ( ) . then ( function ( ) {
77+ setUpSearchControl . then ( function ( ) {
5978 var results = searchLogic . search ( 'can-connect' ) ;
6079 assert . equal ( results . length > 1 , true , 'got more than 1 result' ) ;
6180 assert . equal ( indexOfPageInResults ( 'can-connect' , results ) , 0 , 'first result is the can-connect page' ) ;
@@ -65,7 +84,7 @@ QUnit.test('Search for “can-connect”', function(assert) {
6584
6685QUnit . test ( 'Search for “helpers/' , function ( assert ) {
6786 var done = assert . async ( ) ;
68- readyToSearch ( ) . then ( function ( ) {
87+ setUpSearchControl . then ( function ( ) {
6988 var results = searchLogic . search ( 'helpers/' ) ;
7089 assert . equal ( results . length > 1 , true , 'got more than 1 result' ) ;
7190 done ( ) ;
@@ -74,7 +93,7 @@ QUnit.test('Search for “helpers/', function(assert) {
7493
7594QUnit . test ( 'Search for “Live Binding”' , function ( assert ) {
7695 var done = assert . async ( ) ;
77- readyToSearch ( ) . then ( function ( ) {
96+ setUpSearchControl . then ( function ( ) {
7897 var results = searchLogic . search ( 'Live Binding' ) ;
7998 assert . equal ( results . length > 1 , true , 'got more than 1 result' ) ;
8099 assert . equal ( indexOfPageInResults ( 'can-stache.Binding' , results ) < 2 , true , 'first result is the can-stache Live Binding page' ) ;
@@ -84,7 +103,7 @@ QUnit.test('Search for “Live Binding”', function(assert) {
84103
85104QUnit . test ( 'Search for “Play”' , function ( assert ) {
86105 var done = assert . async ( ) ;
87- readyToSearch ( ) . then ( function ( ) {
106+ setUpSearchControl . then ( function ( ) {
88107 var results = searchLogic . search ( 'Play' ) ;
89108 assert . equal ( results . length > 0 , true , 'got results' ) ;
90109 assert . equal ( indexOfPageInResults ( 'guides/recipes/playlist-editor' , results ) , 0 , 'first result is the “Playlist Editor (Advanced)” guide' ) ;
@@ -94,7 +113,7 @@ QUnit.test('Search for “Play”', function(assert) {
94113
95114QUnit . test ( 'Search for “stache”' , function ( assert ) {
96115 var done = assert . async ( ) ;
97- readyToSearch ( ) . then ( function ( ) {
116+ setUpSearchControl . then ( function ( ) {
98117 var results = searchLogic . search ( 'stache' ) ;
99118 assert . equal ( results . length > 1 , true , 'got more than 1 result' ) ;
100119 assert . equal ( indexOfPageInResults ( 'can-stache' , results ) , 0 , 'first result is the can-stache page' ) ;
@@ -104,7 +123,7 @@ QUnit.test('Search for “stache”', function(assert) {
104123
105124QUnit . test ( 'Search for “%special”' , function ( assert ) {
106125 var done = assert . async ( ) ;
107- readyToSearch ( ) . then ( function ( ) {
126+ setUpSearchControl . then ( function ( ) {
108127 var results = searchLogic . search ( '%special' ) ;
109128 assert . equal ( results . length > 0 , true , 'got results' ) ;
110129 assert . equal ( indexOfPageInResults ( 'can-stache/keys/special' , results ) , 0 , 'first result is the can-stache/keys/special page' ) ;
@@ -114,18 +133,17 @@ QUnit.test('Search for “%special”', function(assert) {
114133
115134QUnit . test ( 'Search for “define/map”' , function ( assert ) {
116135 var done = assert . async ( ) ;
117- readyToSearch ( ) . then ( function ( ) {
136+ setUpSearchControl . then ( function ( ) {
118137 var results = searchLogic . search ( 'define/map' ) ;
119138 assert . equal ( results . length > 1 , true , 'got more than 1 result' ) ;
120139 assert . equal ( indexOfPageInResults ( 'can-define/map/map' , results ) , 0 , 'first result is the can-define/map/map page' ) ;
121140 done ( ) ;
122141 } ) ;
123142} ) ;
124143
125-
126144QUnit . test ( 'Speed while searching for can-*' , function ( assert ) {
127145 var done = assert . async ( ) ;
128- readyToSearch ( ) . then ( function ( ) {
146+ setUpSearchControl . then ( function ( ) {
129147 var startTime = new Date ( ) ;
130148 var results = searchLogic . search ( 'can-zone' ) ;
131149 var totalTime = new Date ( ) - startTime ;
0 commit comments