ToolJet/cypress-tests/cypress/support/utils/table.js
Johnson Cherian 55cdc7a0b5
Query manager revamp (#6680)
* global store init

* Moved query data to new component

* Removed unwanted code

* Removed data queries prop drilling

* Moved query state out of editor

* Added unsafe to componentWillReceiveProps

* Selected first query when the version is changed

* Fixed bug on renaming query

* Fixed issue on dark theme

* Fixed running query on page load in viewer

* Query manager refactor init

* Added global data source in store

* Disabled devtools on production

* Fixed bug on selecting query after deletion

* Reset store when editor is loaded

* Moved query manager to functional component

* Fixed conflict issues

* Fixed infinite loop on tooljetDB

* Set the store name and updated devtools logic

* Fixed issue on displaying draft query from data sources

* Updated comments on the store

* Fixed bug on changing data source and creating query from data source

* Fixed bug on showing unsaved changes popup

* Fixed issue on showing confirmation modal everytime without any changes

* feat: autosave data query functionality

* feat: show publish button only when the status in draft state

* Fixed issues on query renaming

* feat: removed discard popup for data query create/edit widget

* stye: reduced autosave api call timeout and added draft tag

* feat: added minor style changes

* feat: fixed issues with restapi plugin, removed unused api calls

* fix: fixed issue that breaks restapi creation

* fix: reload selected query details after update query

* perf: reduced debounce time for data query update apis

* feat: removed full reloading of query list on query renaming

* feat: duplicate data query feature added

* Fixed issue on creating restAPI query

* fix: fixed issue in transforming response from update queyr api

* fix: refresh selected query details when the selected query is updated

* fix: rename query on click enter

* fix: full refresh of query list on update

* fix: style changes

* fix: subscribing to state to autsave

* feat: updated the query manager styles to new design

* feat: revamped the querypane header buttons

* fix: fixed the padding for query panel maximize button

* feat: updated search box style

* refactor: moved function to render data source icon to its own component

* fix: fixed querymanager widget breaking issue

* merged with feat/query-manager-autosave

* refactor: removed unused consoles

* refactor: removed unused consoles

* refactor: removed unused consoles

* fix: removed commented code

* fix: removed unused code

* refactor: removed unused comments

* fix: show change datasource select only if valid ds available

* Update frontend/src/Editor/Inspector/EventManager.jsx

Co-authored-by: Kavin Venkatachalam <[email protected]>

* Update frontend/src/Editor/QueryManager/Components/DataSourceLister.jsx

Co-authored-by: Kavin Venkatachalam <[email protected]>

* Update frontend/src/Editor/QueryManager/Components/DataSourceLister.jsx

Co-authored-by: Kavin Venkatachalam <[email protected]>

* Update frontend/src/Editor/QueryManager/Components/QueryManagerBody.jsx

Co-authored-by: Kavin Venkatachalam <[email protected]>

* feat: modify behaviour of search icon in query panel

* fix: fixed theme color mismatch in query manager

* refactor: remove dead code

* refactor: updated theme for data source listner

* fix: theming in filter and sort popup

* refactor: remove unused variables

* fix: removed draftQuery logic from query manager

* refactor: removed unused varibales

* Update frontend/src/Editor/QueryManager/QueryEditors/Restapi/TabParams.jsx

Co-authored-by: Kavin Venkatachalam <[email protected]>

* Update frontend/src/Editor/QueryPanel/QueryCard.jsx

Co-authored-by: Kavin Venkatachalam <[email protected]>

* feat: diable preview for draft queries

* fix: added tooltip for query panel button

* fix: fixed issues in saving query manager events

* fix: moved query save subscriber to QuerPanel component

* feat: converted query run api to save and run

* fix: made varibale an optional param in updateDataQuery dto

* refactor: cleanup update dataquery status api response

* refactor: moved query status to constants file

* feat: prompt for queryname when creating new query

* fix: store new queryname in state on create query pageload

* fix: fixed alignment of Tooljet db component form

* fix: correct translation and format file

* refactor: removed consoles

* merge: merge appbuilder-1.2

* style: updated rename input/button UX

* style: revamped dataquery create widget styles

* style: revamped data source selector styles

* fix: removed code added for debugging

* style: updated data query filter design

* style: Add prop to control visibility of clear button in search box

* style: implement new style for query filter

* merge appbuilder-1.2 to feat/query-manager-sort-filter

* refactor: remove unintended file change

* fix: set default value for method in respapi

* style: updated copilot info popup style

* style: updated quer panel header icons

* style: updated button styles

* style: fixed query manager button styles

* style: smoothened query preview modal view

* fix: correct import for some funs

* fix: fixed minor UX bugs

* style: fixed styling of REST api GDS

* style: fixed styleing of sort and filter popup

* style: improved data queries sort filter UI/UX

* fix: remove click listner when overlay is closed

* fix: moved component declaration out of parent component

* fix: set selected datasource for default sources

* fix: filter DS based on saerch in create dropdown

* fix: restrict draft query running to preview mode

* fix: query renamed on input change in create screen

* fix: set name to state as soon as user renames query

* fix: make query notification message consistent

* style: correct s3 bucket plugin layout config

* fix: fixed issues with cloning of Static DS queries

* fix: made change so that newly created query is reflected immediatly

* style: updated spacing for query manager components

* fix: hide rename input when no query selected

* fix: check bothe selected query and DS before rendering query manager

* fix: set isSaving to true only for api calls in querymanager

* fix: added success message form in qm

* fix: filter out draft queries from viewer on running

* fix: fixed inconsistent gutter for runpy and runjs editors

* fix: reload dataqueris on LDS deletion

* fix: redesigned filter/sort popup

* fix: fixed issue that resets filter on search

* fix: fixed query manager breaking on plugin select

* fix: diable json preview for text output

* fix: reset to filter and sort main menu on close filter popup

* refactor: rename varibales

* stye: redesigned query create panel

* feat: revert data query status column from backend

* style: redesign query picker section

* refactor: removed dead code

* style: querypanel expand/collapse btn style

* style: add query select and query filter popup style redesign

* style: updated filter popup style

* feat: removed draft query checks everywhere

* style: empty dataqueries style changed

* style: updated query selector popup and rest options styles

* style: removed 100% height to query option remove btn

* feat: added the query runnable status check

* style: updated query manager footer style

* feat: changed DS filter from kind to DS ID

* style: minor ui tweaks in filter popup

* style: disable DS filter if no DQs created

* style: minor ui change

* fix: rerender filter popup post DS api call. fixed rest api copy feature

* fix: add local DS to filter popup

* refactor: removed dead code/comments

* add new row is crashing when no data is fed to table (#7102)

* fix: fixed condition that blocked GDS run on load

* fix: revert name back to og name if update fails in rename query

* feat: added tooltip for show query btn

* fix: added click interaction for pill btn as well

* fix: minor UI tweaks to make UX better

* style: fixed the styling of filter popup

* style: minor UI tweaks in query filter popup

* fix: fixed minor css issue in ds picker

* style: wrap overflowing text in queryname

* fix: update updated_at after query update api call success

* fix: update remove the caller query from event query dropdown

* style: minor ui spacing tweaks

* fix: fix issue that cuased app crash when tjdb opened

* fix: fixed update row styles

* fix: fixed info popup dark theme bg

* fix: fixed headers styling according to general QM styles

* style: fixed stripe QM UI

* fix: added tooltip for quernames

* feat: add tooltip for select ds options

* added consoles to debug debugger issue

* fix: fixed :active style of ds select dropdown in QM

* fix: fixed DS kind name in data source selector in QM

* fix: fixed border color mismatch for ds select dd

* fix: change tooltip msg for maximize/minize QM

* Fix automation for query manager revamp. (#7223)

* Add data-cy to support modified specs

* Fix event handler

* Fix RunPy and RunJS specs

* Fix event handler label

* Fix basic components spec

* Fix basic components failure

* Fix tabel spec failure.

* Fix runjs and runpy actions

* Fix table column options

* Add data-cy

* version: version updated to 2.13.0

* Version bump

---------

Co-authored-by: Kavin Venkatachalam <[email protected]>
Co-authored-by: Kavin Venkatachalam <[email protected]>
Co-authored-by: Manish Kushare <[email protected]>
Co-authored-by: Midhun Kumar E <[email protected]>
2023-08-09 18:01:48 +05:30

230 lines
6.3 KiB
JavaScript

import { commonWidgetSelector, cyParamName } from "Selectors/common";
import { tableSelector } from "Selectors/table";
export const searchOnTable = (value = "") => {
cy.get('[data-cy="search-input-field"]').type(
`{selectAll}{backspace}${value}`
);
cy.wait(100);
};
export const verifyTableElements = (
values,
columns = ["id", "name", "email"]
) => {
values.forEach((value, i) => {
columns.forEach((column, index) => {
cy.get(tableSelector.column(index))
.eq(i)
.should("have.text", `${value[column]}`);
});
});
cy.forceClickOnCanvas();
};
export const selectDropdownOption = (inputSelector, option) => {
const data = {
default: 0,
string: 1,
number: 2,
text: 3,
badge: 4,
multipleBadges: 5,
tags: 6,
dropdown: 7,
radio: 8,
multiselect: 9,
toggleSwitch: 10,
datePicker: 11,
image: 12,
wrap: 0,
scroll: 1,
hide: 2,
};
const click = () => {
cy.get(inputSelector).realClick();
cy.wait(500);
cy.get("body").then(($body) => {
if ($body.find('[data-index="0"]').length == 0) {
click();
}
});
};
click();
cy.get(
isNaN(option)
? `[data-index="${data[option]}"]>.select-search-option:eq(0)`
: `[data-index="${option}"]>.select-search-option:eq(0)`
).click({ force: true });
};
export const verifyAndEnterColumnOptionInput = (label, value) => {
cy.get(`[data-cy="input-and-label-${cyParamName(label)}"]`)
.find("label")
.should("have.text", label);
cy.get(`[data-cy="input-and-label-${cyParamName(label)}"]`)
.realClick()
.realPress(["Meta", "A"])
.realType(`{backspace}{backspace}{backspace}{backspace}`)
.realPress(["Meta", "A"])
.realType(
`{backspace}{rightarrow}{backspace}{rightarrow}{backspace}{rightarrow}{backspace}{rightarrow}{backspace}{rightarrow}{backspace}{rightarrow}{backspace}{rightarrow}{backspace}{backspace}{rightarrow}{backspace}{rightarrow}{backspace}{rightarrow}{backspace}{rightarrow}{backspace}{rightarrow}{backspace}{rightarrow}{backspace}{rightarrow}{backspace}{rightarrow}{backspace}{rightarrow}${value}`
);
};
export const addAndOpenColumnOption = (name, type) => {
cy.get('[data-cy="button-add-column"]').click();
cy.get('[data-cy="button-add-column"]')
.parents(".accordion-body")
.find('[data-cy*="column-new_column"]')
.last()
.click();
selectDropdownOption('[data-cy="dropdown-column-type"]>>:eq(0)', type);
verifyAndEnterColumnOptionInput("Column name", name);
};
export const deleteAndVerifyColumn = (columnName) => {
cy.get(`[data-cy="button-delete-${columnName}"]`).click();
cy.notVisible(`[data-cy="column-${columnName}"]`);
cy.notVisible(tableSelector.columnHeader(columnName));
};
export const verifyInvalidFeedback = (columnIndex = 0, rowIndex = 0, text) => {
cy.get(tableSelector.column(columnIndex))
.eq(rowIndex)
.find(">>>>:eq(1)")
.should("have.text", text);
// cy.forceClickOnCanvas();
};
export const addInputOnTable = (
columnIndex = 0,
rowIndex = 0,
value,
type = "input"
) => {
cy.forceClickOnCanvas();
cy.get(tableSelector.column(columnIndex))
.eq(rowIndex)
.click()
.find(type)
.click()
.type(`{selectAll}{backspace}${value}`);
cy.forceClickOnCanvas();
};
export const verifySingleValueOnTable = (
columnIndex = 0,
rowIndex = 0,
value
) => {
cy.get(tableSelector.column(columnIndex))
.eq(rowIndex)
.should("have.text", value);
};
export const verifyAndModifyToggleFx = (
paramName,
defaultValue,
toggleModification = true
) => {
cy.get(`[data-cy="label-${cyParamName(paramName)}"]`).should(
"have.text",
paramName
);
cy.get(commonWidgetSelector.parameterFxButton(paramName, ":eq(1)"))
.scrollIntoView()
.should("have.text", "Fx")
.click();
if (defaultValue)
cy.get(commonWidgetSelector.parameterInputField(paramName))
.find("pre.CodeMirror-line")
.should("have.text", defaultValue);
cy.get(commonWidgetSelector.parameterFxButton(paramName)).click();
if (toggleModification == true)
cy.get(commonWidgetSelector.parameterTogglebutton(paramName)).click();
};
export const selectFromSidebarDropdown = (selector, option) => {
cy.get(selector).click().type(`${option}{enter}`);
};
export const dataPdfAssertionHelper = (data) => {
let dataArray = [];
data.forEach((a) => {
dataArray.push("" + a.id + a.name + a.email);
});
return dataArray;
};
export const dataCsvAssertionHelper = (data) => {
let dataArray = [];
data.forEach((a) => {
dataArray.push(`${a.id},${a.name},${a.email}`);
});
return dataArray;
};
export const addFilter = (
data = [{ column: "name", operation: "contains", value: "Sarah" }],
freshFilter = false
) => {
cy.get(tableSelector.filterButton).click();
data.forEach((filter, index) => {
if (freshFilter == true) {
if (index == 0) {
cy.get(tableSelector.buttonClearFilter).click();
}
cy.get(tableSelector.buttonAddFilter).click();
}
cy.get(tableSelector.filterSelectColumn(index))
.click()
.type(`${filter.column}{enter}`);
cy.get(tableSelector.filterSelectOperation(index))
.click()
.type(`${filter.operation}{enter}`);
if (filter.value) {
cy.get(tableSelector.filterInput(index)).type(
`{selectAll}{del}${filter.value}`
);
}
});
cy.get(tableSelector.buttonCloseFilters).click();
};
export const addNewRow = () => {
cy.get(tableSelector.addNewRowTooltip).click();
cy.get(".table-add-new-row").should("be.visible");
cy.get(tableSelector.headerFilters).verifyVisibleElement(
"have.text",
"Add new rows"
);
cy.get(tableSelector.buttonCloseFilters).should("be.visible");
cy.get(tableSelector.addNewRowTooltip).should("be.visible");
cy.contains("Save").should("be.visible");
cy.contains("Discard").should("be.visible");
cy.get(
".table-add-new-row > .table-responsive > .table > thead > .tr > :nth-child(1)"
).should("be.visible");
cy.get(
".table-add-new-row > > .table > tbody > .table-row > :nth-child(1) >>> input"
)
.click()
.clear()
.type("5");
cy.get(
".table-add-new-row > > .table > tbody > .table-row > :nth-child(2) >>> input"
)
.click()
.clear()
.type("Nick");
cy.get(
".table-add-new-row > > .table > tbody > .table-row > :nth-child(3) >>> input"
)
.click()
.clear()
.type("[email protected]");
};