def test_convertor(self): source_odt_filename = pkg_resources.resource_filename( 'py3o.template', 'tests/templates/py3o_if_parser.odt') outfilename = get_secure_filename() template = Template(source_odt_filename, outfilename) user_vars = template.get_user_variables() expressions = template.get_all_user_python_expression() py_expression = template.convert_py3o_to_python_ast(expressions) convertor = Py3oConvertor() data_struct = convertor(py_expression) assert 'objects' in data_struct objs = data_struct['objects'] assert 'company_label' in objs assert 'name' in objs assert isinstance(objs['company_label'], Py3oName) assert isinstance(objs['name'], Py3oName) # assert data_struct == Py3oModule( # { # 'objects': Py3oArray( # { # 'company_label': Py3oName({}), # 'name': Py3oName({}) # } # ) # } # ) expected_vars = [ 'registration.name', 'registration.company_label', ] assert set(user_vars) == set(expected_vars)
def __load_and_convert_template(self, path): template_xml = pkg_resources.resource_filename( 'py3o.template', path ) t = Template(template_xml, get_secure_filename()) expressions = t.get_all_user_python_expression() py_expr = t.convert_py3o_to_python_ast(expressions) return py_expr
def test_calc(self): """Test date source extraction in ods files""" source_ods_filename = pkg_resources.resource_filename( "py3o.template", "tests/templates/py3o_simple_calc.ods" ) outfilename = get_secure_filename() template = Template(source_ods_filename, outfilename) expressions = template.get_all_user_python_expression() expected_expressions = [ 'for="item in items"', "item.col1", "item.col2", "item.col3", "item.col4", "/for", ] self.assertEqual(expressions, expected_expressions) py_expr = Template.convert_py3o_to_python_ast(expressions) p = Py3oConvertor() res = p(py_expr) user_data = { "items": [ Mock(col0="0", col1=1, col2=2.0, col3="?", col4="!"), Mock(col0=0, col1=1.0, col2="2", col3="?", col4="!"), Mock(col0=0.0, col1="1", col2=2, col3="?", col4="!"), ] } json_dict = res.render(user_data) self.assertEqual( json_dict, { "items": [ dict(col1=1, col2=2.0, col3="?", col4="!"), dict(col1=1.0, col2="2", col3="?", col4="!"), dict(col1="1", col2=2, col3="?", col4="!"), ] }, )
def test_calc(self): """Test date source extraction in ods files""" source_ods_filename = pkg_resources.resource_filename( 'py3o.template', 'tests/templates/py3o_simple_calc.ods') outfilename = get_secure_filename() template = Template(source_ods_filename, outfilename) expressions = template.get_all_user_python_expression() expected_expressions = [ 'for="item in items"', 'item.col1', 'item.col2', 'item.col3', 'item.col4', '/for', ] self.assertEqual(expressions, expected_expressions) py_expr = Template.convert_py3o_to_python_ast(expressions) p = Py3oConvertor() res = p(py_expr) user_data = { 'items': [ Mock(col0='0', col1=1, col2=2.0, col3='?', col4='!'), Mock(col0=0, col1=1.0, col2='2', col3='?', col4='!'), Mock(col0=0.0, col1='1', col2=2, col3='?', col4='!'), ] } json_dict = res.render(user_data) self.assertEqual( json_dict, { 'items': [ dict(col1=1, col2=2.0, col3='?', col4='!'), dict(col1=1.0, col2='2', col3='?', col4='!'), dict(col1='1', col2=2, col3='?', col4='!'), ] })