This commit is contained in:
Michael Drury 2024-03-05 17:46:09 +00:00
parent 4d3e033435
commit b72edc21ec
2 changed files with 72 additions and 25 deletions

View File

@ -1,4 +1,11 @@
import { Datasource, DatasourcePlusQueryResponse, Operation, QueryJson, Row, SearchFilters } from "@budibase/types" import {
Datasource,
DatasourcePlusQueryResponse,
Operation,
QueryJson,
Row,
SearchFilters,
} from "@budibase/types"
import { getSQLClient } from "../../../sdk/app/rows/utils" import { getSQLClient } from "../../../sdk/app/rows/utils"
import { cloneDeep } from "lodash" import { cloneDeep } from "lodash"
import sdk from "../../../sdk" import sdk from "../../../sdk"
@ -10,7 +17,11 @@ const WRITE_OPERATIONS: Operation[] = [
Operation.UPDATE, Operation.UPDATE,
Operation.DELETE, Operation.DELETE,
] ]
const DISABLED_WRITE_CLIENTS: SqlClient[] = [SqlClient.MY_SQL, SqlClient.MS_SQL, SqlClient.ORACLE] const DISABLED_WRITE_CLIENTS: SqlClient[] = [
SqlClient.MY_SQL,
SqlClient.MS_SQL,
SqlClient.ORACLE,
]
class CharSequence { class CharSequence {
static alphabet = "abcdefghijklmnopqrstuvwxyz" static alphabet = "abcdefghijklmnopqrstuvwxyz"

View File

@ -214,59 +214,95 @@ describe("Captures of real examples", () => {
endpoint: { datasourceId: "", entityId: "", operation: op }, endpoint: { datasourceId: "", entityId: "", operation: op },
resource: { resource: {
fields, fields,
} },
} }
} }
it("should check for Postgres aliased status", () => { it("should check for Postgres aliased status", () => {
const aliasing = new AliasTables(tables) const aliasing = new AliasTables(tables)
const datasource = getDatasource(SourceName.POSTGRES) const datasource = getDatasource(SourceName.POSTGRES)
expect(aliasing.isAliasingEnabled(getQuery(Operation.CREATE), datasource)).toEqual(true) expect(
expect(aliasing.isAliasingEnabled(getQuery(Operation.READ), datasource)).toEqual(true) aliasing.isAliasingEnabled(getQuery(Operation.CREATE), datasource)
expect(aliasing.isAliasingEnabled(getQuery(Operation.UPDATE), datasource)).toEqual(true) ).toEqual(true)
expect(aliasing.isAliasingEnabled(getQuery(Operation.DELETE), datasource)).toEqual(true) expect(
aliasing.isAliasingEnabled(getQuery(Operation.READ), datasource)
).toEqual(true)
expect(
aliasing.isAliasingEnabled(getQuery(Operation.UPDATE), datasource)
).toEqual(true)
expect(
aliasing.isAliasingEnabled(getQuery(Operation.DELETE), datasource)
).toEqual(true)
}) })
it("should check for MS-SQL aliased status", () => { it("should check for MS-SQL aliased status", () => {
const aliasing = new AliasTables(tables) const aliasing = new AliasTables(tables)
const datasource = getDatasource(SourceName.SQL_SERVER) const datasource = getDatasource(SourceName.SQL_SERVER)
expect(aliasing.isAliasingEnabled(getQuery(Operation.CREATE), datasource)).toEqual(false) expect(
expect(aliasing.isAliasingEnabled(getQuery(Operation.READ), datasource)).toEqual(true) aliasing.isAliasingEnabled(getQuery(Operation.CREATE), datasource)
expect(aliasing.isAliasingEnabled(getQuery(Operation.UPDATE), datasource)).toEqual(false) ).toEqual(false)
expect(aliasing.isAliasingEnabled(getQuery(Operation.DELETE), datasource)).toEqual(false) expect(
aliasing.isAliasingEnabled(getQuery(Operation.READ), datasource)
).toEqual(true)
expect(
aliasing.isAliasingEnabled(getQuery(Operation.UPDATE), datasource)
).toEqual(false)
expect(
aliasing.isAliasingEnabled(getQuery(Operation.DELETE), datasource)
).toEqual(false)
}) })
it("should check for MySQL aliased status", () => { it("should check for MySQL aliased status", () => {
const aliasing = new AliasTables(tables) const aliasing = new AliasTables(tables)
const datasource = getDatasource(SourceName.MYSQL) const datasource = getDatasource(SourceName.MYSQL)
expect(aliasing.isAliasingEnabled(getQuery(Operation.CREATE), datasource)).toEqual(false) expect(
expect(aliasing.isAliasingEnabled(getQuery(Operation.READ), datasource)).toEqual(true) aliasing.isAliasingEnabled(getQuery(Operation.CREATE), datasource)
expect(aliasing.isAliasingEnabled(getQuery(Operation.UPDATE), datasource)).toEqual(false) ).toEqual(false)
expect(aliasing.isAliasingEnabled(getQuery(Operation.DELETE), datasource)).toEqual(false) expect(
aliasing.isAliasingEnabled(getQuery(Operation.READ), datasource)
).toEqual(true)
expect(
aliasing.isAliasingEnabled(getQuery(Operation.UPDATE), datasource)
).toEqual(false)
expect(
aliasing.isAliasingEnabled(getQuery(Operation.DELETE), datasource)
).toEqual(false)
}) })
it("should check for Oracle aliased status", () => { it("should check for Oracle aliased status", () => {
const aliasing = new AliasTables(tables) const aliasing = new AliasTables(tables)
const datasource = getDatasource(SourceName.ORACLE) const datasource = getDatasource(SourceName.ORACLE)
expect(aliasing.isAliasingEnabled(getQuery(Operation.CREATE), datasource)).toEqual(false) expect(
expect(aliasing.isAliasingEnabled(getQuery(Operation.READ), datasource)).toEqual(true) aliasing.isAliasingEnabled(getQuery(Operation.CREATE), datasource)
expect(aliasing.isAliasingEnabled(getQuery(Operation.UPDATE), datasource)).toEqual(false) ).toEqual(false)
expect(aliasing.isAliasingEnabled(getQuery(Operation.DELETE), datasource)).toEqual(false) expect(
aliasing.isAliasingEnabled(getQuery(Operation.READ), datasource)
).toEqual(true)
expect(
aliasing.isAliasingEnabled(getQuery(Operation.UPDATE), datasource)
).toEqual(false)
expect(
aliasing.isAliasingEnabled(getQuery(Operation.DELETE), datasource)
).toEqual(false)
}) })
it("should disable aliasing for non-SQL datasources", () => { it("should disable aliasing for non-SQL datasources", () => {
const aliasing = new AliasTables(tables) const aliasing = new AliasTables(tables)
expect(aliasing.isAliasingEnabled(getQuery(Operation.READ), { expect(
source: SourceName.GOOGLE_SHEETS, aliasing.isAliasingEnabled(getQuery(Operation.READ), {
type: "datasource", source: SourceName.GOOGLE_SHEETS,
isSQL: false, type: "datasource",
})) isSQL: false,
})
)
}) })
it("should disable when no fields", () => { it("should disable when no fields", () => {
const aliasing = new AliasTables(tables) const aliasing = new AliasTables(tables)
const datasource = getDatasource(SourceName.POSTGRES) const datasource = getDatasource(SourceName.POSTGRES)
expect(aliasing.isAliasingEnabled(getQuery(Operation.READ, []), datasource)).toEqual(false) expect(
aliasing.isAliasingEnabled(getQuery(Operation.READ, []), datasource)
).toEqual(false)
}) })
}) })