PromucFlow_constructor/app/client/src/WidgetQueryGenerators/GSheets/index.test.ts
Vemparala Surya Vamsi f9ad42f667
chore: [one click binding] gsheets query adaptor (#23390)
## Description
Developed Gsheets query generator for one click binding epic.

#### PR fixes following issue(s)
Fixes #23255

#### Type of change
- New feature (non-breaking change which adds functionality)
- Chore (housekeeping or task changes that don't impact user perception)

## Testing
>
#### How Has This Been Tested?
- [x] Manual
- [x] Jest
- [ ] Cypress
>
>
#### Test Plan
> Add Testsmith test cases links that relate to this PR
>
>
#### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking
(copy link from comments dropped on this PR)
>
>
>
## Checklist:
#### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag


#### QA activity:
- [ ] [Speedbreak
features](https://github.com/appsmithorg/TestSmith/wiki/Test-plan-implementation#speedbreaker-features-to-consider-for-every-change)
have been covered
- [ ] Test plan covers all impacted features and [areas of
interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans/_edit#areas-of-interest)
- [ ] Test plan has been peer reviewed by project stakeholders and other
QA members
- [ ] Manually tested functionality on DP
- [ ] We had an implementation alignment call with stakeholders post QA
Round 2
- [ ] Cypress test cases have been added and approved by SDET/manual QA
- [ ] Added `Test Plan Approved` label after Cypress tests were reviewed
- [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
2023-06-12 14:12:59 +05:30

269 lines
6.3 KiB
TypeScript

import GSheets from ".";
describe("GSheets WidgetQueryGenerator", () => {
const initialValues = {
actionConfiguration: {
formData: {
entityType: {
data: "ROWS",
},
tableHeaderIndex: {
data: "1",
},
projection: {
data: [],
},
queryFormat: {
data: "ROWS",
},
range: {
data: "",
},
where: {
data: {
condition: "AND",
},
},
pagination: {
data: {
limit: "{{Table1.pageSize}}",
offset: "{{Table1.pageOffset}}",
},
},
smartSubstitution: {
data: true,
},
},
},
};
test("should build select form data correctly", () => {
const expr = GSheets.build(
{
select: {
limit: "data_table.pageSize",
where: "data_table.searchText",
offset: "(data_table.pageNo - 1) * data_table.pageSize",
orderBy: "data_table.sortOrder.column || 'genres'",
sortOrder: 'data_table.sortOrder.order == "desc" ? -1 : 1',
},
totalRecord: false,
},
{
tableName: "someTableUrl",
datasourceId: "someId",
// ignore columns
aliases: [{ name: "someColumn1", alias: "someColumn1" }],
widgetId: "someWidgetId",
searchableColumn: "title",
columns: [],
primaryColumn: "",
sheetName: "someSheet",
tableHeaderIndex: 1,
},
initialValues,
);
expect(expr).toEqual([
{
name: "Find_query",
payload: {
formData: {
command: {
data: "FETCH_MANY",
},
entityType: {
data: "ROWS",
},
pagination: {
data: {
limit: "{{data_table.pageSize}}",
offset: "{{(data_table.pageNo - 1) * data_table.pageSize}}",
},
},
projection: {
data: [],
},
queryFormat: {
data: "ROWS",
},
range: {
data: "",
},
sheetName: {
data: "someSheet",
},
sheetUrl: {
data: "someTableUrl",
},
smartSubstitution: {
data: true,
},
sortBy: {
data: [
{
column: "{{data_table.sortOrder.column || 'genres'}}",
order: 'data_table.sortOrder.order == "desc" ? -1 : 1',
},
],
},
tableHeaderIndex: {
data: "1",
},
where: {
data: {
children: [
{
condition: "CONTAINS",
key: '{{data_table.searchText ? "title" : ""}}',
value: "{{data_table.searchText}}",
},
],
condition: "AND",
},
},
},
},
type: "select",
dynamicBindingPathList: [
{
key: "formData.where.data",
},
{
key: "formData.sortBy.data",
},
{
key: "formData.pagination.data",
},
],
},
]);
});
test("should build update form data correctly ", () => {
const expr = GSheets.build(
{
update: {
value: "update_form.formData",
},
totalRecord: false,
},
{
tableName: "someTableUrl",
datasourceId: "someId",
// ignore columns
aliases: [{ name: "someColumn1", alias: "someColumn1" }],
widgetId: "someWidgetId",
searchableColumn: "title",
columns: [],
primaryColumn: "",
sheetName: "someSheet",
tableHeaderIndex: 1,
},
initialValues,
);
expect(expr).toEqual([
{
name: "Update_query",
payload: {
formData: {
command: {
data: "UPDATE_ONE",
},
entityType: {
data: "ROWS",
},
queryFormat: {
data: "ROWS",
},
rowObjects: {
data: "{{update_form.formData}}",
},
sheetName: {
data: "someSheet",
},
sheetUrl: {
data: "someTableUrl",
},
smartSubstitution: {
data: true,
},
tableHeaderIndex: {
data: "1",
},
},
},
dynamicBindingPathList: [
{
key: "formData.rowObjects.data",
},
],
type: "update",
},
]);
});
test("should build insert form data correctly ", () => {
const expr = GSheets.build(
{
create: {
value: "insert_form.formData",
},
totalRecord: false,
},
{
tableName: "someTableUrl",
datasourceId: "someId",
// ignore columns
aliases: [{ name: "someColumn1", alias: "someColumn1" }],
widgetId: "someWidgetId",
searchableColumn: "title",
columns: [],
primaryColumn: "",
sheetName: "someSheet",
tableHeaderIndex: 1,
},
initialValues,
);
expect(expr).toEqual([
{
name: "Insert_query",
payload: {
formData: {
command: {
data: "INSERT_ONE",
},
entityType: {
data: "ROWS",
},
queryFormat: {
data: "ROWS",
},
rowObjects: {
data: "{{insert_form.formData}}",
},
sheetName: {
data: "someSheet",
},
sheetUrl: {
data: "someTableUrl",
},
smartSubstitution: {
data: true,
},
tableHeaderIndex: {
data: "1",
},
},
},
type: "create",
dynamicBindingPathList: [
{
key: "formData.rowObjects.data",
},
],
},
]);
});
});