@fusioncharts/datatable
Version:
In memory tabular data storage
1 lines • 36.9 kB
JavaScript
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _datastore=_interopRequireDefault(require("../datastore"));var _datetimeEnums=require("../../../fc-utils/src/datetime-enums");var _salesTransaction=_interopRequireDefault(require("../../sample/data/salesTransaction"));var _salesTransaction2=_interopRequireDefault(require("../../sample/data/salesTransaction.schema"));var _pivot=_interopRequireDefault(require("./pivot"));describe("test pivot",(function(){var salesTransactionDS=new _datastore.default(_salesTransaction.default,_salesTransaction2.default,{enableIndex:false,indexBy:"Time"}),salesTransactionDT=salesTransactionDS.getDataTable(),pivotOps,result;it("pivot takes 3 arguments",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result).toBeDefined()}));it("column in argument doesn't belong in dataview",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Value X",operation:"sum"}]);expect((function(){return pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config)})).toThrow()}));it("column is missing",(function(){pivotOps=(0,_pivot.default)([{timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Value",operation:"sum"}]);expect((function(){return pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config)})).toThrow()}));describe("outputAs is used in group config",(function(){it("single sorted column grouping",(function(){var DS,DT,schemaArr=[{name:"Name",type:"string"},{name:"Age"},{name:"Class",type:"number"}],dataArr=[["John",13,7],["Luna",17,11],["Sam",5,2],["John",19,11],["Sam",14,7]];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true,indexBy:"Name"});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name",outputAs:"Student Name"}],"Class",[{column:"Age",operation:"count"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.schema[0].name).toBe("Student Name")}));it("single unsorted column grouping",(function(){var DS,DT,schemaArr=[{name:"Name",type:"string"},{name:"Age"},{name:"Class",type:"number"}],dataArr=[["John",13,7],["Luna",17,11],["Sam",5,2],["John",19,11],["Sam",14,7]];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true,indexBy:"Age"});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name",outputAs:"Student Name"}],"Class",[{column:"Age",operation:"count"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.schema[0].name).toBe("Student Name")}));it("multiple sorted column grouping",(function(){var DS,DT,schemaArr=[{name:"Name",type:"string"},{name:"Age"},{name:"Class",type:"number"}],dataArr=[["John",13,7],["Luna",17,11],["Sam",5,2],["John",19,11],["Sam",14,7]];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true,indexBy:"Name"});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name",outputAs:"Student Name"},{column:"Age",outputAs:"Student Age"}],"Class",[{column:"Name",operation:"count"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.schema[0].name).toBe("Student Name");expect(result.schema[1].name).toBe("Student Age")}));it("multiple unsorted column grouping",(function(){var DS,DT,schemaArr=[{name:"Name",type:"string"},{name:"Age"},{name:"Class",type:"number"}],dataArr=[["John",13,7],["Luna",17,11],["Sam",5,2],["John",19,11],["Sam",14,7]];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true,indexBy:"Class"});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name",outputAs:"Student Name"},{column:"Age",outputAs:"Student Age"}],"Class",[{column:"Name",operation:"count"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.schema[0].name).toBe("Student Name");expect(result.schema[1].name).toBe("Student Age")}))}));describe("outputAs is used in aggregation config",(function(){it("single sorted column grouping, single column aggregation",(function(){var DS,DT,schemaArr=[{name:"Name",type:"string"},{name:"Age"},{name:"Class",type:"number"}],dataArr=[["John",13,7],["Luna",17,11],["Sam",5,2],["John",19,11],["Sam",14,7]];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true,indexBy:"Name"});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"}],"Class",[{column:"Age",operation:"count",outputAs:"Student Count"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.schema[1].name).toBe("2 - Student Count")}));it("single unsorted column grouping, single column aggregation",(function(){var DS,DT,schemaArr=[{name:"Name",type:"string"},{name:"Age"},{name:"Class",type:"number"}],dataArr=[["John",13,7],["Luna",17,11],["Sam",5,2],["John",19,11],["Sam",14,7]];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true,indexBy:"Age"});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"}],"Class",[{column:"Age",operation:"count",outputAs:"Student Count"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.schema[1].name).toBe("2 - Student Count")}));it("multiple column grouping, single column aggregation",(function(){var DS,DT,schemaArr=[{name:"Name",type:"string"},{name:"Age"},{name:"Class",type:"number"}],dataArr=[["John",13,7],["Luna",17,11],["Sam",5,2],["John",19,11],["Sam",14,7]];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true,indexBy:"Name"});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"},{column:"Age"}],"Class",[{column:"Age",operation:"count",outputAs:"Student Count"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.schema[2].name).toBe("2 - Student Count")}));it("single column grouping, multiple column aggregation",(function(){var DS,DT,schemaArr=[{name:"Name",type:"string"},{name:"Age",type:"number"},{name:"Class",type:"number"}],dataArr=[["John",13,7],["Luna",17,11],["Sam",5,2],["John",19,11],["Sam",14,7]];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true,indexBy:"Name"});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"}],"Class",[{column:"Name",operation:"count",outputAs:"Student Count"},{column:"Age",operation:"avg",outputAs:"Student Average Age"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.schema[1].name).toBe("2 - Student Count");expect(result.schema[4].name).toBe("2 - Student Average Age")}));it("multiple column grouping, multiple column aggregation",(function(){var DS,DT,schemaArr=[{name:"Name",type:"string"},{name:"Age",type:"number"},{name:"Class",type:"number"}],dataArr=[["John",13,7],["Luna",17,11],["Sam",5,2],["John",19,11],["Sam",14,7]];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true,indexBy:"Name"});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"},{column:"Age"}],"Class",[{column:"Name",operation:"count",outputAs:"Student Count"},{column:"Age",operation:"avg",outputAs:"Student Average Age"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.schema[2].name).toBe("2 - Student Count");expect(result.schema[5].name).toBe("2 - Student Average Age")}));it("missing outputAs uses [original column name - operation]",(function(){var DS,DT,schemaArr=[{name:"Name",type:"string"},{name:"Age",type:"number"},{name:"Class",type:"number"}],dataArr=[["John",13,7],["Luna",17,11],["Sam",5,2],["John",19,11],["Sam",14,7]];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true,indexBy:"Name"});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"}],"Class",[{column:"Age",operation:"avg"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.schema[1].name).toBe("2 - Age - avg")}))}));it("outputAs is used in result schema",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.schema[1].name).toBe("Adjustment - Value - sum");pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Value",operation:"sum",outputAs:"Custom"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.schema[1].name).toBe("Adjustment - Custom")}));it("timeUnit used in date column",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.schema[0].type).toBe("interval");expect(result.data[0][0].config.duration.name).toEqual(_datetimeEnums.DatetimeUnits.Year.Unit)}));it("timeUnit = second should work",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Second}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(+new Date(2016,9,30,9,58,11));expect(result.data[0][0].end).toBe(+new Date(2016,9,30,9,58,12))}));it("timeUnit = minute should work",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Minute}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(+new Date(2016,9,30,9,58));expect(result.data[0][0].end).toBe(+new Date(2016,9,30,9,59))}));it("timeUnit = hour should work",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(+new Date(2016,9,30,9));expect(result.data[0][0].end).toBe(+new Date(2016,9,30,10))}));it("timeUnit = day should work",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Day}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(+new Date(2016,9,30));expect(result.data[0][0].end).toBe(+new Date(2016,9,31))}));it("timeUnit = week should work",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Week}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(+new Date(2016,9,30));expect(result.data[0][0].end).toBe(+new Date(2016,10,6))}));it("timeUnit = month should work",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Month}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(+new Date(2016,9,1));expect(result.data[0][0].end).toBe(+new Date(2016,10,1))}));it("timeUnit = quarter should work",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Quarter}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(+new Date(2016,9,1));expect(result.data[0][0].end).toBe(+new Date(2017,0,1))}));it("timeUnit = year should work",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Year}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(+new Date(2016,0,1));expect(result.data[0][0].end).toBe(+new Date(2017,0,1))}));it("incorrect timeUnit used in date column",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.abc}],"Item",[{column:"Value",operation:"sum"}]);expect((function(){return pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config)})).toThrow()}));it("outputFormat is used",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour,outputFormat:"%-e %B %Y, %-I %p"}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].toString()).toBe("30 October 2016, 9 AM")}));it("default format if outputFormat is missing",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].toString()).toBe("Oct 30, 2016 09 hrs")}));it("binSize makes interval a range",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour,binSize:3}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(14777982e5);expect(result.data[0][0].end).toBe(1477809e6)}));it("incorrect outputFormat",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour,outputFormat:"%g"}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].toString()).toBe("g")}));it("string binSize uses 1",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour,binSize:"three"}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(14777982e5);expect(result.data[0][0].end).toBe(14778018e5)}));it("negative binSize uses positive",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour,binSize:-3}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(14777982e5);expect(result.data[0][0].end).toBe(1477809e6)}));it("null binSize uses 1",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour,binSize:null}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(14777982e5);expect(result.data[0][0].end).toBe(14778018e5)}));it("startValue is used when provided",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour,startValue:1477872e6}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(14778702e5);expect(result.data[0][0].end).toBe(14778738e5)}));it("startValue greater than max returns empty data",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour,startValue:15409458e5}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data).toEqual([])}));it("startValue should always be a number",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour,startValue:"yesterday"}],"Item",[{column:"Value",operation:"sum"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(14777982e5);expect(result.data[0][0].end).toBe(14778018e5)}));it("default weekStartFrom is sunday",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Week}],"Item",[{column:"Item",operation:"count",outputAs:"Total Items"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(+new Date(2016,9,30,0,0,0));expect(result.data[0][0].end).toBe(+new Date(2016,10,6,0,0,0))}));it("weekStartFrom is monday",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Week,weekStartFrom:_datetimeEnums.Weekdays.Monday}],"Item",[{column:"Item",operation:"count",outputAs:"Total Items"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(+new Date(2016,9,24,0,0,0));expect(result.data[0][0].end).toBe(+new Date(2016,9,31,0,0,0))}));it("weekStartFrom is tuesday",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Week,weekStartFrom:_datetimeEnums.Weekdays.Tuesday}],"Item",[{column:"Item",operation:"count",outputAs:"Total Items"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(+new Date(2016,9,25,0,0,0));expect(result.data[0][0].end).toBe(+new Date(2016,10,1,0,0,0))}));it("weekStartFrom is wednesday",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Week,weekStartFrom:_datetimeEnums.Weekdays.Wednesday}],"Item",[{column:"Item",operation:"count",outputAs:"Total Items"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(+new Date(2016,9,26,0,0,0));expect(result.data[0][0].end).toBe(+new Date(2016,10,2,0,0,0))}));it("weekStartFrom is thursday",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Week,weekStartFrom:_datetimeEnums.Weekdays.Thursday}],"Item",[{column:"Item",operation:"count",outputAs:"Total Items"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(+new Date(2016,9,27,0,0,0));expect(result.data[0][0].end).toBe(+new Date(2016,10,3,0,0,0))}));it("weekStartFrom is friday",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Week,weekStartFrom:_datetimeEnums.Weekdays.Friday}],"Item",[{column:"Item",operation:"count",outputAs:"Total Items"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(+new Date(2016,9,28,0,0,0));expect(result.data[0][0].end).toBe(+new Date(2016,10,4,0,0,0))}));it("weekStartFrom is saturday",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Week,weekStartFrom:_datetimeEnums.Weekdays.Saturday}],"Item",[{column:"Item",operation:"count",outputAs:"Total Items"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(+new Date(2016,9,29,0,0,0));expect(result.data[0][0].end).toBe(+new Date(2016,10,5,0,0,0))}));it("weekStartFrom is sunday",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Week,weekStartFrom:_datetimeEnums.Weekdays.Sunday}],"Item",[{column:"Item",operation:"count",outputAs:"Total Items"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][0].start).toBe(+new Date(2016,9,30,0,0,0));expect(result.data[0][0].end).toBe(+new Date(2016,10,6,0,0,0))}));it("incorrect weekStartFrom should throw error",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Week,weekStartFrom:"monday"}],"Item",[{column:"Item",operation:"count",outputAs:"Total Items"}]);expect((function(){return pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config)})).toThrow()}));it("undefined aggregation operation should throw error",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Day}],"Item",[{column:"Value",operation:"wrong",outputAs:"Total value"}]);expect((function(){return pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config)})).toThrow()}));it("sum aggregation should work",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Value",operation:"sum",outputAs:"Total value"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][1]).toBe(undefined);expect(result.data[0][12]).toBe(21.8);expect(result.data[1][12]).toBeCloseTo(145.98)}));it("avg aggregation should work",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Value",operation:"avg",outputAs:"Average value"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][1]).toBe(undefined);expect(result.data[0][12]).toBe(21.8);expect(result.data[1][12]).toBeCloseTo(12.165)}));it("count aggregation should work",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Value",operation:"count",outputAs:"Total items"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][1]).toBe(undefined);expect(result.data[0][12]).toBe(1);expect(result.data[1][12]).toBe(12)}));it("min aggregation should work",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Value",operation:"min",outputAs:"Minimum value"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][1]).toBe(undefined);expect(result.data[0][12]).toBe(21.8);expect(result.data[1][12]).toBe(2.48)}));it("max aggregation should work",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Value",operation:"max",outputAs:"Maximum value"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][1]).toBe(undefined);expect(result.data[0][12]).toBe(21.8);expect(result.data[1][12]).toBe(22.78)}));it("first aggregation should work",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Value",operation:"first",outputAs:"First value"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][1]).toBe(undefined);expect(result.data[0][12]).toBe(21.8);expect(result.data[1][12]).toBe(15.66)}));it("last aggregation should work",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Value",operation:"last",outputAs:"Last value"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][1]).toBe(undefined);expect(result.data[0][12]).toBe(21.8);expect(result.data[1][12]).toBe(10.99)}));it("stddev aggregation should work",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Value",operation:"stddev",outputAs:"Standard Deviation"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][1]).toBe(undefined);expect(result.data[0][12].stddev).toBe(0);expect(result.data[1][12].stddev).toBeCloseTo(6.98)}));it("variance aggregation should work",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Value",operation:"variance",outputAs:"Variance"}]);result=pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config);expect(result.data[0][1]).toBe(undefined);expect(result.data[0][12].variance).toBe(0);expect(result.data[1][12].variance).toBeCloseTo(48.736)}));it("numberic aggregation on non-numeric column should throw error",(function(){pivotOps=(0,_pivot.default)([{column:"Time",timeUnit:_datetimeEnums.DatetimeUnits.Hour}],"Item",[{column:"Item",operation:"sum"}]);expect((function(){return pivotOps.fn(salesTransactionDT._data,salesTransactionDT._schema,salesTransactionDT._config)})).toThrow()}))}));describe("test pivot edge cases",(function(){var DS,DT,pivotOps,result;it("empty data array returns empty result without error",(function(){var dataArr=[],schemaArr=[{name:"Name",type:"string"},{name:"Age",type:"number"},{name:"Standard",type:"number"}];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"}],"Standard",[{column:"Age",operation:"avg"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.data.constructor).toBe(Array);expect(result.data.length).toBe(0);expect(result.schema.length).toBe(1);expect(result.schema[0].name).toBe("Name")}));it("first row empty returns result without error",(function(){var dataArr=[[],["Harry",14,8],["John",12,7],["Sam",7,2],["Harry",16,10],["Sam",12,8],["John",13,7],["Harry",14,7],["John",15,10],["John",12,6],["Sam",9,4]],schemaArr=[{name:"Name",type:"string"},{name:"Age",type:"number"},{name:"Standard",type:"number"}];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"}],"Standard",[{column:"Age",operation:"avg"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.data.constructor).toBe(Array);expect(result.data.length).toBe(3);expect(result.data[0]).toEqual(["Sam",7,9,undefined,undefined,12,undefined,undefined]);expect(result.schema.length).toBe(8)}));it("first row null returns result without error",(function(){var dataArr=[[null,null],["Harry",14,8],["John",12,7],["Sam",7,2],["Harry",16,10],["Sam",12,8],["John",13,7],["Harry",14,7],["John",15,10],["John",12,6],["Sam",9,4]],schemaArr=[{name:"Name",type:"string"},{name:"Age",type:"number"},{name:"Standard",type:"number"}];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"}],"Standard",[{column:"Age",operation:"avg"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.data.constructor).toBe(Array);expect(result.data.length).toBe(4);expect(result.data[0]).toEqual(["Sam",7,9,undefined,undefined,12,undefined,undefined]);expect(result.schema.length).toBe(8)}));it("multiple empty rows returns result without error",(function(){var dataArr=[[],["Harry",14,8],["John",12,7],["Sam",7,2],["Harry",16,10],["Sam",12,8],[],[],["John",13,7],["Harry",14,7],["John",15,10],["John",12,6],["Sam",9,4]],schemaArr=[{name:"Name",type:"string"},{name:"Age",type:"number"},{name:"Standard",type:"number"}];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"}],"Standard",[{column:"Age",operation:"avg"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.data.constructor).toBe(Array);expect(result.data.length).toBe(3);expect(result.data[0]).toEqual(["Sam",7,9,undefined,undefined,12,undefined,undefined]);expect(result.schema.length).toBe(8)}));it("first row with aggregation column value as empty returns result without error",(function(){var dataArr=[["Sam"],["Harry",14,8],["John",12,7],["Sam",7,2],["Harry",16,10],["Sam",12,8],["John",13,7],["Harry",14,7],["John",15,10],["John",12,6],["Sam",9,4]],schemaArr=[{name:"Name",type:"string"},{name:"Age",type:"number"},{name:"Standard",type:"number"}];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"}],"Standard",[{column:"Age",operation:"avg"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.data.constructor).toBe(Array);expect(result.data.length).toBe(3);expect(result.data[0]).toEqual(["Sam",7,9,undefined,undefined,12,undefined,undefined]);expect(result.schema.length).toBe(8)}));it("first row with aggregation column value as null returns result without error",(function(){var dataArr=[["Sam",null],["Harry",14,8],["John",12,7],["Sam",7,2],["Harry",16,10],["Sam",12,8],["John",13,7],["Harry",14,7],["John",15,10],["John",12,6],["Sam",9,4]],schemaArr=[{name:"Name",type:"string"},{name:"Age",type:"number"},{name:"Standard",type:"number"}];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"}],"Standard",[{column:"Age",operation:"avg"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.data.constructor).toBe(Array);expect(result.data.length).toBe(3);expect(result.data[0]).toEqual(["Sam",7,9,undefined,undefined,12,undefined,undefined]);expect(result.schema.length).toBe(8)}));it("all aggregation column values as null returns result without error",(function(){var dataArr=[["Sam",null,2],["Harry",null,8],["John",null,7],["Sam",null,2],["Harry",null,10],["Sam",null,8],["John",null,7],["Harry",null,7],["John",null,10],["John",null,6],["Sam",null,4]],schemaArr=[{name:"Name",type:"string"},{name:"Age",type:"number"},{name:"Standard",type:"number"}];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"}],"Standard",[{column:"Age",operation:"avg"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.data.constructor).toBe(Array);expect(result.data.length).toBe(3);expect(result.data[0][1]).toBe(undefined);expect(result.data[1][1]).toBe(undefined);expect(result.data[2][1]).toBe(undefined);expect(result.schema.length).toBe(7)}));it("all group column values as null returns result without error",(function(){var dataArr=[[null,14,8],[null,12,7],[null,7,2],[null,16,10],[null,12,8],[null,13,7],[null,14,7],[null,15,10],[null,12,6],[null,9,4]],schemaArr=[{name:"Name",type:"string"},{name:"Age",type:"number"},{name:"Standard",type:"number"}];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"}],"Standard",[{column:"Age",operation:"avg"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.data.constructor).toBe(Array);expect(result.data.length).toBe(1);expect(result.data[0]).toEqual([null,7,9,12,13,13,15.5])}));it("all group column values as empty strings returns result without error",(function(){var dataArr=[["",14,8],["",12,7],["",7,2],["",16,10],["",12,8],["",13,7],["",14,7],["",15,10],["",12,6],["",9,4]],schemaArr=[{name:"Name",type:"string"},{name:"Age",type:"number"},{name:"Standard",type:"number"}];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"}],"Standard",[{column:"Age",operation:"avg"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.data.constructor).toBe(Array);expect(result.data.length).toBe(1);expect(result.data[0]).toEqual(["",7,9,12,13,13,15.5])}));it("group column values as empty strings returns result without error",(function(){var dataArr=[["",5,1],["Harry",14,8],["John",12,7],["Sam",7,2],["Harry",16,10],["Sam",12,8],["John",13,7],["Harry",14,7],["John",15,10],["John",12,6],["Sam",9,4],["",15,7],["",12,6]],schemaArr=[{name:"Name",type:"string"},{name:"Age",type:"number"},{name:"Standard",type:"number"}];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"}],"Standard",[{column:"Age",operation:"avg"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.data.constructor).toBe(Array);expect(result.data.length).toBe(4);expect(result.data[0]).toEqual(["",5,undefined,undefined,12,15,undefined,undefined])}));it("all pivot column values as null returns result without error",(function(){var dataArr=[["Sam",11,null],["Harry",14,null],["John",12,null],["Sam",7,null],["Harry",16,null],["Sam",12,null],["John",13,null],["Harry",14,null],["John",15,null],["John",12,null],["Sam",9,null]],schemaArr=[{name:"Name",type:"string"},{name:"Age",type:"number"},{name:"Standard",type:"number"}];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"}],"Standard",[{column:"Age",operation:"avg"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.data.constructor).toBe(Array);expect(result.data.length).toBe(3);expect(result.data[0][1]).toBe(9.75);expect(result.data[1][1]).toBe(13);expect(result.data[2][1]).toBeCloseTo(14.67);expect(result.schema.length).toBe(2)}));it("all pivot column values as undefined/missing values returns result without error",(function(){var dataArr=[["Sam",11],["Harry",14],["John",12],["Sam",7],["Harry",16],["Sam",12],["John",13],["Harry",14],["John",15],["John",12],["Sam",9]],schemaArr=[{name:"Name",type:"string"},{name:"Age",type:"number"},{name:"Standard",type:"number"}];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"}],"Standard",[{column:"Age",operation:"avg"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.data.constructor).toBe(Array);expect(result.data.length).toBe(3);expect(result.data[0].length).toBe(1);expect(result.data[1].length).toBe(1);expect(result.data[2].length).toBe(1);expect(result.schema.length).toBe(1)}));it("pivot column values with combination of undefined/missing and null values returns result without error",(function(){var dataArr=[["Sam",11],["Harry",14],["John",12],["Sam",7,null],["Harry",16],["Sam",12],["John",13],["Harry",14],["John",15],["John",12],["Sam",9]],schemaArr=[{name:"Name",type:"string"},{name:"Age",type:"number"},{name:"Standard",type:"number"}];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Name"}],"Standard",[{column:"Age",operation:"avg"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.data.constructor).toBe(Array);expect(result.data.length).toBe(3);expect(result.data[0]).toEqual(["Sam",7,10.666666666666666]);expect(result.data[1][1]).toBe(undefined);expect(result.data[2][1]).toBe(undefined);expect(result.schema.length).toBe(3)}));it("0 can be min",(function(){var dataArr=[["A",10,1],["B",10,2],["B",0,1],["A",10,1],["C",-10,1],["B",3,2],["A",10,2],["C",-4,1],["A",14,1],["C",0,2],["B",2,1],["A",3,2],["C",10,2]],schemaArr=[{name:"Item",type:"string"},{name:"Value",type:"number"},{name:"Class",type:"number"}];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true,indexBy:"Item"});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Item"}],"Class",[{column:"Value",operation:"min"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.data.constructor).toBe(Array);expect(result.data.length).toBe(3);expect(result.data[1][0]).toBe("B");expect(result.data[1][1]).toBe(0);DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true,indexBy:"Value"});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Item"}],"Class",[{column:"Value",operation:"min"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.data.constructor).toBe(Array);expect(result.data.length).toBe(3);expect(result.data[1][0]).toBe("B");expect(result.data[1][1]).toBe(0)}));it("0 can be max",(function(){var dataArr=[["A",10,1],["B",10,2],["B",0,1],["A",10,1],["C",-10,1],["B",3,2],["A",10,2],["C",0,1],["A",14,1],["C",0,2],["B",2,1],["A",3,2],["C",10,2]],schemaArr=[{name:"Item",type:"string"},{name:"Value",type:"number"},{name:"Class",type:"number"}];DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true,indexBy:"Item"});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Item"}],"Class",[{column:"Value",operation:"max"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.data.constructor).toBe(Array);expect(result.data.length).toBe(3);expect(result.data[2][0]).toBe("C");expect(result.data[2][1]).toBe(0);DS=new _datastore.default(dataArr,schemaArr,{enableIndex:true,indexBy:"Value"});DT=DS.getDataTable();pivotOps=(0,_pivot.default)([{column:"Item"}],"Class",[{column:"Value",operation:"max"}]);result=pivotOps.fn(DT._data,DT._schema,DT._config);expect(result.data.constructor).toBe(Array);expect(result.data.length).toBe(3);expect(result.data[0][0]).toBe("C");expect(result.data[0][1]).toBe(0)}))}));
;