def test_getDataFull(): presModel = utils.getPresModelVizData(data) dataFull = utils.getDataFull(presModel, {}) # check the extended list is not modified assert ( len( data["secondaryInfo"]["presModelMap"]["dataDictionary"]["presModelHolder"][ "genDataDictionaryPresModel" ]["dataSegments"]["0"]["dataColumns"][0]["dataValues"] ) == 6 ) assert ( len( data["secondaryInfo"]["presModelMap"]["dataDictionary"]["presModelHolder"][ "genDataDictionaryPresModel" ]["dataSegments"]["1"]["dataColumns"][0]["dataValues"] ) == 3 ) assert len(dataFull.keys()) == 2 assert "cstring" in dataFull assert "real" in dataFull assert len(dataFull["cstring"]) == 9 assert len(dataFull["real"]) == 5 assert dataFull["cstring"] == ["1", "2", "3", "4", "5", "6", "7", "8", "9"] assert dataFull["real"] == [1, 2, 3, 4, 5]
def test_listWorksheet(): presModel = utils.getPresModelVizData(data) worksheets = utils.listWorksheet(presModel) assert len(worksheets) == 2 assert worksheets[0] == "[WORKSHEET1]" assert worksheets[1] == "[WORKSHEET2]" pytest.raises(KeyError, utils.listWorksheet, {}) pytest.raises(KeyError, utils.listWorksheet, emptyData) pytest.raises(KeyError, utils.listWorksheet, WithoutViz) pytest.raises(KeyError, utils.listWorksheet, WithoutPres1) pytest.raises(KeyError, utils.listWorksheet, WithoutMapPresModel) pytest.raises(KeyError, utils.listWorksheet, WithoutMapPres2)
def test_getData(): presModel = utils.getPresModelVizData(data) dataFull = utils.getDataFull(presModel, {}) indicesInfo = utils.getIndicesInfo(presModel, "[WORKSHEET1]") frameData = utils.getData(dataFull, indicesInfo) assert len(frameData.keys()) == 2 assert "[FIELD1]-value" in frameData assert "[FIELD2]-alias" in frameData assert len(frameData["[FIELD1]-value"]) == 4 assert len(frameData["[FIELD2]-alias"]) == 4 assert frameData["[FIELD1]-value"] == ["2", "3", "4", "5"] assert frameData["[FIELD2]-alias"] == ["6", "7", "8", "9"]
def get(TS, data, info, logger): worksheets = utils.selectWorksheet(data, logger, single=True) if len(worksheets) == 0: return TableauDashboard(scraper=TS, originalData=data, originalInfo=info, data=[]) selectedWorksheet = worksheets[0] presModel = utils.getPresModelVizData(data) result = utils.getIndicesInfo(presModel, selectedWorksheet, noSelectFilter=False) for idx, t in enumerate(result): logger.info(f"[{idx}] {t['fieldCaption']}") selected = input(f"select field by index : ") if (selected is None) or (selected == ""): raise (Exception("you must select at least one field")) field = result[int(selected)] logger.info(f"you have selected {field['fieldCaption']}") dataFull = utils.getDataFull(presModel) frameData = utils.getData(dataFull, [field]) frameDataKeys = list(frameData.keys()) if len(frameDataKeys) == 0: raise (Exception("no data extracted")) data = frameData[frameDataKeys[0]] for idx, t in enumerate(data): logger.info(f"[{idx}] {t}") selected = input(f"select value by index : ") if (selected is None) or (selected == ""): raise (Exception("you must select at least one value")) value = data[int(selected)] logger.info(f"you have selected {value}") r = api.select(TS, selectedWorksheet, [int(selected) + 1]) return dashboard.getCmdResponse(TS, r, logger)
def getWorksheets(TS, data, info) -> TableauDashboard: presModelMapVizData = utils.getPresModelVizData(data) presModelMapVizInfo = utils.getPresModelVizInfo(info) if presModelMapVizData is not None: worksheets = utils.listWorksheet(presModelMapVizData) elif presModelMapVizInfo is not None: worksheets = utils.listWorksheetInfo(presModelMapVizInfo) else: worksheets = [] output = [] for worksheet in worksheets: df = getWorksheet(TS, data, info, worksheet) output.append(df) return TableauDashboard(scraper=TS, originalData=data, originalInfo=info, data=output)
def test_getIndicesInfo(): presModel = utils.getPresModelVizData(data) indicesInfo = utils.getIndicesInfo(presModel, "[WORKSHEET1]") assert len(indicesInfo) == 2 assert "fieldCaption" in indicesInfo[0] assert "valueIndices" in indicesInfo[0] assert "aliasIndices" in indicesInfo[0] assert "dataType" in indicesInfo[0] assert "paneIndices" in indicesInfo[0] assert "columnIndices" in indicesInfo[0] assert len(indicesInfo[0]["valueIndices"]) == 4 assert len(indicesInfo[0]["aliasIndices"]) == 0 assert len(indicesInfo[1]["valueIndices"]) == 0 assert len(indicesInfo[1]["aliasIndices"]) == 4 assert indicesInfo[0]["fieldCaption"] == "[FIELD1]" assert indicesInfo[1]["fieldCaption"] == "[FIELD2]" # check noSelectFilter parameter indicesInfo = utils.getIndicesInfo( presModel, "[WORKSHEET1]", noSelectFilter=False) assert len(indicesInfo) == 1
def getWorksheet(TS, data, info, worksheet) -> TableauWorksheet: presModelMap = utils.getPresModelVizData(data) if presModelMap is None: presModelMap = utils.getPresModelVizInfo(info) indicesInfo = utils.getIndicesInfoStoryPoint(presModelMap, worksheet) if "dataDictionary" not in presModelMap: presModelMap = utils.getPresModelVizDataWithoutViz(data) dataFull = utils.getDataFull(presModelMap, TS.dataSegments) else: indicesInfo = utils.getIndicesInfo(presModelMap, worksheet) dataFull = utils.getDataFull(presModelMap, TS.dataSegments) frameData = utils.getData(dataFull, indicesInfo) df = pd.DataFrame.from_dict(frameData, orient="index").fillna(0).T return TableauWorksheet(scraper=TS, originalData=data, originalInfo=info, worksheetName=worksheet, dataFull=dataFull, dataFrame=df)