コード例 #1
0
    def test_build_with_multiple_superclasses(self):
        NamedJSONEncoder = MappingJSONEncoderClassBuilder(_Named, [
            JsonPropertyMapping("name", "name")
        ]).build()
        OfficeJSONEncoder = MappingJSONEncoderClassBuilder(_Office, [], (NamedJSONEncoder, )).build()
        IdentifiableJSONEncoder = MappingJSONEncoderClassBuilder(_Identifiable, [
            JsonPropertyMapping("id", "id")
        ]).build()
        EmployeeJSONEncoder = MappingJSONEncoderClassBuilder(_Employee, [
            JsonPropertyMapping("title", "title"),
            JsonPropertyMapping("office", "office", encoder_cls=OfficeJSONEncoder),
        ], (NamedJSONEncoder, IdentifiableJSONEncoder)).build()

        office = _Office()
        office.name = "Cambridge"

        employee = _Employee()
        employee.name = "Bob"
        employee.id = 42
        employee.title = "Software Dev"
        employee.office = office

        employee_as_json = {
            "name": employee.name,
            "id": employee.id,
            "title": employee.title,
            "office": {
                "name": office.name
            }
        }
        self.assertEqual(EmployeeJSONEncoder().default(employee), employee_as_json)
コード例 #2
0
    def test_build(self):
        encoder_builder = MappingJSONEncoderClassBuilder()
        encoder_builder.target_cls = SimpleModel
        encoder_builder.mappings = get_simple_model_json_property_mappings()

        encoder_cls = encoder_builder.build()
        encoder = encoder_cls()     # type: MappingJSONEncoder

        encoded = encoder.default(self.simple_model)
        self.assertDictEqual(encoded, self.simple_model_as_json)
コード例 #3
0
 def test_build_with_superclass_as_string(self):
     ContainerJSONEncoder = MappingJSONEncoderClassBuilder(_Container, [
         JsonPropertyMapping("colour", "colour", object_constructor_parameter_name="colour"),
         JsonPropertyMapping("contains", "contains", encoder_cls=lambda: ContainerJSONEncoder, optional=True)
     ]).build()
     encoder = ContainerJSONEncoder()
     container = _Container("red", _Container("blue"))
     self.assertEqual({"colour": "red", "contains": {"colour": "blue"}}, encoder.default(container))
コード例 #4
0
    def test_build_with_none_property(self):
        NamedJSONEncoder = MappingJSONEncoderClassBuilder(_Named, [
            JsonPropertyMapping("name", "name")
        ]).build()
        OfficeJSONEncoder = MappingJSONEncoderClassBuilder(_Office, [], (NamedJSONEncoder,)).build()
        EmployeeJSONEncoder = MappingJSONEncoderClassBuilder(_Employee, [
            JsonPropertyMapping("office", "office", encoder_cls=OfficeJSONEncoder),
        ], (NamedJSONEncoder, )).build()

        employee = _Employee()
        employee.name = "Bob"
        employee.office = None

        employee_as_json = {
            "name": employee.name,
            "office": None
        }
        self.assertEqual(employee_as_json, EmployeeJSONEncoder().default(employee))
コード例 #5
0
    def test_build_with_superclass(self):
        SimpleModelJSONEncoder = MappingJSONEncoderClassBuilder(
            SimpleModel, get_simple_model_json_property_mappings()).build()

        encoder_builder = MappingJSONEncoderClassBuilder()
        encoder_builder.target_cls = ComplexModel
        encoder_builder.mappings = get_complex_model_json_property_mappings()
        encoder_builder.superclasses = (SimpleModelJSONEncoder, )

        encoder_cls = encoder_builder.build()
        encoder = encoder_cls()     # type: MappingJSONEncoder

        encoded = encoder.default(self.complex_model)
        self.assertDictEqual(encoded, self.complex_model_as_json)
コード例 #6
0
 def setUp(self):
     self.values = set([create_simple_model_with_json_representation(i)[0] for i in range(10)])
     self.values_as_json = [create_simple_model_with_json_representation(i)[1] for i in range(10)]
     self.ValueJSONEncoder = MappingJSONEncoderClassBuilder(
         SimpleModel, get_simple_model_json_property_mappings()).build()