def generate_models( xsd: str, package: str, class_name: str, output_format: str, structure_style: str ): runner = CliRunner() result = runner.invoke( cli, [ xsd, "-ss", structure_style, "-p", package, "-o", output_format, "--compound-fields", ], ) if result.exception: return result.exception try: return load_class(result.output, class_name) except ModuleNotFoundError: return None
def test_wsdl_codegen(self): schema = fixtures_dir.joinpath("hello/hello.wsdl") package = "tests.fixtures.hello" runner = CliRunner() result = runner.invoke(cli, [str(schema), "--package", package]) if result.exception: raise result.exception clazz = load_class(result.output, "HelloGetHelloAsStringOutput") self.assertEqual("Envelope", clazz.Meta.name)
def test_wsdl_codegen(self): schema = fixtures_dir.joinpath("calculator/services.wsdl") package = "tests.fixtures.calculator" runner = CliRunner() result = runner.invoke(cli, [str(schema), "--package", package]) if result.exception: raise result.exception clazz = load_class(result.output, "CalculatorSoapMultiplyOutput") self.assertEqual("Envelope", clazz.Meta.name)
def test_definitive_xml_schema_chapter_10(): schema = Path("tests/fixtures/defxmlschema/chapter10.xsd") package = "tests.fixtures.defxmlschema" runner = CliRunner() result = runner.invoke(cli, [str(schema), "--package", package]) if result.exception: raise result.exception clazz = load_class(result.output, "Sizes") validate_bindings(schema, clazz)
def test_primer_schema(): schema = fixtures_dir.joinpath("primer/order.xsd") package = "tests.fixtures.primer" runner = CliRunner() result = runner.invoke( cli, [str(schema), "--package", package, "--docstring-style", "NumPy"]) if result.exception: raise result.exception clazz = load_class(result.output, "PurchaseOrder") assert "purchaseOrder" == clazz.Meta.name validate_bindings(schema, clazz)
def test_json_documents(): filepath = fixtures_dir.joinpath("series") package = "tests.fixtures.series" runner = CliRunner() result = runner.invoke(cli, [str(filepath), "--package", package]) if result.exception: raise result.exception clazz = load_class(result.output, "Series") parser = JsonParser() serializer = JsonSerializer(indent=4) for i in range(1, 3): ori = filepath.joinpath(f"show{i}.json").read_text() obj = parser.from_string(ori, clazz) actual = serializer.render(obj) assert filter_none(json.loads(ori)) == filter_none(json.loads(actual))
def test_books_schema(): schema = fixtures_dir.joinpath("books/schema.xsd") package = "tests.fixtures.books" runner = CliRunner() result = runner.invoke( cli, [ str(schema), "--package", package, "--ns-struct", "--docstring-style", "Google", ], ) if result.exception: raise result.exception clazz = load_class(result.output, "Books") assert "books" == clazz.Meta.name assert "urn:books" == clazz.Meta.namespace
def test_xml_documents(): filepath = fixtures_dir.joinpath("artists") package = "tests.fixtures.artists" runner = CliRunner() result = runner.invoke(cli, [str(filepath), "--package", package]) if result.exception: raise result.exception clazz = load_class(result.output, "Metadata") parser = XmlParser() serializer = XmlSerializer(writer=XmlEventWriter) serializer.config.pretty_print = True serializer.config.xml_declaration = False ns_map = {None: "http://musicbrainz.org/ns/mmd-2.0#"} for i in range(1, 4): ap = filepath.joinpath(f"art00{i}.xml") obj = parser.from_path(ap, clazz) actual = serializer.render(obj, ns_map) assert ap.read_bytes().splitlines() == actual.encode().splitlines()
def test_definitive_xml_schema_chapter_16(output_format): schema = here.joinpath("schemas/chapter16.xsd") cli_output = generate(str(schema), output_format) clazz = load_class(cli_output, "Items") validate_bindings(schema, clazz, output_format)
def test_definitive_xml_schema_chapter_17(output_format): schema = here.joinpath("schemas/chapter17.xsd") cli_output = generate(str(schema), output_format, compound_fields=True) clazz = load_class(cli_output, "Order") validate_bindings(schema, clazz, output_format)
def test_load_class_raises_exception(self): output = "Generating package: generated.foo.bar" with self.assertRaises(ModuleNotFoundError): load_class(output, "foo")
def test_load(self): output = "Generating package: tests.fixtures.books.books" self.assertEqual(BooksForm, load_class(output, "BooksForm"))