Ver código fonte

Set attributes for assocs.

Bentley James Oakes 7 anos atrás
pai
commit
84db959934
1 arquivos alterados com 82 adições e 23 exclusões
  1. 82 23
      tests/05_creating_dsl.js

+ 82 - 23
tests/05_creating_dsl.js

@@ -71,10 +71,14 @@ function get_all_attrs2() {
         "]";
 }
 
-function get_class_id(num){
+function get_class_div(num) {
     return "#\\2f Formalisms\\2f __LanguageSyntax__\\2f SimpleClassDiagram\\2f SimpleClassDiagram\\2e umlIcons\\2f ClassIcon\\2f " + (num) + "\\2e instance";
 }
 
+function get_assoc_div(num) {
+    return "#\\2f Formalisms\\2f __LanguageSyntax__\\2f SimpleClassDiagram\\2f SimpleClassDiagram\\2e umlIcons\\2f AssociationLink\\2f " + (num) + "\\2e instance > text:nth-child(1)";
+}
+
 module.exports = {
 
     beforeEach: function (client) {
@@ -97,6 +101,7 @@ module.exports = {
         let canvas = "#div_canvas";
         client.waitForElementPresent(canvas, 1000, "Checking for canvas...");
 
+        let name_field = "#tr_name > td:nth-child(2) > textarea";
 
         //BUILD CLASSES
         let start_x = 50;
@@ -107,11 +112,13 @@ module.exports = {
         let y_diff = 150;
         let y_coords = [start_y, start_y + y_diff, start_y + 2 * y_diff];
 
+        let num_classes = x_coords.length * y_coords.length;
+
         let i = 0;
         for (let x of x_coords) {
             for (let y of y_coords) {
 
-                let class_div = get_class_id(i);
+                let class_div = get_class_div(i);
                 i++;
 
                 client
@@ -123,11 +130,9 @@ module.exports = {
         }
 
         //SET NAMES FOR CLASSES
-        let num_classes = 9;
-        let name_field = "#tr_name > td:nth-child(2) > textarea";
         for (let i = 0; i < num_classes; i++) {
             let class_name = "Class" + String.fromCharCode(65 + i);
-            let class_div = get_class_id(i);
+            let class_div = get_class_div(i);
 
             client.waitForElementPresent(class_div, 1000, "Looking for class");
 
@@ -145,7 +150,7 @@ module.exports = {
         }
 
         //SET ATTRIBUTES
-        let class_div = get_class_id(0);
+        let class_div = get_class_div(0);
         let attrib_field = "#tr_attributes > td:nth-child(2) > textarea";
 
         client.moveToElement(class_div, 10, 10)
@@ -162,7 +167,7 @@ module.exports = {
 
 
         let abstract_class = 4;
-        let class_div2 = get_class_id(abstract_class);
+        let class_div2 = get_class_div(abstract_class);
         let attrib_field2 = "#tr_attributes > td:nth-child(2) > textarea";
         let checkbox = "#tr_abstract > td:nth-child(2) > input[type=\"checkbox\"]";
         client.moveToElement(class_div2, 10, 10)
@@ -185,8 +190,8 @@ module.exports = {
             [abstract_class, abstract_class + 3]];
 
         for (let inheri_set of inheri_classes) {
-            let sup = get_class_id(inheri_set[0]);
-            let sub = get_class_id(inheri_set[1]);
+            let sup = get_class_div(inheri_set[0]);
+            let sub = get_class_div(inheri_set[1]);
 
             let inheri_relation = "#div_dialog_0 > select > option:nth-child(2)";
             //tiny offset to not hit other arrows
@@ -210,7 +215,7 @@ module.exports = {
 
         //SET ASSOCS
         let assocs = [
-            //from, to, name, isContain, start_card, end_card
+            //from, to, name, isContain, out_card, in_card
 
             [0, 1, "testAssoc", false, null, null],
             [2, 3, "oneToOne", false,
@@ -244,20 +249,23 @@ module.exports = {
             ]
         ];
 
-        client.pause(1000);
-        //let i = 0;
-        for (let assoc of assocs){
+        client.pause(500);
+
+        let assoc_num = 0;
+        for (let assoc of assocs) {
 
-            let from_ele = get_class_id(assoc[0]);
-            let to_ele = get_class_id(assoc[1]);
+            let from_ele = get_class_div(assoc[0]);
+            let to_ele = get_class_div(assoc[1]);
             let name = assoc[2];
             let isContain = assoc[3];
-            let outCard = assoc[4];
-            let inCard = assoc[5];
+            let out_card = assoc[4];
+            let in_card = assoc[5];
 
-            // let assoc_num = 10 + i * 3;
-            // let assoc_div = "#div_canvas > svg > g:nth-child(" + (assoc_num) + ")";
-            // i = i + 1;
+            let cardinality_field = "#tr_cardinalities > td:nth-child(2) > textarea";
+
+            let prev_num_elements = num_classes + inheri_classes.length;
+            let assoc_div = get_assoc_div(prev_num_elements + assoc_num);
+            assoc_num++;
 
             let assoc_relation = "#div_dialog_0 > select > option:nth-child(1)";
             //tiny offset to not hit other arrows
@@ -276,11 +284,62 @@ module.exports = {
                 .waitForElementNotPresent("#dialog_btn", 1000, "Assoc menu closes")
                 .moveToElement(canvas, 0, 100)
                 .mouseButtonClick('left')
-                .pause(500)
+                .pause(1000)
+                .waitForElementPresent(assoc_div, 3000, "Assoc name present: " + assoc_div);
 
+            if (out_card) {
+
+                client
+                    .moveToElement(from_ele, 10, 10)
+                    .mouseButtonClick('middle')
+                    .waitForElementPresent("#dialog_btn", 1000, "Out card menu opens")
+                    .clearValue(cardinality_field)
+                    .setValue(cardinality_field, JSON.stringify(out_card))
+                    .click("#dialog_btn")
+                    .waitForElementNotPresent("#dialog_btn", 1000, "Out card menu closes")
+                    .moveToElement(canvas, 0, 100)
+                    .mouseButtonClick('left')
+                    .pause(1000);
+            }
+
+            if (in_card) {
+                client
+                    .moveToElement(to_ele, 10, 10)
+                    .mouseButtonClick('middle')
+                    .waitForElementPresent("#dialog_btn", 1000, "Out card menu opens")
+                    .clearValue(cardinality_field)
+                    .setValue(cardinality_field, JSON.stringify(in_card))
+                    .click("#dialog_btn")
+                    .waitForElementNotPresent("#dialog_btn", 1000, "Out card menu closes")
+                    .moveToElement(canvas, 0, 100)
+                    .mouseButtonClick('left')
+                    .pause(1000);
+            }
+            client.getElementSize(assoc_div, function (result) {
+                client
+                    .moveToElement(assoc_div, result.value.width / 2, result.value.height / 2)
+                    .mouseButtonClick('middle')
+                    .waitForElementPresent("#dialog_btn", 5000000, "Editing assoc name opens")
+                    .clearValue(name_field)
+                    .setValue(name_field, name);
+
+                if (isContain) {
+                    let contain_opt = "#tr_linktype > td:nth-child(2) > select > option:nth-child(2)";
+
+                    client
+                        .moveToElement(contain_opt, 0, 0)
+                        .mouseButtonClick('left');
+                }
+
+
+                client
+                    .click("#dialog_btn")
+                    .waitForElementNotPresent("#dialog_btn", 1000, "Editing assoc name closes")
+                    .moveToElement(canvas, 0, 100)
+                    .mouseButtonClick('left')
+                    .pause(500);
+            })
 
-                // .moveToElement(assoc_div, 1, 1)
-                // .mouseButtonClick('middle')
             ;
         }