141 lines
5.4 KiB
JavaScript
141 lines
5.4 KiB
JavaScript
import filterTests from "../support/filterTests"
|
|
const interact = require('../support/interact')
|
|
|
|
filterTests(["smoke", "all"], () => {
|
|
context("Query Level Transformers", () => {
|
|
before(() => {
|
|
cy.login()
|
|
cy.createTestApp()
|
|
})
|
|
|
|
it("should write a transformer function", () => {
|
|
// Add REST datasource - contains API for breweries
|
|
const datasource = "REST"
|
|
const restUrl = "https://api.openbrewerydb.org/breweries"
|
|
cy.selectExternalDatasource(datasource)
|
|
cy.createRestQuery("GET", restUrl, "/breweries")
|
|
cy.get(interact.SPECTRUM_TABS_ITEM).contains("Transformer").click()
|
|
// Get Transformer Function from file
|
|
cy.readFile("cypress/support/queryLevelTransformerFunction.js").then(
|
|
transformerFunction => {
|
|
cy.get(interact.CODEMIRROR_TEXTAREA)
|
|
// Highlight current text and overwrite with file contents
|
|
.type(Cypress.platform === "darwin" ? "{cmd}a" : "{ctrl}a", {
|
|
force: true,
|
|
})
|
|
.type(transformerFunction, { parseSpecialCharSequences: false })
|
|
}
|
|
)
|
|
// Send Query
|
|
cy.intercept("**/queries/preview").as("query")
|
|
cy.get(interact.SPECTRUM_BUTTON).contains("Send").click({ force: true })
|
|
cy.wait("@query")
|
|
// Assert against Status Code, body, & body rows
|
|
cy.get("@query").its("response.statusCode").should("eq", 200)
|
|
cy.get("@query").its("response.body").should("not.be.empty")
|
|
cy.get("@query").its("response.body.rows").should("not.be.empty")
|
|
})
|
|
|
|
it("should add data to the previous query", () => {
|
|
// Add REST datasource - contains API for breweries
|
|
const datasource = "REST"
|
|
const restUrl = "https://api.openbrewerydb.org/breweries"
|
|
cy.selectExternalDatasource(datasource)
|
|
cy.createRestQuery("GET", restUrl, "/breweries")
|
|
cy.get(interact.SPECTRUM_TABS_ITEM).contains("Transformer").click()
|
|
// Get Transformer Function with Data from file
|
|
cy.readFile(
|
|
"cypress/support/queryLevelTransformerFunctionWithData.js"
|
|
).then(transformerFunction => {
|
|
//console.log(transformerFunction[1])
|
|
cy.get(interact.CODEMIRROR_TEXTAREA)
|
|
// Highlight current text and overwrite with file contents
|
|
.type(Cypress.platform === "darwin" ? "{cmd}a" : "{ctrl}a", {
|
|
force: true,
|
|
})
|
|
.type(transformerFunction, { parseSpecialCharSequences: false })
|
|
})
|
|
// Send Query
|
|
cy.intercept("**/queries/preview").as("query")
|
|
cy.get(interact.SPECTRUM_BUTTON).contains("Send").click({ force: true })
|
|
cy.wait("@query")
|
|
// Assert against Status Code, body, & body rows
|
|
cy.get("@query").its("response.statusCode").should("eq", 200)
|
|
cy.get("@query").its("response.body").should("not.be.empty")
|
|
cy.get("@query").its("response.body.rows").should("not.be.empty")
|
|
})
|
|
|
|
it("should run an invalid query within the transformer section", () => {
|
|
// Add REST datasource - contains API for breweries
|
|
const datasource = "REST"
|
|
const restUrl = "https://api.openbrewerydb.org/breweries"
|
|
cy.selectExternalDatasource(datasource)
|
|
cy.createRestQuery("GET", restUrl, "/breweries")
|
|
cy.get(interact.SPECTRUM_TABS_ITEM).contains("Transformer").click()
|
|
// Clear the code box and add "test"
|
|
cy.get(interact.CODEMIRROR_TEXTAREA)
|
|
.type(Cypress.platform === "darwin" ? "{cmd}a" : "{ctrl}a", {
|
|
force: true,
|
|
})
|
|
.type("test")
|
|
// Run Query and intercept
|
|
cy.intercept("**/preview").as("queryError")
|
|
cy.get(interact.SPECTRUM_BUTTON).contains("Send").click({ force: true })
|
|
cy.wait("@queryError")
|
|
cy.wait(500)
|
|
// Assert against message and status for the query error
|
|
cy.get("@queryError")
|
|
.its("response.body")
|
|
.should("have.property", "message", "test is not defined")
|
|
cy.get("@queryError")
|
|
.its("response.body")
|
|
.should("have.property", "status", 400)
|
|
})
|
|
|
|
xit("should run an invalid query via POST request", () => {
|
|
// POST request with transformer as null
|
|
cy.request({
|
|
method: "POST",
|
|
url: `${Cypress.config().baseUrl}/api/queries/`,
|
|
body: {
|
|
fields: { headers: {}, queryString: null, path: null },
|
|
parameters: [],
|
|
schema: {},
|
|
name: "test",
|
|
queryVerb: "read",
|
|
transformer: null,
|
|
datasourceId: "test",
|
|
},
|
|
// Expected 400 error - Transformer must be a string
|
|
failOnStatusCode: false,
|
|
}).then(response => {
|
|
expect(response.status).to.equal(400)
|
|
expect(response.body.message).to.include(
|
|
'Invalid body - "transformer" must be a string'
|
|
)
|
|
})
|
|
})
|
|
|
|
xit("should run an empty query", () => {
|
|
// POST request with Transformer as an empty string
|
|
cy.request({
|
|
method: "POST",
|
|
url: `${Cypress.config().baseUrl}/api/queries/preview`,
|
|
body: {
|
|
fields: { headers: {}, queryString: null, path: null },
|
|
queryVerb: "read",
|
|
transformer: "",
|
|
datasourceId: "test",
|
|
},
|
|
// Expected 400 error - Transformer is not allowed to be empty
|
|
failOnStatusCode: false,
|
|
}).then(response => {
|
|
expect(response.status).to.equal(400)
|
|
expect(response.body.message).to.include(
|
|
'Invalid body - "transformer" is not allowed to be empty'
|
|
)
|
|
})
|
|
})
|
|
})
|
|
})
|