def testPerformBinning(self): cubeSetName = "test-" + str(uuid.uuid4()) csvFilePath = cubeSetName + ".csv" try: shutil.copyfile("cubify/tests/testdata.csv", cubeSetName + ".csv") except Exception: shutil.copyfile("./testdata.csv", cubeSetName + ".csv") binningFileName = "cubify/tests/test_binnings.json" if os.path.isfile(binningFileName) == False: binningFileName = "./test_binnings.json" with open(binningFileName) as binnings_file: binnings = json.load(binnings_file) cs = CubeSetService("testdb") cubeSet = cs.createCubeSet("testOwner", cubeSetName, csvFilePath, binnings, None) # Change the binning for binning in binnings: if binning["binningName"] == "QtyBinning": bins = [] bins.append({"label": "0-3", "min": 0, "max": 3}) bins.append({"label": "3+", "min": 4, "max": 99999999}) binning["bins"] = bins cs.performBinning(cubeSet, binnings) binnedCubeRows = cs.getBinnedCubeRows(cubeSet) dimkeys = [] for binnedCubeRow in binnedCubeRows: dimkeys.append(binnedCubeRow["dimensionKey"]) dimkeys.sort() self.assertTrue( dimkeys[0] == "#CustomerId:C1#PriceBin:0-5#ProductId:P1#QtyBin:0-3#Region:West#State:CA#Year:Year2014#Date:2014-10-11" ) self.assertTrue( dimkeys[1] == "#CustomerId:C1#PriceBin:0-5#ProductId:P1#QtyBin:0-3#Region:West#State:CA#Year:Year2015#Date:2015-10-11" ) self.assertTrue( dimkeys[2] == "#CustomerId:C1#PriceBin:10+#ProductId:P1#QtyBin:0-3#Region:West#State:CA#Year:Year2014#Date:2014-10-10" ) self.assertTrue( dimkeys[3] == "#CustomerId:C1#PriceBin:10+#ProductId:P1#QtyBin:0-3#Region:West#State:CA#Year:Year2015#Date:2015-10-10" ) self.assertTrue( dimkeys[4] == "#CustomerId:C1#PriceBin:10+#ProductId:P2#QtyBin:0-3#Region:West#State:CA#Year:Year2014#Date:2014-10-11" ) self.assertTrue( dimkeys[5] == "#CustomerId:C1#PriceBin:10+#ProductId:P2#QtyBin:0-3#Region:West#State:CA#Year:Year2015#Date:2015-10-11" ) self.assertTrue( dimkeys[6] == "#CustomerId:C2#PriceBin:0-5#ProductId:P1#QtyBin:0-3#Region:NorthEast#State:NY#Year:Year2014#Date:2014-10-11" ) self.assertTrue( dimkeys[7] == "#CustomerId:C2#PriceBin:0-5#ProductId:P1#QtyBin:0-3#Region:NorthEast#State:NY#Year:Year2015#Date:2015-10-11" ) self.assertTrue( dimkeys[8] == "#CustomerId:C2#PriceBin:10+#ProductId:P1#QtyBin:0-3#Region:NorthEast#State:NY#Year:Year2014#Date:2014-10-10" ) self.assertTrue( dimkeys[9] == "#CustomerId:C2#PriceBin:10+#ProductId:P1#QtyBin:0-3#Region:NorthEast#State:NY#Year:Year2015#Date:2015-10-10" ) self.assertTrue( dimkeys[10] == "#CustomerId:C2#PriceBin:5-10#ProductId:P2#QtyBin:3+#Region:NorthEast#State:NY#Year:Year2014#Date:2014-10-10" ) self.assertTrue( dimkeys[11] == "#CustomerId:C2#PriceBin:5-10#ProductId:P2#QtyBin:3+#Region:NorthEast#State:NY#Year:Year2015#Date:2015-10-10" ) self.assertTrue( dimkeys[12] == "#CustomerId:C3#PriceBin:10+#ProductId:P1#QtyBin:3+#Region:NorthEast#State:MA#Year:Year2014#Date:2014-10-11" ) self.assertTrue( dimkeys[13] == "#CustomerId:C3#PriceBin:10+#ProductId:P1#QtyBin:3+#Region:NorthEast#State:MA#Year:Year2015#Date:2015-10-11" ) os.remove(cubeSetName + ".csv")