This is an automated email from the ASF dual-hosted git repository.

rantunes pushed a commit to branch main
in repository 
https://gitbox.apache.org/repos/asf/incubator-kie-tools-temporary-rnd-do-not-use.git

commit dec6217456d244c0d396634adecb2d6c25e4868e
Author: Tomáš David <[email protected]>
AuthorDate: Mon Nov 27 11:17:59 2023 +0100

    KOGITO-9928: Add test for creating new Decision tooling file (#2038)
    
    Signed-off-by: Tomas David <[email protected]>
---
 .../e2e-tests/e2e/CreateNewFile.cy.ts              | 59 ++++++++++++++++++++++
 packages/yard-editor/src/uiEditor/YardUIEditor.tsx | 32 ++++++++++--
 2 files changed, 87 insertions(+), 4 deletions(-)

diff --git 
a/packages/serverless-logic-web-tools/e2e-tests/e2e/CreateNewFile.cy.ts 
b/packages/serverless-logic-web-tools/e2e-tests/e2e/CreateNewFile.cy.ts
index 8b35e69785..880d7144d8 100644
--- a/packages/serverless-logic-web-tools/e2e-tests/e2e/CreateNewFile.cy.ts
+++ b/packages/serverless-logic-web-tools/e2e-tests/e2e/CreateNewFile.cy.ts
@@ -139,4 +139,63 @@ describe("Serverless Logic Web Tools - Create and edit 
test", () => {
     // check there are no problems in dashbuilder file
     cy.get("#total-notifications").should("have.text", 0);
   });
+
+  it("should create a new YAML serverless decision", () => {
+    cy.ouia({ ouiaId: "new-yard.yaml-button" }).click();
+    cy.loadEditor();
+
+    // check header labels
+    cy.ouia({ ouiaId: "file-name-input" }).should("have.value", "Untitled");
+    cy.ouia({ ouiaId: "file-type-label" }).should("have.text", "Serverless 
Decision");
+
+    cy.getEditor().within(() => {
+      // create basic YARD structure
+      cy.get(".codelens-decoration a:contains('Create a Serverless 
Decision')").click();
+      cy.get("[aria-label='Serverless Decision Example'] a").click();
+
+      // move cursor to the top
+      cy.get(".monaco-editor").type("{pageUp}");
+
+      // check text editor
+      cy.get(".monaco-editor textarea")
+        .should("contain.value", "specVersion: alpha")
+        .should("contain.value", "kind: YaRD")
+        .should("contain.value", "name: 'Traffic Violation'")
+        .should("contain.value", "expressionLang: alpha");
+
+      // check General properties
+      cy.ouia({ ouiaId: "yard-name-input" }).should("have.value", "Traffic 
Violation");
+      cy.ouia({ ouiaId: "yard-type-input" }).should("have.value", "YaRD");
+      cy.ouia({ ouiaId: "yard-expr-lang-version-input" }).should("have.value", 
"alpha");
+      cy.ouia({ ouiaId: "yard-spec-version-input" }).should("have.value", 
"alpha");
+
+      // switch to Decion Inputs tab and check
+      cy.ouia({ ouiaId: "yard-ui-tabs" }).ouia({ ouiaId: "decision-inputs-tab" 
}).click();
+      cy.ouia({ ouiaId: "decison-input-name" }).should(($items) => {
+        expect($items.length).eq(2);
+        expect($items.eq(0)).value("Driver");
+        expect($items.eq(1)).value("Violation");
+      });
+      cy.ouia({ ouiaId: "decison-input-type" }).should(($items) => {
+        expect($items.length).eq(2);
+        expect($items.eq(0)).value("http://myapi.org/jsonSchema.json#Driver";);
+        
expect($items.eq(1)).value("http://myapi.org/jsonSchema.json#Violation";);
+      });
+
+      // switch to Decision Elements tab and check
+      cy.ouia({ ouiaId: "yard-ui-tabs" }).ouia({ ouiaId: 
"decision-elements-tab" }).click();
+      cy.ouia({ ouiaId: "decision-diagram-body" }).should("contain.text", 
"Should the driver be suspended?");
+      cy.ouia({ ouiaId: "decision-diagram-body" }).should(
+        "contain.text",
+        'if Driver.Points + Fine.Points >= 20 then "Yes" else "No"'
+      );
+      cy.ouia({ ouiaId: "decision-diagram-body" }).should(
+        "contain.text",
+        'Violation.type: ="speed"\nViolation.Speed - Violation.SpeedLimit: >= 
30'
+      );
+    });
+
+    // check there are no problems in YARD file
+    cy.get("#total-notifications").should("have.text", 0);
+  });
 });
diff --git a/packages/yard-editor/src/uiEditor/YardUIEditor.tsx 
b/packages/yard-editor/src/uiEditor/YardUIEditor.tsx
index 67fb8208e9..4adf20197c 100644
--- a/packages/yard-editor/src/uiEditor/YardUIEditor.tsx
+++ b/packages/yard-editor/src/uiEditor/YardUIEditor.tsx
@@ -258,7 +258,13 @@ export const YardUIEditor = ({ yardData, isReadOnly }: 
Props) => {
 
   return (
     <div className={"yard-ui-editor"}>
-      <Tabs activeKey={activeTabIndex} aria-label="yard menu tabs" 
isBox={false} onSelect={handleTabClick}>
+      <Tabs
+        activeKey={activeTabIndex}
+        aria-label="yard menu tabs"
+        isBox={false}
+        onSelect={handleTabClick}
+        ouiaId={"yard-ui-tabs"}
+      >
         <Tab eventKey={0} 
title={<TabTitleText>{i18n.generalTab.tabTitle}</TabTitleText>}>
           <div className={"general-body"}>
             <Title headingLevel="h6" size={TitleSizes.md}>
@@ -268,6 +274,7 @@ export const YardUIEditor = ({ yardData, isReadOnly }: 
Props) => {
               id={"name-text-input"}
               isReadOnly={isReadOnly}
               value={yardData?.name ? yardData.name : ""}
+              ouiaId={"yard-name-input"}
             ></TextInput>
             <div className={"separator"}></div>
             <Title headingLevel="h6" size={TitleSizes.md}>
@@ -277,6 +284,7 @@ export const YardUIEditor = ({ yardData, isReadOnly }: 
Props) => {
               id={"kind-text-input"}
               isReadOnly={isReadOnly}
               value={yardData?.kind ? yardData.kind : ""}
+              ouiaId={"yard-type-input"}
             ></TextInput>
             <div className={"separator"}></div>
             <Title headingLevel="h6" size={TitleSizes.md}>
@@ -286,6 +294,7 @@ export const YardUIEditor = ({ yardData, isReadOnly }: 
Props) => {
               id={"expression-lang-text-input"}
               isReadOnly={isReadOnly}
               value={yardData?.expressionLang ? yardData.expressionLang : ""}
+              ouiaId={"yard-expr-lang-version-input"}
             ></TextInput>
             <div className={"separator"}></div>
             <Title headingLevel="h6" size={TitleSizes.md}>
@@ -295,10 +304,15 @@ export const YardUIEditor = ({ yardData, isReadOnly }: 
Props) => {
               id={"specVersion-text-input"}
               isReadOnly={isReadOnly}
               value={yardData?.specVersion ? yardData.specVersion : ""}
+              ouiaId={"yard-spec-version-input"}
             ></TextInput>
           </div>
         </Tab>
-        <Tab eventKey={1} 
title={<TabTitleText>{i18n.decisionInputsTab.tabTitle}</TabTitleText>}>
+        <Tab
+          eventKey={1}
+          
title={<TabTitleText>{i18n.decisionInputsTab.tabTitle}</TabTitleText>}
+          ouiaId={"decision-inputs-tab"}
+        >
           <div className={"decision-input-body"}>
             {yardData?.inputs && yardData?.inputs.length > 0 ? (
               yardData.inputs.map((input, index) => {
@@ -311,6 +325,7 @@ export const YardUIEditor = ({ yardData, isReadOnly }: 
Props) => {
                       id={"expression-lang-text-input"}
                       isReadOnly={isReadOnly}
                       value={input?.name ? input.name : ""}
+                      ouiaId={"decison-input-name"}
                     ></TextInput>
                     <div className={"separator"}></div>
                     <Title headingLevel="h6" size={TitleSizes.md}>
@@ -320,6 +335,7 @@ export const YardUIEditor = ({ yardData, isReadOnly }: 
Props) => {
                       id={"expression-lang-text-input"}
                       isReadOnly={isReadOnly}
                       value={input?.type ? input.type : ""}
+                      ouiaId={"decison-input-type"}
                     ></TextInput>
                     <Divider />
                   </div>
@@ -333,8 +349,16 @@ export const YardUIEditor = ({ yardData, isReadOnly }: 
Props) => {
             )}
           </div>
         </Tab>
-        <Tab eventKey={2} 
title={<TabTitleText>{i18n.decisionElementsTab.tabTitle}</TabTitleText>}>
-          <div className={"decision-element-body"} style={{ maxWidth: "100%", 
maxHeight: "100%" }}>
+        <Tab
+          eventKey={2}
+          
title={<TabTitleText>{i18n.decisionElementsTab.tabTitle}</TabTitleText>}
+          ouiaId={"decision-elements-tab"}
+        >
+          <div
+            className={"decision-element-body"}
+            style={{ maxWidth: "100%", maxHeight: "100%" }}
+            data-ouia-component-id={"decision-diagram-body"}
+          >
             {yardData?.elements && yardData?.elements.length > 0 && 
nodes.length > 0 ? (
               <TransformWrapper centerOnInit={true} initialScale={0.7} 
minScale={0.3} ref={transformComponentRef}>
                 <TransformComponent>{diagram}</TransformComponent>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to