def editRelationshipForm(model_name):
    
    # ensure model name exists
    if model_name not in getModelNames():
        flash(f"Model '{model_name}' does not exist", "error")
        return redirect(url_for('models'))

    # Ensure there was a POST request
    if request.method != "POST":
        # send error message as a flash message
        flash("Nothing sent in POST", "error")
        return redirect(url_for('dashboard', model_name=model_name))
    
    # load model
    model = UMLModel()
    model.load_model(model_name + ".json", directory=DATA_FOLDER)

    # ensure class1 exists
    if request.form.get('class_name1') not in model.classes:
        return f"Class '{request.form.get('class_name1')}' does not exist"
    # ensure class2 exists
    if request.form.get('class_name2') not in model.classes:
        return f"Class '{request.form.get('class_name2')}' does not exist"

    # grab class data
    data = {}
    data["classes"] = model.get_data()

    # add current relationships data
    data["relationship_type"] = request.form.get('relationship_type')
    data["class_name1"] = request.form.get('class_name1')
    data["class_name2"] = request.form.get('class_name2')

    # Build modal form inputs
    return render_template("editRelationshipForm.html", data=data)
Example #2
0
    def test_get_data(self):
        model = UMLModel()

        # Test 1: empty model
        data = model.get_data()
        self.assertEqual(data, {})

        # Test 2: model with data
        model.create_class('class1')
        model.create_class('class2')
        model.create_field('class1', 'private', 'string', 'name')
        expectedData = {
            "class1" : {
                "name" : "class1",
                "fields" : [{
                    "visibility" : 'private',
                    'type' : 'string',
                    'name' : 'name'
                }],
                "methods" : [],
                "relationships" : [],
                "x" : 200,
                "y" : 0,
                "zindex" : 0
            },
            "class2" : {
                "name" : "class2",
                "fields" : [],
                "methods" : [],
                "relationships" : [],
                "x" : 200,
                "y" : 0,
                "zindex" : 0
            }
        }
        data = model.get_data()
        self.assertEqual(data, expectedData)
Example #3
0
    def test_load_model(self):
        
        expectedData = {
            "class1" : {
                "name" : "class1",
                "fields" : [{
                    "visibility" : "protected",
                    "type" : "int",
                    "name" : "number"
                }],
                "methods" : [],
                "relationships" : [],
                "x" : 200,
                "y" : 0,
                "zindex" : 0
            },
            "class2" : {
                "name" : "class2",
                "fields" : [],
                "methods" : [{
                    "visibility" : "public",
                    "type" : "string",
                    "name" : "getMsg",
                    "parameters" : [{
                        'type' : 'string',
                        'name' : 'msg'
                    }]
                }],
                "relationships" : [],
                "x" : 200,
                "y" : 0,
                "zindex" : 0
            },
            "class3" : {
                "name" : "class3",
                "fields" : [],
                "methods" : [],
                "relationships" : [],
                "x" : 200,
                "y" : 0,
                "zindex" : 0
            }
        }
        json_data = json.dumps(expectedData, indent=4)
        with open("code/server-data/test-load.json", "w") as file:
            file.write(json_data)

        # Test 1: load empty model
        model = UMLModel()
        model.load_model("test-load.json")
        # ensure data was loaded properly
        self.assertEqual(expectedData, model.get_data())

        # Test 2: load invalid data
        json_data = json.dumps({"class1": "toast"}, indent=4)
        with open("code/server-data/test-load.json", "w") as file:
            file.write(json_data)

        model = UMLModel()
        status, msg = model.load_model("test-load.json")
        # ensure data wasn't loaded
        self.assertEqual({}, model.get_data())
        self.assertFalse(status)

        # Test 3: load non-json-parsable file
        non_json_data = "not json data"
        with open("code/server-data/test-load.json", "w") as file:
            file.write(non_json_data)

        model = UMLModel()
        status, msg = model.load_model("test-load.json")
        # ensure data wasn't loaded
        self.assertEqual({}, model.get_data())
        self.assertFalse(status)

        # Test 4: load file that doesn't exist
        model = UMLModel()
        status, msg = model.load_model("iDontExist.json")
        # ensure data wasn't loaded
        self.assertEqual({}, model.get_data())
        self.assertFalse(status)