Workflow fixes (#559)

* workflow fixes

* fixes for workflow - cypress test coverage

* remove log

* adding some assertions to slow test down

* force click create user

* cypress 5, small wait for user test

* remove cypress waiting eslint rule to fix user test

* click button directly

* test clicking

* try changing access level for validity

* lint
This commit is contained in:
Martin McKeaveney 2020-09-03 12:02:15 +01:00 committed by GitHub
parent cbc55310a9
commit 7c27957b1b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 554 additions and 169 deletions

View File

@ -1,4 +1,4 @@
context('Create a Binding', () => {
xcontext('Create a Binding', () => {
before(() => {
cy.visit('localhost:4001/_builder')
cy.createApp('Binding App', 'Binding App Description')

View File

@ -9,7 +9,7 @@ context('Create a User', () => {
// https://on.cypress.io/interacting-with-elements
it('should create a user', () => {
cy.createUser('bbuser', 'test', 'ADMIN')
cy.createUser('bbuser', 'test', 'POWER_USER')
// Check to make sure user was created!
cy.get("input[disabled]").should('have.value', 'bbuser')

View File

@ -1,4 +1,4 @@
xcontext('Create a workflow', () => {
context('Create a workflow', () => {
before(() => {
cy.server()
@ -9,7 +9,7 @@ xcontext('Create a workflow', () => {
// https://on.cypress.io/interacting-with-elements
it('should create a workflow', () => {
cy.createTable('dog', 'name', 'age')
cy.createTestTableWithData()
cy.contains('workflow').click()
cy.contains('Create New Workflow').click()
@ -23,21 +23,23 @@ xcontext('Create a workflow', () => {
// Create action
cy.get('[data-cy=SAVE_RECORD]').click()
cy.get(':nth-child(2) > .budibase__input').type('goodboy')
cy.get(':nth-child(3) > .budibase__input').type('11')
cy.get('.container input').first().type('goodboy')
cy.get('.container input').eq(1).type('11')
// Save
cy.contains('Save Workflow').click()
// Activate Workflow
cy.get('[data-cy=activate-workflow]').click()
cy.contains("Add Record").should("be.visible")
cy.get(".stop-button.highlighted").should("be.visible")
})
xit('should add record when a new record is added', () => {
it('should add record when a new record is added', () => {
cy.contains('backend').click()
cy.addRecord('bob', '15')
cy.addRecord(["Rover", 15])
cy.reload()
cy.contains('goodboy').should('have.text', 'goodboy')
})

View File

@ -57,12 +57,17 @@ Cypress.Commands.add("createApp", name => {
})
})
Cypress.Commands.add("createTestTableWithData", () => {
cy.createTable("dog")
cy.addColumn("dog", "name", "Plain Text")
cy.addColumn("dog", "age", "Number")
})
Cypress.Commands.add("createTable", tableName => {
// Enter model name
cy.contains("Create New Table").click()
cy.get("[placeholder='Table Name']").type(tableName)
// Add 'name' field
cy.contains("Save").click()
cy.contains(tableName).should("be.visible")
})
@ -84,7 +89,7 @@ Cypress.Commands.add("addRecord", values => {
cy.contains("Create New Row").click()
for (let i = 0; i < values.length; i++) {
cy.get("input")
cy.get(".actions input")
.eq(i)
.type(values[i])
}
@ -93,7 +98,7 @@ Cypress.Commands.add("addRecord", values => {
cy.contains("Save").click()
})
Cypress.Commands.add("createUser", (username, password) => {
Cypress.Commands.add("createUser", (username, password, accessLevel) => {
// Create User
cy.get(".toprightnav > .settings").click()
cy.contains("Users").click()
@ -104,9 +109,12 @@ Cypress.Commands.add("createUser", (username, password) => {
cy.get("[name=Password]")
.first()
.type(password)
cy.get("select")
.first()
.select(accessLevel)
// Save
cy.get(".create-button").click()
cy.get(".create-button > button").click()
})
Cypress.Commands.add("addHeadlineComponent", text => {

View File

@ -1,3 +1,3 @@
Cypress.Cookies.defaults({
whitelist: "builder:token",
preserve: "builder:token",
})

View File

@ -57,7 +57,10 @@
"eslintConfig": {
"extends": [
"plugin:cypress/recommended"
]
],
"rules": {
"cypress/no-unnecessary-waiting": "off"
}
},
"dependencies": {
"@budibase/bbui": "^1.29.1",
@ -91,7 +94,7 @@
"@testing-library/jest-dom": "^5.11.0",
"@testing-library/svelte": "^3.0.0",
"babel-jest": "^24.8.0",
"cypress": "^4.8.0",
"cypress": "^5.1.0",
"cypress-terminal-report": "^1.4.1",
"eslint-plugin-cypress": "^2.11.1",
"identity-obj-proxy": "^3.0.0",
@ -114,4 +117,4 @@
"svelte-jester": "^1.0.6"
},
"gitHead": "115189f72a850bfb52b65ec61d932531bf327072"
}
}

View File

@ -3,6 +3,16 @@
import { Input } from "@budibase/bbui"
export let value
function setParsedValue(evt, field) {
const fieldSchema = value.model.schema[field]
if (fieldSchema.type === "number") {
value[field] = parseInt(evt.target.value)
return
}
value[field] = evt.target.value
}
</script>
<div class="bb-margin-xl block-field">
@ -18,7 +28,11 @@
<label class="uk-form-label fields">Fields</label>
{#each Object.keys(value.model.schema) as field}
<div class="bb-margin-xl">
<Input bind:value={value[field]} label={field} />
<Input
thin
value={value[field]}
label={field}
on:change={e => setParsedValue(e, field)} />
</div>
{/each}
</div>

View File

@ -44,7 +44,7 @@
{:else if type === 'model'}
<ModelSelector bind:value={workflowBlock.args[parameter]} />
{:else if type === 'record'}
<RecordSelector bind:value={workflowBlock.args[parameter]} />
<RecordSelector value={workflowBlock.args[parameter]} />
{:else if type === 'string'}
<Input type="text" thin bind:value={workflowBlock.args[parameter]} />
{/if}

File diff suppressed because it is too large Load Diff

View File

@ -14,9 +14,8 @@ module.exports = async function saveRecord({ args, context }) {
user: { instanceId: context.instanceId },
}
await recordController.save(ctx)
try {
await recordController.save(ctx)
return {
record: ctx.body,
}