Exemplo n.º 1
0
    def testExportBinnedCubeCsv(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)
        aggFileName = "cubify/tests/test_agg.json"
        if os.path.isfile(aggFileName) == False:
            aggFileName = "./test_agg.json"
        with open(aggFileName) as agg_file:
            aggs = json.load(agg_file)

        cs = CubeSetService("testdb")
        cubeSet = cs.createCubeSet("testOwner", cubeSetName, csvFilePath, binnings, aggs)

        cs.exportBinnedCubeToCsv(cubeSet, "cubeSetBinnedExported.csv")

        with open("cubeSetBinnedExported.csv") as csvfile:
            reader = csv.DictReader(csvfile)
            fieldNames = reader.fieldnames
            self.assertTrue(
                fieldNames
                == [
                    "S:CustomerId",
                    "S:PriceBin",
                    "S:ProductId",
                    "S:QtyBin",
                    "S:Region",
                    "S:State",
                    "S:Year",
                    "D:Date",
                    "N:Price",
                    "N:Qty",
                ]
            )
            rowNum = 0
            for row in reader:
                rowNum += 1
            self.assertTrue(rowNum == 14)

        os.remove(cubeSetName + ".csv")
        os.remove("cubeSetBinnedExported.csv")