Exemplo n.º 1
0
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]
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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"]
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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)