Skip to content

Commit e1431f5

Browse files
authored
Merge pull request #34 from santosh1994/test-cases
Test cases - search functionalities
2 parents fe45043 + 01ecf61 commit e1431f5

30 files changed

+1439
-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: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
javascript:
2+
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+
}

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ cache:
1111

1212
before_install:
1313
- "npm --version"
14+
- "npm install -g bower"
1415

1516
install:
1617
- "npm install"

app.js

Lines changed: 277 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,277 @@
1+
/* exported config */
2+
var config = {
3+
siteName : 'newtest-u1436941805532',
4+
APIKey : 'cd97d8b7741240763b89e5c014bc3aab',
5+
type : 'search',
6+
getCategoryId : '',
7+
inputSelector : '#search_input',
8+
searchButtonSelector : '#search_button',
9+
spellCheck : '#did_you_mean',
10+
spellCheckTemp : 'Did you mean : {{suggestion}} ?',
11+
searchQueryDisplay : '#search_title',
12+
searchQueryDisplayTemp : [
13+
'Showing results for {{query}} - {{start}}-{{end}}',
14+
' of {{numberOfProducts}} Results'
15+
].join(''),
16+
pageSize : 12,
17+
searchResultSetTemp :
18+
{
19+
'grid' : [
20+
'{{#products}}',
21+
'<li class="grid_view">',
22+
'<a href="product.html?pid={{uniqueId}}" id="pdt-{{uniqueId}}" ',
23+
'class="result-item" unbxdParam_sku="{{uniqueId}}" ',
24+
'unbxdParam_pRank="{{unbxdprank}}" unbxdAttr="product">',
25+
'<div class="result-image-container">',
26+
'<span class="result-image-horizontal-holder">',
27+
'<img src="{{{image_url}}}" alt="{{{title}}}">',
28+
'</span>',
29+
'</div>',
30+
'<div class="result-brand">{{{brand}}}</div>',
31+
'<div class="result-title">{{{title}}}</div>',
32+
'<div class="result-price">',
33+
'${{price}}',
34+
'</div>',
35+
'</a>',
36+
'</li>',
37+
'{{/products}}'
38+
].join(''),
39+
'list' : [
40+
'{{#products}}',
41+
'<li class="list_view">',
42+
'<a href="product.html?pid={{uniqueId}}" id="pdt-{{uniqueId}}" ',
43+
'class="result-item" unbxdParam_sku="{{uniqueId}}" ',
44+
'unbxdParam_pRank="{{unbxdprank}}" unbxdAttr="product">',
45+
'<div class="result-image-container">',
46+
'<span class="result-image-horizontal-holder">',
47+
'<img src="{{{image_url}}}" alt="{{{title}}}">',
48+
'</span>',
49+
'</div>',
50+
'<div class="result-brand">{{{brand}}}</div>',
51+
'<div class="result-title">{{{title}}}</div>',
52+
'<div class="result-price">',
53+
'${{price}}',
54+
'</div>',
55+
'</a>',
56+
'</li>',
57+
'{{/products}}'
58+
].join('')
59+
},
60+
searchResultContainer : '#results_container',
61+
isClickNScroll: false,
62+
clickNScrollElementSelector : '#load-more',
63+
isAutoScroll : true,
64+
facetTemp : [
65+
'{{#facets}}',
66+
'<div class="facet-block">',
67+
'<h3>{{name}}</h3>',
68+
'<div class="facet-values">',
69+
'<ul>',
70+
'{{#selected}}',
71+
'<li unbxdParam_facetName="{{../facet_name}}" ',
72+
'unbxdParam_facetValue="{{value}}">',
73+
'<label for="{{../facet_name}}_{{value}}">',
74+
'<input type="checkbox" checked class="filter-checkbox" ',
75+
'unbxdParam_facetName="{{../facet_name}}" ',
76+
'unbxdParam_facetValue="{{value}}" ',
77+
'id="{{../facet_name}}_{{value}}"> ',
78+
'{{prepareFacetValue value}} ({{count}})',
79+
'</label>',
80+
'</li>',
81+
'{{/selected}}',
82+
'{{#unselected}}',
83+
'<li unbxdParam_facetName="{{../facet_name}}" ',
84+
'unbxdParam_facetValue="{{value}}">',
85+
'<label for="{{../facet_name}}_{{value}}">',
86+
'<input type="checkbox" class="filter-checkbox" ',
87+
'unbxdParam_facetName="{{../facet_name}}" ',
88+
'unbxdParam_facetValue="{{value}}" ',
89+
'id="{{../facet_name}}_{{value}}"> ',
90+
'{{prepareFacetValue value}} ({{count}})',
91+
'</label>',
92+
'</li>',
93+
'{{/unselected}}',
94+
'</ul>',
95+
'</div>',
96+
'</div>',
97+
'{{/facets}}',
98+
'{{#rangefacets}}',
99+
'<div class="facet-block"',
100+
'<h3>{{name}}</h3>',
101+
'<div class="facet-values">',
102+
'<ul>',
103+
'{{#selected}}',
104+
'<li unbxdParam_facetName="{{../facet_name}}" ',
105+
'unbxdParam_facetValue="{{value}}">',
106+
'<label for="{{../facet_name}}_{{value}}">',
107+
'<input type="checkbox" checked class="filter-checkbox" ',
108+
'unbxdParam_facetName="{{../facet_name}}" ',
109+
'unbxdParam_facetValue="{{value}}" ',
110+
'id="{{../facet_name}}_{{value}}"> ',
111+
'{{prepareFacetValue begin}} - {{prepareFacetValue end}}',
112+
' ({{count}})',
113+
'</label>',
114+
'</li>',
115+
'{{/selected}}',
116+
'{{#unselected}}',
117+
'<li unbxdParam_facetName="{{../facet_name}}" ',
118+
'unbxdParam_facetValue="{{value}}">',
119+
'<label for="{{../facet_name}}_{{value}}">',
120+
'<input type="checkbox" class="filter-checkbox" ',
121+
'unbxdParam_facetName="{{../facet_name}}" ',
122+
'unbxdParam_facetValue="{{value}}" ',
123+
'id="{{../facet_name}}_{{value}}"> ',
124+
'{{prepareFacetValue begin}}',
125+
' - {{prepareFacetValue end}} ({{count}})',
126+
'</label>',
127+
'</li>',
128+
'{{/unselected}}',
129+
'</ul>',
130+
'</div>',
131+
'</div>',
132+
'{{/rangefacets}}'
133+
].join(''),
134+
facetContainerSelector : '#facets_container',
135+
facetCheckBoxSelector : 'input[type="checkbox"]',
136+
facetElementSelector : 'label',
137+
facetOnSelect : function(){
138+
//jQuery(el).addClass('selected');
139+
},
140+
facetOnDeselect : function(){
141+
//jQuery(el).removeClass('selected');
142+
},
143+
facetMultiSelect : true,
144+
selectedFacetTemp : [
145+
'{{#each filters}}',
146+
'{{#each this}}',
147+
'<div class="selected-facet clearfix">',
148+
'<div class="selected-facet-name lt">',
149+
'{{{prepareFacetValue @key}}}</div>',
150+
'<div class="selected-facet-delete rt" ',
151+
'unbxdParam_facetName="{{this}}" ',
152+
'unbxdParam_facetValue="{{@key}}">&times;</div>',
153+
'</div>',
154+
'{{/each}}',
155+
'{{/each}}',
156+
'{{#each ranges}}',
157+
'{{#each this}}',
158+
'<div class="selected-facet clearfix">',
159+
'<div class="selected-facet-name lt">',
160+
'{{{prepareFacetValue @key}}}</div>',
161+
'<div class="selected-facet-delete rt" ',
162+
'unbxdParam_facetName="{{this}}" ',
163+
'unbxdParam_facetValue="{{@key}}">&times;</div>',
164+
'</div>',
165+
'{{/each}}',
166+
'{{/each}}'
167+
].join(''),
168+
selectedFacetContainerSelector : '#selected_facets',
169+
clearSelectedFacetsSelector : '#clear_all_selected_facets',
170+
removeSelectedFacetSelector : '.selected-facet-delete',
171+
selectedFacetHolderSelector : '',
172+
loaderSelector : '',//".result-loader"
173+
onFacetLoad : function(){},
174+
sanitizeQueryString : function(q){ return q;},
175+
getFacetStats : '',
176+
processFacetStats : function(){},
177+
setDefaultFilters : function(){},
178+
onIntialResultLoad : function(){},
179+
onPageLoad : function(){},
180+
onNoResult : function(){},
181+
bannerSelector: '.banner',
182+
bannerTemp: '<a href="{{landingUrl}}"><img src="{{imageUrl}}"/></a>',
183+
sortContainerSelector: '#sort_container',
184+
sortOptions: [{
185+
name: 'Relevancy'
186+
},{
187+
name: 'Price: H-L',
188+
field: 'price',
189+
order: 'desc'
190+
},{
191+
name: 'Price: L-H',
192+
field: 'price',
193+
order: 'asc'
194+
}],
195+
sortContainerType: 'select', /* value can be select or click */
196+
sortContainerTemp: [
197+
'<select>',
198+
'{{#options}}',
199+
'{{#if selected}}',
200+
'<option value="{{field}}-{{order}}" ',
201+
'unbxdsortField="{{field}}" unbxdsortValue="{{order}}"',
202+
' selected>{{name}}</option>',
203+
'{{else}}',
204+
'<option value="{{field}}-{{order}}" ',
205+
'unbxdsortField="{{field}}" ',
206+
'unbxdsortValue="{{order}}">{{name}}</option>',
207+
'{{/if}}',
208+
'{{/options}}',
209+
'</select>'
210+
].join(''),
211+
paginationContainerSelector : '#pagination_container',
212+
paginationTemp: [
213+
'{{#if hasFirst}}',
214+
'<span class="unbxd_first" unbxdaction="first"> &laquo; </span>',
215+
'{{/if}}',
216+
'{{#if hasPrev}}',
217+
'<span class="unbxd_prev" unbxdaction="prev"> &lt; </span>',
218+
'{{/if}}',
219+
'{{#pages}}',
220+
'{{#if current}}',
221+
'<span class="unbxd_page highlight"> {{page}} </span>',
222+
'{{else}}',
223+
'<span class="unbxd_page" unbxdaction="{{page}}"> {{page}} </span>',
224+
'{{/if}}',
225+
'{{/pages}}',
226+
'<span class="unbxd_pageof"> of </span>',
227+
'<span class="unbxd_totalPages" ',
228+
'unbxdaction="{{totalPages}}">{{totalPages}}</span>',
229+
'{{#if hasNext}}',
230+
'<span class="unbxd_next" unbxdaction="next"> &gt; </span>',
231+
'{{/if}}',
232+
'{{#if hasLast}}',
233+
'<span class="unbxd_last" unbxdaction="last">&raquo;</span>',
234+
'{{/if}}'
235+
].join(''),
236+
fields : ['image_url','title','brand','price','uniqueId'],
237+
searchQueryParam:'q',
238+
viewTypes: ['grid', 'list'],
239+
viewTypeContainerSelector: '.view_type_select',
240+
viewTypeContainerTemp: [
241+
'{{#options}}',
242+
'<li class="unbxd-{{#if selected}}current{{/if}}">',
243+
'<a title="{{value}} View" ','class="unbxd-{{value}}view-button"',
244+
' {{#unless selected}}unbxdviewtype="{{value}}"{{/unless}}>',
245+
'<span class="icon-{{value}}view">',
246+
'{{value}}',
247+
'</span>',
248+
'</a>',
249+
'</li>',
250+
'{{/options}}'
251+
].join(''),
252+
pageSizeContainerSelector: '.page_size_container',
253+
pageSizeOptions: [{
254+
name: '12',
255+
value: '12'
256+
},{
257+
name: '24',
258+
value: '24'
259+
},{
260+
name: '36',
261+
value: '36'
262+
}],
263+
pageSizeContainerType: 'select',
264+
pageSizeContainerTemp: [
265+
'<select>',
266+
'{{#options}}',
267+
'{{#if selected}}',
268+
'<option value="{{value}}" selected ',
269+
'unbxdpageSize="{{value}}">{{name}}</option>',
270+
'{{else}}',
271+
'<option value="{{value}}" ',
272+
'unbxdpageSize="{{value}}">{{name}}</option>',
273+
'{{/if}}',
274+
'{{/options}}',
275+
'</select>'
276+
].join('')
277+
};

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: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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="page_size_container"></div>
17+
<div class="view_type_select"></div>
18+
<div class="banner"></div>
19+
<div class="lt search-facet-column" id="facets_container">
20+
</div>
21+
<div class="rt search-result-column">
22+
<h2 class="result-spell-check" id="did_you_mean">
23+
</h2>
24+
<h3 class="result-title-count" id="search_title">
25+
</h3>
26+
<div id="sort_container"></div>
27+
<div class="result-selected-facets clearfix" id="selected_facets">
28+
</div>
29+
<div id="clear_all_selected_facets">Clear All</div>
30+
<ul class="search-result-list clearfix" id="results_container">
31+
</ul>
32+
<div class="result-loader" id="ajax_loader">
33+
<a href="#"><img src="images/loader.gif">Loading more...</a>
34+
<div id="load-more">Click here to load more results</div>
35+
</div>
36+
</div>
37+
</div>
38+
</div>

0 commit comments

Comments
 (0)