Beispiel #1
0
    def test_simple(self):
        related_name = "relate26"
        data = {
            "desc": "some",
            related_name: {
                "dummy1": 1,
                "dummy2": "value1"
            }
        }

        prefix = "provider"
        root_name = "model_test26"
        model_builder = DynamicModelBuilder(model_name_prefix=prefix)
        model_builder.create_models_from_data(data, root_name)
        Object = get_dynamic_model(root_name)
        Objrelate = get_dynamic_model(related_name)
        prefixed_related_name = add_prefix_to_model_label(related_name, prefix)
        self.assertEqual(Object.__name__, add_prefix_to_model_label(root_name, prefix))
        self.assertEqual(Objrelate.__name__, prefixed_related_name)

        instance_builder = DynamicDataInstances(model_name_prefix=prefix)
        inst = instance_builder.create_instances_from_data(data, root_name)

        rel_inst = getattr(inst, prefixed_related_name)
        self.assertTrue(hasattr(inst, prefixed_related_name))
        self.assertTrue(hasattr(rel_inst, "dummy1"))
        self.assertEqual(rel_inst.dummy1, 1)
        self.assertEqual(rel_inst.dummy2, "value1")
 def test_build_model_with_user_pk(self, mock):
     data = {
         "prop2": 1,
     }
     root_name = "user_test_1"
     model_builder = DynamicModelBuilder()
     model_builder.create_models_from_data(data, root_name)
     ModelObject = get_dynamic_model(root_name)
     inst = ModelObject.objects.create(prop2=3, user_pk=self.user.pk)
Beispiel #3
0
    def test_create_dynamic_data_simple(self):
        data = {"desc": "some", "relate1": {"dummy1": 1, "dummy2": "value1"}}
        root_name = "instance_test0"
        model_builder = DynamicModelBuilder()
        model_builder.create_models_from_data(data, root_name)
        instance_builder = DynamicDataInstances()
        inst = instance_builder.create_instances_from_data(data, root_name)

        assert hasattr(inst, "relate1")
        assert hasattr(inst.relate1, "dummy1")
        assert inst.relate1.dummy1 == 1
        assert inst.relate1.dummy2 == "value1"
Beispiel #4
0
    def test_create_data_from_random_json(self):
        data = {"obj2": {"title": "title1", "obj3": {"title": "title2"}}}
        root_name = "instance_test2"
        model_builder = DynamicModelBuilder()
        model_builder.create_models_from_data(data, root_name)

        instance_builder = DynamicDataInstances()
        instances = instance_builder.create_instances_from_data(
            data, root_name)
        obj2 = get_dynamic_model("obj2").objects.first()
        obj3 = get_dynamic_model("obj3").objects.first()
        assert obj3.title == "title2"
        assert obj2.title == "title1"
    def test_instances_are_being_assigned_nested(self, mock):
        data = {"obj55": {"title8": "title32", "obj66": {"title7": "title44"}}}
        root_name = "user_test4"
        model_builder = DynamicModelBuilder()
        model_builder.create_models_from_data(data, root_name)

        instance_builder = DynamicDataInstances(self.user.pk)
        instances = instance_builder.create_instances_from_data(
            data, root_name)
        obj2 = get_dynamic_model("obj55").objects.first()
        obj3 = get_dynamic_model("obj66").objects.first()
        self.assertEqual(obj3.user_pk, self.user.pk)
        self.assertEqual(obj2.user_pk, self.user.pk)
def _try_build_model_from_data_file(data_file: DataFile):
    data = data_file.read_data()
    root_label = get_root_label(data_file)
    modelbuilder = DynamicModelBuilder()
    try:
        modelbuilder.create_models_from_data(data, root_label)
    except Exception as e:
        logger.warning(e)
        raise e
    else:
        logger.info(
            f"Model building finished with {len(modelbuilder.built_objects)} objects created and "
            f" {len(modelbuilder.failed_objects)} failed")
        build_meta_objects(modelbuilder.built_objects, data_file)
 def test_instances_are_being_assigned(self, mock):
     data = {
         "obj22": {
             "title": "title324",
         }
     }
     root_name = "user_test3"
     model_builder = DynamicModelBuilder()
     model_builder.create_models_from_data(data, root_name)
     self.assertTrue(len(model_builder.failed_objects) is 0)
     instance_builder = DynamicDataInstances(self.user.pk)
     instances = instance_builder.create_instances_from_data(
         data, root_name)
     obj2 = get_dynamic_model("obj22").objects.first()
     self.assertEqual(obj2.user_pk, self.user.pk)
 def test_relate_object_to_user_being_called(self, admin_mock):
     data = {
         "obj221": {
             "title": "title324",
         }
     }
     root_name = "user_test2"
     model_builder = DynamicModelBuilder()
     model_builder.create_models_from_data(data, root_name)
     self.assertTrue(len(model_builder.failed_objects) is 0)
     instance_builder = DynamicDataInstances(self.user.pk)
     with patch.object(DynamicDataInstances,
                       "relate_object_to_user") as relate_mock:
         instance_builder.create_instances_from_data(data, root_name)
     self.assertTrue(relate_mock.called)
Beispiel #9
0
 def run_test_on_data(self, file):
     test_file_path = build_test_file_path(file)
     data = try_read_json_file(test_file_path)
     test_data_results_file = build_result_file_path(file)
     expected = try_read_json_file(test_data_results_file)
     root_name = file.replace(".json", "_root_obj")
     model_builder = DynamicModelBuilder()
     model_builder.create_models_from_data(data, root_name)
     instance_builder = DynamicDataInstances()
     instances = instance_builder.create_instances_from_data(
         data, root_name)
     instances_json = instances_to_list_of_json(instances)
     if expected:
         self.assertListEqual(instances_json, expected)
     else:
         write_to_file(json.dumps(instances_json, indent=4),
                       test_data_results_file)
Beispiel #10
0
    def test_create_data_dynamic_list_of_objects(self):
        data = {
            "prop2":
            1,
            "prop1":
            "test2",
            "related_obj1": [
                {
                    "name": "name1",
                    "value": 2
                },
                {
                    "name": "name2",
                    "value": 3
                },
            ]
        }
        root_name = "instance_test1"
        model_builder = DynamicModelBuilder()
        model_builder.create_models_from_data(data, root_name)

        instance_builder = DynamicDataInstances()
        instances = instance_builder.create_instances_from_data(
            data, root_name)