#!/usr/bin/python # -*- coding: utf-8 -*- # --------------------------------------------------------------------------------------------------------- # Author : Ulrich Carmesin # Source : gitea.ucarmesin.de # --------------------------------------------------------------------------------------------------------- import unittest import inspect import os import json import basic.program import tools.path_tool import tools.path_const as P import tools.config_tool import tools.data_const as D import basic.toolHandling import test.constants import basic.component import basic.constants as B #import tools.map_tool import tools.file_tool import test.testtools #import tools.tdata_tool HOME_PATH = test.constants.HOME_PATH conf = {} # here you can select single testfunction for developping the tests # "test_toolhandling", "test_parseSql" -> test of components TEST_FUNCTIONS = ["test_02getIds", "test_03extractIds", "test_04getFieldVal", "test_05getValue", "test_11mapTdata"] TEST_FUNCTIONS = ["test_11mapTdata"] verbose = False class MyTestCase(unittest.TestCase): mymsg = "--------------------------------------------------------------" def test_03extractIds(self): global mymsg actfunction = str(inspect.currentframe().f_code.co_name) cnttest = 0 if actfunction not in TEST_FUNCTIONS: return job = test.testtools.getJob() res = tools.map_tool.extractIds(job, "1") self.assertEqual(res, ["1"]) res = tools.map_tool.extractIds(job, "1, 2") self.assertEqual(res, "1,2".split(",")) res = tools.map_tool.extractIds(job, "1-3") self.assertEqual(res, "1,2,3".split(",")) res = tools.map_tool.extractIds(job, "1, 3-6, 8") self.assertEqual(res, "1,3,4,5,6,8".split(",")) cnttest += 4 MyTestCase.mymsg += "\n----- "+actfunction+" : "+str(cnttest) def test_02getIds(self): global mymsg actfunction = str(inspect.currentframe().f_code.co_name) cnttest = 0 if actfunction not in TEST_FUNCTIONS: return job = test.testtools.getJob() path = tools.config_tool.getConfigPath(job, P.KEY_TESTCASE, "TC0001", "") tdata = tools.tdata_tool.getCsvSpec(job.m, job, path, D.CSV_SPECTYPE_DATA) args = {} args[B.DATA_NODE_DATA] = tdata args[B.DATA_NODE_STEPS] = tdata[B.DATA_NODE_STEPS][0] args[tools.map_tool.ACT_ID] = {} args[tools.map_tool.ID_LIST] = {} ids = {} res = tools.map_tool.getIds(job, args, "msgid={_steps._nr}") print(res) self.assertEqual(res[0], "1") self.assertIn("msgid", args[tools.map_tool.ID_LIST]) cnttest += 1 res = tools.map_tool.getIds(job, args, "sender={_data.person._sender(_steps._nr)}") print(res) self.assertEqual(res[0], "firma") args[B.DATA_NODE_STEPS] = tdata[B.DATA_NODE_STEPS][1] res = tools.map_tool.getIds(job, args, "msgid={_steps._nr}") self.assertEqual(res[1], "2") self.assertIn("msgid", args[tools.map_tool.ID_LIST]) cnttest += 1 args[tools.map_tool.ACT_ID]["msgid"] = "1" res = tools.map_tool.getIds(job, args, "posid={_data.product._nr,_pos(msgid)}") self.assertEqual(res[0], ("1", "4")) self.assertEqual(res[1], ("1", "5")) cnttest += 1 compName = "testcrmdb" args[B.DATA_NODE_COMP] = test.testtools.getComp(job, compName) comp = args[B.DATA_NODE_COMP] conf = tools.config_tool.getConfig(job, D.DDL_FILENAME, compName, "person") comp.conf[B.DATA_NODE_DDL] = {} comp.conf[B.DATA_NODE_DDL]["person"] = conf res = tools.map_tool.getIds(job, args, "fields={_comp.ddl.person}") print(res) args[tools.map_tool.ACT_ID]["posid"] = ("1", "4") res = tools.map_tool.getConditions(job, args, "{posid}") print(res) self.assertEqual(res[0], ("1", "4")) #self.assertEqual(res[1], "4") cnttest += 1 MyTestCase.mymsg += "\n----- "+actfunction+" : "+str(cnttest) def test_04getFieldVal(self): global mymsg actfunction = str(inspect.currentframe().f_code.co_name) cnttest = 0 if actfunction not in TEST_FUNCTIONS: return job = test.testtools.getJob() path = tools.config_tool.getConfigPath(job, P.KEY_TESTCASE, "TC0001", "") tdata = tools.tdata_tool.getCsvSpec(job.m, job, path, D.CSV_SPECTYPE_DATA) condIds = [["1"]] args = {} args[B.DATA_NODE_DATA] = tdata res = tools.map_tool.getFieldVal(job, args, "person", "_sender", condIds) print(res) condIds = [["1"], ["4"]] res = tools.map_tool.getFieldVal(job, args, "product", "descript", condIds) print(res) def test_05getValue(self): global mymsg actfunction = str(inspect.currentframe().f_code.co_name) cnttest = 0 if actfunction not in TEST_FUNCTIONS: return job = test.testtools.getJob() path = tools.config_tool.getConfigPath(job, P.KEY_TESTCASE, "TC0001", "") tdata = tools.tdata_tool.getCsvSpec(job.m, job, path, D.CSV_SPECTYPE_DATA) condIds = [["1"]] args = {} args[B.DATA_NODE_DATA] = tdata args[B.DATA_NODE_STEPS] = tdata[B.DATA_NODE_STEPS][0] args[tools.map_tool.ACT_ID] = {} args[tools.map_tool.ID_LIST] = {} #res = tools.map_tool.getValue(job, args, "msgid={_steps._nr}") #-print(res) #self.assertEqual(res, ['1']) args[tools.map_tool.ACT_ID]["msgid"] = ['1'] #res = tools.map_tool.getValue(job, args, "sender={_data.person._sender(msgid)}") #self.assertEqual(res, ["firma"]) #print(res) print(args[tools.map_tool.ID_LIST]) args[tools.map_tool.ACT_ID]["sender"] = "firma" res = tools.map_tool.getValue(job, args, "{_catalog.sender.depart(sender)}") self.assertEqual(res, "main") res = tools.map_tool.getValue(job, args, "{_steps.args.action}") print(res) res = tools.map_tool.getValue(job, args, "{_par.tctime}") print(res) args[tools.map_tool.ACT_ID]["msgid"] = "1" res = tools.map_tool.getValue(job, args, "{_data.person.famname(msgid)}") print(res) self.assertEqual(res, "Brecht") args[tools.map_tool.ACT_ID]["msgid"] = "1" # select row if field is missing res = tools.map_tool.getValue(job, args, "{_data.person(msgid)}") print(res) res = tools.map_tool.getValue(job, args, "hier ist ein Text") print(res) # it is one row [{f_1: v_2, ...}] def test_11mapTdata(self): global mymsg actfunction = str(inspect.currentframe().f_code.co_name) cnttest = 0 if actfunction not in TEST_FUNCTIONS: return job = test.testtools.getJob() comp = test.testtools.getComp(job, "testrest") path = os.path.join(job.conf[B.TOPIC_PATH][B.ATTR_PATH_COMPS], "testrest", "mapping-rest.yml") mapping = tools.file_tool.readFileDict(job, path, job.m) path = tools.config_tool.getConfigPath(job, P.KEY_TESTCASE, "TC0001", "") tdata = tools.tdata_tool.getCsvSpec(job.m, job, path, D.CSV_SPECTYPE_DATA) res = tools.map_tool.mapTdata(job, mapping, tdata, tdata[B.DATA_NODE_STEPS][1], comp) print(res) for format in ["xml", "yml", "json"]: path = os.path.join(job.conf[B.TOPIC_PATH][B.ATTR_PATH_TDATA], "temp", "result-rest." + format) print(path) tools.file_tool.writeFileDict(job.m, job, path, res) doc = json.dumps(res, indent=0) print(doc) MyTestCase.mymsg += "\n----- "+actfunction+" : "+str(cnttest) def test_zzz(self): print(MyTestCase.mymsg) if __name__ == '__main__': verbose = True unittest.main()