Major rework, uses a builder pattern now.
Showing
4 changed files
with
135 additions
and
76 deletions
... | @@ -61,7 +61,6 @@ module.exports = function(grunt) { | ... | @@ -61,7 +61,6 @@ module.exports = function(grunt) { |
61 | var _ = require('lodash'); | 61 | var _ = require('lodash'); |
62 | 62 | ||
63 | function genJasmineConfig(withCoverage, options) { | 63 | function genJasmineConfig(withCoverage, options) { |
64 | var template, templateOptions; | ||
65 | var src = [ | 64 | var src = [ |
66 | 'src/scripts/{,**/}*.js', | 65 | 'src/scripts/{,**/}*.js', |
67 | '!src/scripts/main.js', | 66 | '!src/scripts/main.js', |
... | @@ -103,7 +102,7 @@ module.exports = function(grunt) { | ... | @@ -103,7 +102,7 @@ module.exports = function(grunt) { |
103 | } | 102 | } |
104 | } | 103 | } |
105 | url = parts.join('/'); | 104 | url = parts.join('/'); |
106 | if (url.match(/^src\/scripts\/(.*?\/)?[^\/]+\.spec\.js$/)) { | 105 | if (0) if (url.match(/^src\/scripts\/(.*?\/)?[^\/]+\.spec\.js$/)) { |
107 | url = './.grunt/grunt-contrib-jasmine/' + url; | 106 | url = './.grunt/grunt-contrib-jasmine/' + url; |
108 | } else if (url.match(/^src\/scripts\/(.*?\/)?[^\/]+\.js$/)) { | 107 | } else if (url.match(/^src\/scripts\/(.*?\/)?[^\/]+\.js$/)) { |
109 | url = './.grunt/grunt-contrib-jasmine/' + url; | 108 | url = './.grunt/grunt-contrib-jasmine/' + url; |
... | @@ -149,7 +148,7 @@ module.exports = function(grunt) { | ... | @@ -149,7 +148,7 @@ module.exports = function(grunt) { |
149 | template: template, | 148 | template: template, |
150 | templateOptions: templateOptions, | 149 | templateOptions: templateOptions, |
151 | }, | 150 | }, |
152 | } | 151 | }; |
153 | return jasmineConfig; | 152 | return jasmineConfig; |
154 | } | 153 | } |
155 | 154 | ... | ... |
This diff is collapsed.
Click to expand it.
... | @@ -2,6 +2,7 @@ define(function(require) { | ... | @@ -2,6 +2,7 @@ define(function(require) { |
2 | 'use strict'; | 2 | 'use strict'; |
3 | var _ = require('underscore'); | 3 | var _ = require('underscore'); |
4 | var Util = require('./Util'); | 4 | var Util = require('./Util'); |
5 | var Facet = require('./Facet'); | ||
5 | var Facets = require('./Facets'); | 6 | var Facets = require('./Facets'); |
6 | var Solr = require('./Solr'); | 7 | var Solr = require('./Solr'); |
7 | 8 | ||
... | @@ -19,23 +20,26 @@ define(function(require) { | ... | @@ -19,23 +20,26 @@ define(function(require) { |
19 | return solrData; | 20 | return solrData; |
20 | } | 21 | } |
21 | 22 | ||
22 | function makeSolrResponseMixedCase(solrData) { | 23 | function makeSolrResponseMixedCase(solrResponse) { |
23 | var facetCounts = Util.getField(solrData, 'facet_counts'); | 24 | var facetCounts = Util.getField(solrResponse, 'facet_counts'); |
24 | return { | 25 | return { |
25 | facetCounts: facetCounts, | ||
26 | facetRanges: Util.getField(facetCounts, 'facet_ranges'), | 26 | facetRanges: Util.getField(facetCounts, 'facet_ranges'), |
27 | facetFields: Util.getField(facetCounts, 'facet_fields'), | 27 | facetFields: Util.getField(facetCounts, 'facet_fields'), |
28 | facetQueries: Util.getField(facetCounts, 'facet_queries'), | 28 | facetQueries: Util.getField(facetCounts, 'facet_queries'), |
29 | statsFields: Util.getField(solrData.stats, 'stats_fields'), | 29 | statsFields: Util.getField(solrResponse.stats, 'stats_fields'), |
30 | }; | 30 | }; |
31 | } | 31 | } |
32 | 32 | ||
33 | function createStaticSolrResponse(has, toMerge) { | 33 | function createStaticSolrResponse(has, toMerge) { |
34 | var solrResponse = createSolrResponse({stats: true}); | 34 | var solrResponse = createSolrResponse({stats: true}); |
35 | var solrData = makeSolrResponseMixedCase(solrResponse); | 35 | var solrData = makeSolrResponseMixedCase(solrResponse); |
36 | _.each(solrData, function(value, key) { | 36 | if (_.isFunction(toMerge)) { |
37 | _.extend(value, toMerge[key]); | 37 | toMerge = toMerge(solrData); |
38 | }); | 38 | } else { |
39 | _.each(solrData, function(value, key) { | ||
40 | _.extend(value, toMerge[key]); | ||
41 | }); | ||
42 | } | ||
39 | return solrResponse; | 43 | return solrResponse; |
40 | } | 44 | } |
41 | 45 | ||
... | @@ -45,26 +49,26 @@ define(function(require) { | ... | @@ -45,26 +49,26 @@ define(function(require) { |
45 | expect(item.get('checked')).toEqual(checked); | 49 | expect(item.get('checked')).toEqual(checked); |
46 | } | 50 | } |
47 | 51 | ||
48 | var facetsBuilder = function facetsBuilder() { | 52 | var definedFacets = { |
49 | return { | 53 | model: [ |
50 | model: new Facets.Facet({ | 54 | { |
51 | formName: 'model', | 55 | formName: 'model', |
52 | label: 'Model', | 56 | label: 'Model', |
53 | }, | 57 | }, { |
54 | { | ||
55 | queryField: 'model_s', | 58 | queryField: 'model_s', |
56 | facetType: 'field', | 59 | facetType: 'field', |
57 | bins: { | 60 | bins: { |
58 | misc: ['saturn', 'jeep'], | 61 | misc: ['saturn', 'jeep'], |
59 | startsWithB: ['buick'], | 62 | startsWithB: ['buick'], |
60 | }, | 63 | }, |
61 | }), | 64 | }, |
62 | year: new Facets.Facet({ | 65 | ], |
66 | year: [ | ||
67 | { | ||
63 | formName: 'year', | 68 | formName: 'year', |
64 | orderByDirection: 'desc', | 69 | orderByDirection: 'desc', |
65 | label: 'Year', | 70 | label: 'Year', |
66 | }, | 71 | }, { |
67 | { | ||
68 | queryField: 'year_dt', | 72 | queryField: 'year_dt', |
69 | comparator: 'date', | 73 | comparator: 'date', |
70 | facetType: 'year-field', | 74 | facetType: 'year-field', |
... | @@ -80,8 +84,10 @@ define(function(require) { | ... | @@ -80,8 +84,10 @@ define(function(require) { |
80 | var year = new Date(value).getUTCFullYear(); | 84 | var year = new Date(value).getUTCFullYear(); |
81 | return year + ' - ' + (year + 2); | 85 | return year + ' - ' + (year + 2); |
82 | }, | 86 | }, |
83 | }), | 87 | }, |
84 | dateOfBirth: new Facets.Facet({ | 88 | ], |
89 | dateOfBirth: [ | ||
90 | { | ||
85 | formName: 'dateOfBirth', | 91 | formName: 'dateOfBirth', |
86 | label: 'Birthday', | 92 | label: 'Birthday', |
87 | }, { | 93 | }, { |
... | @@ -91,8 +97,10 @@ define(function(require) { | ... | @@ -91,8 +97,10 @@ define(function(require) { |
91 | facetStats: true, | 97 | facetStats: true, |
92 | other: 'before', | 98 | other: 'before', |
93 | start: 'NOW/YEAR-25YEAR', | 99 | start: 'NOW/YEAR-25YEAR', |
94 | }), | 100 | }, |
95 | value: new Facets.Facet({ | 101 | ], |
102 | value: [ | ||
103 | { | ||
96 | formName: 'value', | 104 | formName: 'value', |
97 | label: 'Value', | 105 | label: 'Value', |
98 | }, { | 106 | }, { |
... | @@ -104,62 +112,113 @@ define(function(require) { | ... | @@ -104,62 +112,113 @@ define(function(require) { |
104 | var value = parseInt(item.get('key')); | 112 | var value = parseInt(item.get('key')); |
105 | return '$' + value + ' - $' + (value + 1000); | 113 | return '$' + value + ' - $' + (value + 1000); |
106 | }, | 114 | }, |
107 | }), | 115 | }, |
108 | }; | 116 | ], |
117 | bodyType: [ | ||
118 | { | ||
119 | label: 'Type' | ||
120 | }, { | ||
121 | facetType: 'field', | ||
122 | labelMap: { | ||
123 | aluminum: 'Aluminum', | ||
124 | plastic: 'Plastic', | ||
125 | carbonComposite: 'Carbon Composite', | ||
126 | steel: 'Steel', | ||
127 | }, | ||
128 | }, | ||
129 | ], | ||
130 | }; | ||
131 | var facetsBuilder = function facetsBuilder(facetName) { | ||
132 | if (facetName) { | ||
133 | return new Facet(definedFacets[facetName][0], definedFacets[facetName][1]); | ||
134 | } | ||
135 | var result = {}; | ||
136 | _.each(_.keys(definedFacets), function(facetName) { | ||
137 | result[facetName] = new Facet(definedFacets[facetName][0], definedFacets[facetName][1]); | ||
138 | }); | ||
139 | return result; | ||
109 | }; | 140 | }; |
110 | 141 | ||
142 | function createSolrDataMerger(modelData) { | ||
143 | return function(solrData) { | ||
144 | _.each(solrData, function(solrValue, solrKey) { | ||
145 | _.each(modelData, function(modelObj, modelKey) { | ||
146 | var modelValue = modelObj[solrKey]; | ||
147 | if (modelValue) { | ||
148 | if (solrKey === 'facetQueries') { | ||
149 | _.extend(solrValue, modelValue); | ||
150 | } else { | ||
151 | solrValue[modelKey] = modelValue; | ||
152 | } | ||
153 | } | ||
154 | }); | ||
155 | }); | ||
156 | }; | ||
157 | } | ||
158 | |||
159 | var defaultModelData = { | ||
160 | dateOfBirth: { | ||
161 | facetRanges: { | ||
162 | counts: [ | ||
163 | '1974-01-01T00:00:00.000Z', 1, | ||
164 | '1972-01-01T00:00:00.000Z', 1, | ||
165 | '1970-01-01T00:00:00.000Z', 1, | ||
166 | ], | ||
167 | before: 5, | ||
168 | }, | ||
169 | statsFields: {min: '2000', max: '2010'}, | ||
170 | }, | ||
171 | bodyType: { | ||
172 | facetFields: [ | ||
173 | 'aluminum', 14, | ||
174 | 'carbonComposite', 66, | ||
175 | 'steel', 2, | ||
176 | ], | ||
177 | }, | ||
178 | |||
179 | model: { | ||
180 | facetFields: [ | ||
181 | 'ford', 23, | ||
182 | 'chevy', 18, | ||
183 | 'toyota', 5, | ||
184 | 'saturn', 7, // keep here to test the bin/exclude feature | ||
185 | 'jeep', 19, // keep here to test the bin/exclude feature | ||
186 | 'buick', 0, // keep here to test the bin/exclude feature | ||
187 | 'dodge', 0, | ||
188 | ], | ||
189 | facetQueries: { | ||
190 | 'model:misc': 26, | ||
191 | 'model:startsWithB': 0, | ||
192 | }, | ||
193 | }, | ||
194 | value: { | ||
195 | facetFields: [ | ||
196 | '23456', 1, | ||
197 | '5678', 2, | ||
198 | '1234', 3, | ||
199 | ], | ||
200 | statsFields: {min: '1234', max: '23456'}, | ||
201 | }, | ||
202 | year: { | ||
203 | facetFields: [ | ||
204 | '2000-01-01T00:00:00.000Z', 1, | ||
205 | '2001-01-01T00:00:00.000Z', 4, | ||
206 | '2002-01-01T00:00:00.000Z', 0, | ||
207 | '2003-01-01T00:00:00.000Z', 3, | ||
208 | '2004-01-01T00:00:00.000Z', 0, | ||
209 | '2005-01-01T00:00:00.000Z', 0, | ||
210 | '2006-01-01T00:00:00.000Z', 0, | ||
211 | '2007-01-01T00:00:00.000Z', 0, | ||
212 | '2008-01-01T00:00:00.000Z', 7, | ||
213 | '2009-01-01T00:00:00.000Z', 0, | ||
214 | '2010-01-01T00:00:00.000Z', 1, | ||
215 | ], | ||
216 | statsFields: {min: '2000-01-01T00:00:00.000Z', max: '2010-01-01T00:00:00.000Z'}, | ||
217 | }, | ||
218 | }; | ||
111 | var responses = { | 219 | var responses = { |
112 | sequential: [ | 220 | sequential: [ |
113 | createStaticSolrResponse({stats: true}, { | 221 | createStaticSolrResponse({stats: true}, createSolrDataMerger(defaultModelData)), |
114 | facetRanges: { | ||
115 | dateOfBirth: { | ||
116 | counts: [ | ||
117 | '1974-01-01T00:00:00.000Z', 1, | ||
118 | '1972-01-01T00:00:00.000Z', 1, | ||
119 | '1970-01-01T00:00:00.000Z', 1, | ||
120 | ], | ||
121 | before: 5, | ||
122 | }, | ||
123 | }, | ||
124 | facetFields: { | ||
125 | model: [ | ||
126 | 'ford', 23, | ||
127 | 'chevy', 18, | ||
128 | 'toyota', 5, | ||
129 | 'saturn', 7, // keep here to test the bin/exclude feature | ||
130 | 'jeep', 19, // keep here to test the bin/exclude feature | ||
131 | 'buick', 0, // keep here to test the bin/exclude feature | ||
132 | 'dodge', 0, | ||
133 | ], | ||
134 | value: [ | ||
135 | '23456', 1, | ||
136 | '5678', 2, | ||
137 | '1234', 3, | ||
138 | ], | ||
139 | year: [ | ||
140 | '2000-01-01T00:00:00.000Z', 1, | ||
141 | '2001-01-01T00:00:00.000Z', 4, | ||
142 | '2002-01-01T00:00:00.000Z', 0, | ||
143 | '2003-01-01T00:00:00.000Z', 3, | ||
144 | '2004-01-01T00:00:00.000Z', 0, | ||
145 | '2005-01-01T00:00:00.000Z', 0, | ||
146 | '2006-01-01T00:00:00.000Z', 0, | ||
147 | '2007-01-01T00:00:00.000Z', 0, | ||
148 | '2008-01-01T00:00:00.000Z', 7, | ||
149 | '2009-01-01T00:00:00.000Z', 0, | ||
150 | '2010-01-01T00:00:00.000Z', 1, | ||
151 | ], | ||
152 | }, | ||
153 | facetQueries: { | ||
154 | 'model:misc': 26, | ||
155 | 'model:startsWithB': 0, | ||
156 | }, | ||
157 | statsFields: { | ||
158 | year: {min: '2000', max: '2010'}, | ||
159 | dateOfBirth: {min: '2000', max: '2010'}, | ||
160 | value: {min: '1234', max: '23456'}, | ||
161 | }, | ||
162 | }), | ||
163 | ], | 222 | ], |
164 | suggestions: [ | 223 | suggestions: [ |
165 | createStaticSolrResponse({stats: true}, { | 224 | createStaticSolrResponse({stats: true}, { | ... | ... |
... | @@ -29,7 +29,8 @@ define(function(require) { | ... | @@ -29,7 +29,8 @@ define(function(require) { |
29 | return obj[key]; | 29 | return obj[key]; |
30 | }, | 30 | }, |
31 | setField: function getField(obj, key, value) { | 31 | setField: function getField(obj, key, value) { |
32 | return obj[key] = value; | 32 | obj[key] = value; |
33 | return value; | ||
33 | }, | 34 | }, |
34 | getItemKeyAccessor: function getItemKeyAccessor(item) { | 35 | getItemKeyAccessor: function getItemKeyAccessor(item) { |
35 | return item.get('key'); | 36 | return item.get('key'); | ... | ... |
-
Please register or sign in to post a comment