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)
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)
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)