@@ -219,5 +219,285 @@ describe('ResultSet Granularity', () => {
219219 } ,
220220 ] ) ;
221221 } ) ;
222+
223+ test ( 'hour granularity (end minutes > start minutes)' , ( ) => {
224+ const result = new ResultSet ( {
225+ queryType : 'regularQuery' ,
226+ results : [
227+ {
228+ query : {
229+ measures : [ 'LineItems.count' ] ,
230+ timeDimensions : [
231+ {
232+ dimension : 'LineItems.createdAt' ,
233+ granularity : 'hour' ,
234+ dateRange : [ '2019-01-08T01:45:25.342' , '2019-01-08T07:45:58.399' ] ,
235+ } ,
236+ ] ,
237+ filters : [ ] ,
238+ timezone : 'UTC' ,
239+ order : [ ] ,
240+ dimensions : [ ] ,
241+ } ,
242+ data : [
243+ {
244+ 'LineItems.createdAt.hour' : '2019-01-08T01:00:00.000' ,
245+ 'LineItems.createdAt' : '2019-01-08T01:00:00.000' ,
246+ 'LineItems.count' : '2' ,
247+ } ,
248+ {
249+ 'LineItems.createdAt.hour' : '2019-01-08T02:00:00.000' ,
250+ 'LineItems.createdAt' : '2019-01-08T02:00:00.000' ,
251+ 'LineItems.count' : '3' ,
252+ } ,
253+ {
254+ 'LineItems.createdAt.hour' : '2019-01-08T03:00:00.000' ,
255+ 'LineItems.createdAt' : '2019-01-08T03:00:00.000' ,
256+ 'LineItems.count' : '4' ,
257+ } ,
258+ {
259+ 'LineItems.createdAt.hour' : '2019-01-08T04:00:00.000' ,
260+ 'LineItems.createdAt' : '2019-01-08T04:00:00.000' ,
261+ 'LineItems.count' : '5' ,
262+ } ,
263+ {
264+ 'LineItems.createdAt.hour' : '2019-01-08T05:00:00.000' ,
265+ 'LineItems.createdAt' : '2019-01-08T05:00:00.000' ,
266+ 'LineItems.count' : '6' ,
267+ } ,
268+ {
269+ 'LineItems.createdAt.hour' : '2019-01-08T06:00:00.000' ,
270+ 'LineItems.createdAt' : '2019-01-08T06:00:00.000' ,
271+ 'LineItems.count' : '7' ,
272+ } ,
273+ ] ,
274+ lastRefreshTime : '2021-07-07T14:31:30.458Z' ,
275+ annotation : {
276+ measures : {
277+ 'LineItems.count' : {
278+ title : 'Line Items Count' ,
279+ shortTitle : 'Count' ,
280+ type : 'number' ,
281+ drillMembers : [ 'LineItems.id' , 'LineItems.createdAt' ] ,
282+ drillMembersGrouped : {
283+ measures : [ ] ,
284+ dimensions : [ 'LineItems.id' , 'LineItems.createdAt' ] ,
285+ } ,
286+ } ,
287+ } ,
288+ dimensions : { } ,
289+ segments : { } ,
290+ timeDimensions : {
291+ 'LineItems.createdAt.week' : {
292+ title : 'Line Items Created at' ,
293+ shortTitle : 'Created at' ,
294+ type : 'time' ,
295+ } ,
296+ 'LineItems.createdAt' : {
297+ title : 'Line Items Created at' ,
298+ shortTitle : 'Created at' ,
299+ type : 'time' ,
300+ } ,
301+ } ,
302+ } ,
303+ slowQuery : false ,
304+ } ,
305+ ] ,
306+ pivotQuery : {
307+ measures : [ 'LineItems.count' ] ,
308+ timeDimensions : [
309+ {
310+ dimension : 'LineItems.createdAt' ,
311+ granularity : 'hour' ,
312+ dateRange : [ '2019-01-08T01:45:25.342' , '2019-01-08T07:45:58.399' ] ,
313+ } ,
314+ ] ,
315+ filters : [ ] ,
316+ timezone : 'UTC' ,
317+ order : [ ] ,
318+ dimensions : [ ] ,
319+ queryType : 'regularQuery' ,
320+ } ,
321+ slowQuery : false ,
322+ } as any ) ;
323+
324+ expect ( result . chartPivot ( ) ) . toStrictEqual ( [
325+ {
326+ x : '2019-01-08T01:00:00.000' ,
327+ xValues : [ '2019-01-08T01:00:00.000' ] ,
328+ 'LineItems.count' : 2 ,
329+ } ,
330+ {
331+ x : '2019-01-08T02:00:00.000' ,
332+ xValues : [ '2019-01-08T02:00:00.000' ] ,
333+ 'LineItems.count' : 3 ,
334+ } ,
335+ {
336+ x : '2019-01-08T03:00:00.000' ,
337+ xValues : [ '2019-01-08T03:00:00.000' ] ,
338+ 'LineItems.count' : 4 ,
339+ } ,
340+ {
341+ x : '2019-01-08T04:00:00.000' ,
342+ xValues : [ '2019-01-08T04:00:00.000' ] ,
343+ 'LineItems.count' : 5 ,
344+ } ,
345+ {
346+ x : '2019-01-08T05:00:00.000' ,
347+ xValues : [ '2019-01-08T05:00:00.000' ] ,
348+ 'LineItems.count' : 6 ,
349+ } ,
350+ {
351+ x : '2019-01-08T06:00:00.000' ,
352+ xValues : [ '2019-01-08T06:00:00.000' ] ,
353+ 'LineItems.count' : 7 ,
354+ } ,
355+ {
356+ x : '2019-01-08T07:00:00.000' ,
357+ xValues : [ '2019-01-08T07:00:00.000' ] ,
358+ 'LineItems.count' : 0 ,
359+ } ,
360+ ] ) ;
361+ } ) ;
362+
363+ test ( 'hour granularity (end minutes < start minutes)' , ( ) => {
364+ const result = new ResultSet ( {
365+ queryType : 'regularQuery' ,
366+ results : [
367+ {
368+ query : {
369+ measures : [ 'LineItems.count' ] ,
370+ timeDimensions : [
371+ {
372+ dimension : 'LineItems.createdAt' ,
373+ granularity : 'hour' ,
374+ dateRange : [ '2019-01-08T01:45:25.342' , '2019-01-08T07:35:58.399' ] ,
375+ } ,
376+ ] ,
377+ filters : [ ] ,
378+ timezone : 'UTC' ,
379+ order : [ ] ,
380+ dimensions : [ ] ,
381+ } ,
382+ data : [
383+ {
384+ 'LineItems.createdAt.hour' : '2019-01-08T01:00:00.000' ,
385+ 'LineItems.createdAt' : '2019-01-08T01:00:00.000' ,
386+ 'LineItems.count' : '2' ,
387+ } ,
388+ {
389+ 'LineItems.createdAt.hour' : '2019-01-08T02:00:00.000' ,
390+ 'LineItems.createdAt' : '2019-01-08T02:00:00.000' ,
391+ 'LineItems.count' : '3' ,
392+ } ,
393+ {
394+ 'LineItems.createdAt.hour' : '2019-01-08T03:00:00.000' ,
395+ 'LineItems.createdAt' : '2019-01-08T03:00:00.000' ,
396+ 'LineItems.count' : '4' ,
397+ } ,
398+ {
399+ 'LineItems.createdAt.hour' : '2019-01-08T04:00:00.000' ,
400+ 'LineItems.createdAt' : '2019-01-08T04:00:00.000' ,
401+ 'LineItems.count' : '5' ,
402+ } ,
403+ {
404+ 'LineItems.createdAt.hour' : '2019-01-08T05:00:00.000' ,
405+ 'LineItems.createdAt' : '2019-01-08T05:00:00.000' ,
406+ 'LineItems.count' : '6' ,
407+ } ,
408+ {
409+ 'LineItems.createdAt.hour' : '2019-01-08T06:00:00.000' ,
410+ 'LineItems.createdAt' : '2019-01-08T06:00:00.000' ,
411+ 'LineItems.count' : '7' ,
412+ } ,
413+ ] ,
414+ lastRefreshTime : '2021-07-07T14:31:30.458Z' ,
415+ annotation : {
416+ measures : {
417+ 'LineItems.count' : {
418+ title : 'Line Items Count' ,
419+ shortTitle : 'Count' ,
420+ type : 'number' ,
421+ drillMembers : [ 'LineItems.id' , 'LineItems.createdAt' ] ,
422+ drillMembersGrouped : {
423+ measures : [ ] ,
424+ dimensions : [ 'LineItems.id' , 'LineItems.createdAt' ] ,
425+ } ,
426+ } ,
427+ } ,
428+ dimensions : { } ,
429+ segments : { } ,
430+ timeDimensions : {
431+ 'LineItems.createdAt.week' : {
432+ title : 'Line Items Created at' ,
433+ shortTitle : 'Created at' ,
434+ type : 'time' ,
435+ } ,
436+ 'LineItems.createdAt' : {
437+ title : 'Line Items Created at' ,
438+ shortTitle : 'Created at' ,
439+ type : 'time' ,
440+ } ,
441+ } ,
442+ } ,
443+ slowQuery : false ,
444+ } ,
445+ ] ,
446+ pivotQuery : {
447+ measures : [ 'LineItems.count' ] ,
448+ timeDimensions : [
449+ {
450+ dimension : 'LineItems.createdAt' ,
451+ granularity : 'hour' ,
452+ dateRange : [ '2019-01-08T01:45:25.342' , '2019-01-08T07:35:58.399' ] ,
453+ } ,
454+ ] ,
455+ filters : [ ] ,
456+ timezone : 'UTC' ,
457+ order : [ ] ,
458+ dimensions : [ ] ,
459+ queryType : 'regularQuery' ,
460+ } ,
461+ slowQuery : false ,
462+ } as any ) ;
463+
464+ expect ( result . chartPivot ( ) ) . toStrictEqual ( [
465+ {
466+ x : '2019-01-08T01:00:00.000' ,
467+ xValues : [ '2019-01-08T01:00:00.000' ] ,
468+ 'LineItems.count' : 2 ,
469+ } ,
470+ {
471+ x : '2019-01-08T02:00:00.000' ,
472+ xValues : [ '2019-01-08T02:00:00.000' ] ,
473+ 'LineItems.count' : 3 ,
474+ } ,
475+ {
476+ x : '2019-01-08T03:00:00.000' ,
477+ xValues : [ '2019-01-08T03:00:00.000' ] ,
478+ 'LineItems.count' : 4 ,
479+ } ,
480+ {
481+ x : '2019-01-08T04:00:00.000' ,
482+ xValues : [ '2019-01-08T04:00:00.000' ] ,
483+ 'LineItems.count' : 5 ,
484+ } ,
485+ {
486+ x : '2019-01-08T05:00:00.000' ,
487+ xValues : [ '2019-01-08T05:00:00.000' ] ,
488+ 'LineItems.count' : 6 ,
489+ } ,
490+ {
491+ x : '2019-01-08T06:00:00.000' ,
492+ xValues : [ '2019-01-08T06:00:00.000' ] ,
493+ 'LineItems.count' : 7 ,
494+ } ,
495+ {
496+ x : '2019-01-08T07:00:00.000' ,
497+ xValues : [ '2019-01-08T07:00:00.000' ] ,
498+ 'LineItems.count' : 0 ,
499+ } ,
500+ ] ) ;
501+ } ) ;
222502 } ) ;
223503} ) ;
0 commit comments