Skip to content

Commit bedb053

Browse files
committed
configure karma and setup search to add testcases
1 parent fe45043 commit bedb053

File tree

8 files changed

+304
-4
lines changed

8 files changed

+304
-4
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
node_modules
2+
bower_components

.hound.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
javascript:
2+
enabled: true
3+
config_file: .jshintrc

.jshintrc

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"undef": true,
3+
"unused": true,
4+
"expr": true,
5+
"maxlen": 80,
6+
"camelcase": true,
7+
"quotmark": true,
8+
"globals":{
9+
"expect": false,
10+
"module": true,
11+
"describe": false,
12+
"window": true,
13+
"document": true,
14+
"before": false,
15+
"after": false,
16+
"beforeEach": false,
17+
"fixture": false,
18+
"__html__": false,
19+
"html": false,
20+
"sinon": false,
21+
"jQuery": false,
22+
"it": false
23+
}
24+
}

app.js

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
var config = {
2+
siteName : 'newtest-u1436941805532'
3+
,APIKey : 'cd97d8b7741240763b89e5c014bc3aab'
4+
,type : 'search'
5+
,getCategoryId : ''
6+
,inputSelector : '#search_input'
7+
,searchButtonSelector : '#search_button'
8+
,spellCheck : '#did_you_mean'
9+
,spellCheckTemp : 'Did you mean : {{suggestion}} ?'
10+
,searchQueryDisplay : '#search_title'
11+
,searchQueryDisplayTemp : 'Showing results for {{query}} - {{start}}-{{end}} of {{numberOfProducts}} Results'
12+
,pageSize : 12
13+
,searchResultSetTemp : [
14+
'{{#products}}'
15+
,'<li>'
16+
,'<a href="product.html?pid={{uniqueId}}" id="pdt-{{uniqueId}}" class="result-item" unbxdParam_sku="{{uniqueId}}" unbxdParam_pRank="{{unbxdprank}}" unbxdAttr="product">'
17+
,'<div class="result-image-container">'
18+
,'<span class="result-image-horizontal-holder">'
19+
,'<img src="{{{image_url}}}" alt="{{{title}}}">'
20+
,'</span>'
21+
,'</div>'
22+
,'<div class="result-brand">{{{brand}}}</div>'
23+
,'<div class="result-title">{{{title}}}</div>'
24+
,'<div class="result-price">'
25+
,'${{price}}'
26+
,'</div>'
27+
,'</a>'
28+
,'</li>'
29+
,'{{/products}}'
30+
].join('')
31+
,searchResultContainer : '#results_container'
32+
,isClickNScroll: false
33+
,clickNScrollSelector : ''
34+
,isAutoScroll : true
35+
,facetTemp : [
36+
'{{#facets}}'
37+
,'<div class="facet-block">'
38+
,'<h3>{{name}}</h3>'
39+
,'<div class="facet-values">'
40+
,'<ul>'
41+
,'{{#selected}}'
42+
,'<li unbxdParam_facetName="{{../facet_name}}" unbxdParam_facetValue="{{value}}">'
43+
,'<label for="{{../facet_name}}_{{value}}">'
44+
,'<input type="checkbox" checked class="filter-checkbox" unbxdParam_facetName="{{../facet_name}}" unbxdParam_facetValue="{{value}}" id="{{../facet_name}}_{{value}}"> {{prepareFacetValue value}} ({{count}})'
45+
,'</label>'
46+
,'</li>'
47+
,'{{/selected}}'
48+
,'{{#unselected}}'
49+
,'<li unbxdParam_facetName="{{../facet_name}}" unbxdParam_facetValue="{{value}}">'
50+
,'<label for="{{../facet_name}}_{{value}}">'
51+
,'<input type="checkbox" class="filter-checkbox" unbxdParam_facetName="{{../facet_name}}" unbxdParam_facetValue="{{value}}" id="{{../facet_name}}_{{value}}"> {{prepareFacetValue value}} ({{count}})'
52+
,'</label>'
53+
,'</li>'
54+
,'{{/unselected}}'
55+
,'</ul>'
56+
,'</div>'
57+
,'</div>'
58+
,'{{/facets}}'
59+
,'{{#rangefacets}}'
60+
,'<div class="facet-block"'
61+
,'<h3>{{name}}</h3>'
62+
,'<div class="facet-values">'
63+
,'<ul>'
64+
,'{{#selected}}'
65+
,'<li unbxdParam_facetName="{{../facet_name}}" unbxdParam_facetValue="{{value}}">'
66+
,'<label for="{{../facet_name}}_{{value}}">'
67+
,'<input type="checkbox" checked class="filter-checkbox" unbxdParam_facetName="{{../facet_name}}" unbxdParam_facetValue="{{value}}" id="{{../facet_name}}_{{value}}"> {{prepareFacetValue begin}} - {{prepareFacetValue end}} ({{count}})'
68+
,'</label>'
69+
,'</li>'
70+
,'{{/selected}}'
71+
,'{{#unselected}}'
72+
,'<li unbxdParam_facetName="{{../facet_name}}" unbxdParam_facetValue="{{value}}">'
73+
,'<label for="{{../facet_name}}_{{value}}">'
74+
,'<input type="checkbox" class="filter-checkbox" unbxdParam_facetName="{{../facet_name}}" unbxdParam_facetValue="{{value}}" id="{{../facet_name}}_{{value}}"> {{prepareFacetValue begin}} - {{prepareFacetValue end}} ({{count}})'
75+
,'</label>'
76+
,'</li>'
77+
,'{{/unselected}}'
78+
,'</ul>'
79+
,'</div>'
80+
,'</div>'
81+
,'{{/rangefacets}}'
82+
].join('')
83+
,facetContainerSelector : "#facets_container"
84+
,facetCheckBoxSelector : "input[type='checkbox']"
85+
,facetElementSelector : "label"
86+
,facetOnSelect : function(el){
87+
//jQuery(el).addClass('selected');
88+
}
89+
,facetOnDeselect : function(el){
90+
//jQuery(el).removeClass('selected');
91+
}
92+
,facetMultiSelect : true
93+
,selectedFacetContainerSelector : "#selected_facets"
94+
,clearSelectedFacetsSelector : "#clear_all_selected_facets"
95+
,removeSelectedFacetSelector : ".selected-facet-delete"
96+
,selectedFacetHolderSelector : ""
97+
,loaderSelector : ""//".result-loader"
98+
,onFacetLoad : function(obj){}
99+
,sanitizeQueryString : function(q){ return q;}
100+
,getFacetStats : ""
101+
,processFacetStats : function(obj){}
102+
,setDefaultFilters : function(){}
103+
,onIntialResultLoad : function(obj){}
104+
,onPageLoad : function(obj){}
105+
,onNoResult : function(obj){}
106+
,bannerSelector: ".banner"
107+
,bannerTemp: "<a href='{{landingUrl}}'><img src='{{imageUrl}}'/></a>"
108+
,sortContainerSelector: '#sort_container'
109+
,sortOptions: [{
110+
name: 'Relevancy'
111+
},{
112+
name: 'Price: H-L',
113+
field: 'price',
114+
order: 'desc'
115+
},{
116+
name: 'Price: L-H',
117+
field: 'price',
118+
order: 'asc'
119+
}]
120+
,sortContainerType: 'select' /* value can be select or click */
121+
,sortContainerTemp: [
122+
'<select>',
123+
'{{#options}}',
124+
'{{#if selected}}',
125+
'<option value="{{field}}-{{order}}" unbxdsortField="{{field}}" unbxdsortValue="{{order}}" selected>{{name}}</option>',
126+
'{{else}}',
127+
'<option value="{{field}}-{{order}}" unbxdsortField="{{field}}" unbxdsortValue="{{order}}">{{name}}</option>',
128+
'{{/if}}',
129+
'{{/options}}',
130+
'</select>'
131+
].join('')
132+
,paginationContainerSelector : '#pagination_container'
133+
,paginationTemp: [
134+
'{{#if hasFirst}}',
135+
'<span class="unbxd_first" unbxdaction="first"> &laquo; </span>',
136+
'{{/if}}',
137+
'{{#if hasPrev}}',
138+
'<span class="unbxd_prev" unbxdaction="prev"> &lt; </span>',
139+
'{{/if}}',
140+
'{{#pages}}',
141+
'{{#if current}}',
142+
'<span class="unbxd_page highlight"> {{page}} </span>',
143+
'{{else}}',
144+
'<span class="unbxd_page" unbxdaction="{{page}}"> {{page}} </span>',
145+
'{{/if}}',
146+
'{{/pages}}',
147+
'<span class="unbxd_pageof"> of </span>',
148+
'<span class="unbxd_totalPages" unbxdaction="{{totalPages}}">{{totalPages}}</span>',
149+
'{{#if hasNext}}',
150+
'<span class="unbxd_next" unbxdaction="next"> &gt; </span>',
151+
'{{/if}}',
152+
'{{#if hasLast}}',
153+
'<span class="unbxd_last" unbxdaction="last">&raquo;</span>',
154+
'{{/if}}'
155+
].join('')
156+
,fields : ['image_url','title','brand','price','uniqueId']
157+
,searchQueryParam:"q"
158+
};

bower.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"name": "js-sdk",
3+
"version": "1.0.0",
4+
"main": "unbxd-sdk.js",
5+
"dependencies": {
6+
"handlebars": "^4.0.5"
7+
}
8+
}

index.html

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<div class="header-container clearfix">
2+
<div class="header row clearfix">
3+
<div class="header-search">
4+
<div class="search-input-button-holder clearfix">
5+
<form method="GET" action="search.html">
6+
<input type="text" class="search-input lt" id="search_input" value="" unbxdattr="sq" name="q" autocomplete="off"/>
7+
<button type="submit" class="search-button lt" id="search_button" unbxdattr="sq_bt"></button>
8+
</form>
9+
</div>
10+
</div>
11+
</div>
12+
</div>
13+
<div class="search-container">
14+
<div class="row clearfix">
15+
<div id="pagination_container"></div>
16+
<div class="lt search-facet-column" id="facets_container">
17+
</div>
18+
<div class="rt search-result-column">
19+
<h2 class="result-spell-check" id="did_you_mean">
20+
</h2>
21+
<h3 class="result-title-count" id="search_title">
22+
</h3>
23+
<div id="sort_container"></div>
24+
<div class="result-selected-facets clearfix" id="selected_facets">
25+
</div>
26+
<ul class="search-result-list clearfix" id="results_container">
27+
</ul>
28+
<div class="result-loader" id="ajax_loader">
29+
<a href="#"><img src="images/loader.gif">Loading more...</a>
30+
</div>
31+
</div>
32+
</div>
33+
</div>

karma.conf.js

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
module.exports = function (config) {
2+
'use strict';
3+
config.set({
4+
5+
basePath: '',
6+
7+
plugins: [
8+
'karma-mocha',
9+
'karma-chai',
10+
'karma-jquery',
11+
'karma-phantomjs-launcher',
12+
'karma-html2js-preprocessor',
13+
'karma-sinon',
14+
'karma-fixture',
15+
'karma-json-fixtures-preprocessor',
16+
'karma-handlebars-preprocessor',
17+
'karma-verbose-reporter',
18+
],
19+
20+
frameworks: ['mocha', 'chai','jquery-1.8.3','sinon','fixture'],
21+
22+
jsonFixturesPreprocessor: {
23+
variableName: '__json__'
24+
},
25+
26+
preprocessors: {
27+
'**/*.html': ['html2js'],
28+
'**/*.json' : ['json_fixtures']
29+
},
30+
31+
files: [
32+
'./bower_components/handlebars/handlebars.min.js',
33+
'./index.html',
34+
'./unbxdSearch.js',
35+
'./app.js',
36+
'mock/*.json',
37+
'test/search/*.spec.js',
38+
],
39+
40+
reporters: ['verbose','progress'],
41+
42+
port: 9876,
43+
colors: true,
44+
autoWatch: false,
45+
singleRun: true,
46+
47+
// level of logging
48+
logLevel: config.LOG_INFO,
49+
50+
browsers: ['PhantomJS']
51+
});
52+
};

package.json

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
"phantom": "^0.7.2"
1313
},
1414
"scripts": {
15-
"test": "node tests/tester.js"
15+
"test": "karma start",
16+
"postinstall": "bower install"
1617
},
1718
"repository": {
1819
"type": "git",
@@ -23,7 +24,26 @@
2324
"bugs": {
2425
"url": "https://github.com/unbxd/js-sdk/issues"
2526
},
26-
"homepage": "https://github.com/unbxd/js-sdk"
27+
"homepage": "https://github.com/unbxd/js-sdk",
28+
"devDependencies": {
29+
"chai": "^2.2.0",
30+
"grunt": "^1.0.1",
31+
"grunt-eslint": "^11.0.0",
32+
"grunt-karma": "^2.0.0",
33+
"handlebars": "^4.0.5",
34+
"karma": "^1.3.0",
35+
"karma-chai": "^0.1.0",
36+
"karma-fixture": "^0.2.6",
37+
"karma-handlebars-preprocessor": "^0.3.0",
38+
"karma-html2js-preprocessor": "^1.0.0",
39+
"karma-jquery": "^0.1.0",
40+
"karma-json-fixtures-preprocessor": "0.0.6",
41+
"karma-mocha": "^0.1.10",
42+
"karma-phantomjs-launcher": "^1.0.2",
43+
"karma-sinon": "^1.0.5",
44+
"karma-verbose-reporter": "0.0.3",
45+
"load-grunt-tasks": "^0.6.0",
46+
"mocha": "^2.2.4",
47+
"sinon": "^1.17.5"
48+
}
2749
}
28-
29-

0 commit comments

Comments
 (0)