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]
