DCAE-D fe initial commit

DCAE-D fe initial commit

Change-Id: Ica8ccb7c7ef769c969664d1e168d205eb9fc67f2
Issue-ID: SDC-1218
Signed-off-by: Stone, Avi (as206k) <as206k@att.com>
diff --git a/public/cypress/integration/e2e/e2eWithIntegration-spec.ts b/public/cypress/integration/e2e/e2eWithIntegration-spec.ts
new file mode 100644
index 0000000..459a7de
--- /dev/null
+++ b/public/cypress/integration/e2e/e2eWithIntegration-spec.ts
@@ -0,0 +1,145 @@
+const randomNodeName = () =>
+  Math.random()
+    .toString(36)
+    .substr(2, 7);
+const NODE_NAME = randomNodeName();
+
+const serverGetDDLData = () => {
+  return cy
+    .server()
+    .route(
+      'GET',
+      Cypress.env('backendUrl') + '/getResourcesByMonitoringTemplateCategory'
+    )
+    .as('templateAPi')
+    .route(
+      'GET',
+      Cypress.env('backendUrl') +
+        '/service/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a'
+    )
+    .as('vfniListAPi');
+};
+
+const saveAndDoneHttp = () => {
+  cy.server();
+  cy
+    .route({
+      method: 'POST',
+      url: Cypress.env('backendUrl') + '/rule-editor/rule/**/**/**/**'
+    })
+    .as('doneSaveCopyRule');
+};
+
+const createNewMC = () => {
+  cy
+    .get('input[data-tests-id="nameMc"]')
+    .type(`Hello${NODE_NAME}`)
+    .get('textarea[data-tests-id="descMc"]')
+    .type('Hello Description')
+    .get('select[data-tests-id="templateDdl"]')
+    .then($els => {
+      const opt = $els.find('option');
+      const first = opt.get(1) as any;
+      return $els.val(first.value);
+    })
+    .trigger('change')
+    .get('select[data-tests-id="vfniDdl"]')
+    .then($els => {
+      const opt = $els.find('option');
+      const first = opt.get(1) as any;
+      return $els.val(first.value);
+    })
+    .trigger('change')
+    .get('button[data-tests-id="createMonitoring"]')
+    .not('[disabled]')
+    .should('not.contain', 'Disabled');
+  cy
+    .server()
+    .route({
+      method: 'POST',
+      url: Cypress.env('backendUrl') + '/createMC'
+    })
+    .as('newMC')
+    .get('button[data-tests-id="createMonitoring"]')
+    .click()
+    .wait('@newMC');
+};
+
+import { buttonCreateMC } from '../mocks/homePage-spec';
+import {
+  selectVersionAndTypeAndAddFirstRule,
+  fillRuleDecription,
+  addCopyAction,
+  editFirstRule
+} from '../mocks/ruleEngine-spec';
+
+describe('DCAED - forntend e2e and inagration test', () => {
+  context('Empty Monitoring Configuration list for service', () => {
+    it('Loads', () => {
+      cy.homePage();
+    });
+  });
+
+  context('Create new monitoring configuration', () => {
+    beforeEach(() => {
+      serverGetDDLData();
+      cy.homePage();
+      buttonCreateMC()
+        .click()
+        .wait(['@templateAPi', '@vfniListAPi']);
+    });
+
+    it('After api call success verify create button is disabled', () => {
+      cy
+        .get('button[data-tests-id="createMonitoring"]')
+        .should('be.visible')
+        .and('be.disabled');
+    });
+
+    it('click on create mc - more then one tab should be visible', () => {
+      createNewMC();
+      cy
+        .get('ul[p-tabviewnav]')
+        .children()
+        .should($el => {
+          expect($el.length).to.be.greaterThan(1);
+        });
+    });
+
+    it('should enter rule engine in map tab and create new rule', () => {
+      createNewMC();
+      cy
+        .get('#ui-tabpanel-1-label')
+        .should('contain', 'map')
+        .click();
+      selectVersionAndTypeAndAddFirstRule();
+      fillRuleDecription('newRule');
+      addCopyAction();
+      saveAndDoneHttp();
+      cy.get('button[data-tests-id="btnDone"]').click();
+      cy
+        .wait('@doneSaveCopyRule')
+        .get('div[data-tests-id="ruleElement"]')
+        .should('be.visible')
+        .then(function($lis) {
+          expect($lis).to.have.length(1);
+          expect($lis.eq(0)).to.contain('newRule');
+        });
+      editFirstRule();
+      fillRuleDecription('LiavRule');
+      saveAndDoneHttp();
+      cy
+        .get('button[data-tests-id="btnSave"]')
+        .click()
+        .wait('@doneSaveCopyRule')
+        .get('a[data-tests-id="btnBackRule"]')
+        .click()
+        .get('div[data-tests-id="ruleElement"]')
+        .should('be.visible')
+        .then(function($lis) {
+          expect($lis).to.have.length(1);
+          expect($lis.eq(0)).to.contain('LiavRule');
+        });
+    });
+  });
+});