06_transformation_test.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. //NOTE: REQUIRES DSL FROM PREVIOUS TEST
  2. let test_utils = require('./test_utils');
  3. let model_building_utils = require('./model_building_utils');
  4. let user = "./users/testuser/";
  5. module.exports = {
  6. beforeEach: function (client, done) {
  7. client.url('http://localhost:8124/atompm').pause(300).maximizeWindow(done);
  8. },
  9. 'Login': function (client) {
  10. test_utils.login(client);
  11. },
  12. 'Compile Pattern MM' : function (client) {
  13. let folder_name = "autotest";
  14. let model_name = "autotest.metamodel";
  15. model_building_utils.compile_model(client, "pattern", folder_name, model_name);
  16. },
  17. 'Create Transformation': function (client) {
  18. let trans_formalism = "/Formalisms/__Transformations__/Transformation/MoTif.defaultIcons.metamodel";
  19. test_utils.load_toolbar(client, [trans_formalism]);
  20. //BUILD ELEMENTS
  21. let x_coord = 300;
  22. let y_coords = [200, 320, 440, 560, 680];
  23. let btn_prefix = "#\\2f Formalisms\\2f __Transformations__\\2f Transformation\\2f MoTif\\2e defaultIcons\\2e metamodel\\2f ";
  24. let type_prefix = "#\\2f Formalisms\\2f __Transformations__\\2f Transformation\\2f MoTif\\2e defaultIcons\\2f ";
  25. let to_create = ["StartIcon", "FRuleIcon", "ARuleIcon", "EndSuccessIcon", "EndFailIcon"];
  26. let ele_map = {};
  27. let num_elements = 0;
  28. for (let ele of to_create) {
  29. client.waitForElementPresent(btn_prefix + ele, 2000, "Button present: " + btn_prefix + ele);
  30. client.click(btn_prefix + ele);
  31. let built_div = model_building_utils.create_class(client,
  32. x_coord, y_coords[num_elements], num_elements, type_prefix + ele + "\\2f ");
  33. ele_map[ele] = built_div;
  34. if (ele.includes("Rule")) {
  35. let rule_name = num_elements + "_" + ele.replace("Icon", "");
  36. let name_field = "#tr_name > td:nth-child(2) > textarea:nth-child(1)";
  37. let rule_field = "#tr_rule > td:nth-child(2) > textarea:nth-child(1)";
  38. let rule_prefix = "/autotest/R_";
  39. let attribs = {};
  40. attribs[name_field] = rule_name;
  41. attribs[rule_field] = rule_prefix + rule_name + ".model";
  42. model_building_utils.set_attribs(client, num_elements, attribs, type_prefix + ele + "\\2f ");
  43. }
  44. num_elements++;
  45. }
  46. let assocs = [
  47. [0, 1, ""],
  48. [1, 2, "success"],
  49. [2, 3, "success"],
  50. [1, 4, "fail"],
  51. [2, 4, "fail"]
  52. ];
  53. for (let assoc of assocs) {
  54. let start_ele = to_create[assoc[0]];
  55. let end_ele = to_create[assoc[1]];
  56. let start = ele_map[start_ele];
  57. let end = ele_map[end_ele];
  58. //TODO: Have path come from check/x mark
  59. let relation_div = "";
  60. if (assoc[2] == "success") {
  61. relation_div = "#choice_\\2f Formalisms\\2f __Transformations__\\2f Transformation\\2f MoTif\\2e defaultIcons\\2f success";
  62. //start += " > path:nth-child(3)";
  63. } else if (assoc[2] == "fail") {
  64. relation_div = "#choice_\\2f Formalisms\\2f __Transformations__\\2f Transformation\\2f MoTif\\2e defaultIcons\\2f fail";
  65. //start += " > path:nth-child(5)";
  66. }
  67. let offset = 5 * (assoc[0] + assoc[1]);
  68. model_building_utils.create_assoc(client, start, end, relation_div, offset);
  69. }
  70. model_building_utils.save_model(client, "autotest", "T_autotest.model");
  71. },
  72. after: function (client) {
  73. client.end();
  74. },
  75. };