mirror of
https://github.com/ToolJet/ToolJet
synced 2026-04-21 21:47:17 +00:00
* 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]>
230 lines
6.3 KiB
JavaScript
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]");
|
|
};
|