X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/b3e2b24542e19165a95f288a990ad308ace7426f..6e4b23e9a99ab64e25c60a128e6beb4fa8636374:/cypress/support/commands.js diff --git a/cypress/support/commands.js b/cypress/support/commands.js index dbb9cd0b..07290e55 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -192,6 +192,32 @@ Cypress.Commands.add( } ) +Cypress.Commands.add( + "testEditProjectOrCollection", (container, oldName, newName, newDescription, isProject = true) => { + cy.get(container).contains(oldName).rightclick(); + cy.get('[data-cy=context-menu]').contains(isProject ? 'Edit project' : 'Edit collection').click(); + cy.get('[data-cy=form-dialog]').within(() => { + cy.get('input[name=name]').clear().type(newName); + cy.get(isProject ? 'div[contenteditable=true]' : 'input[name=description]').clear().type(newDescription); + cy.get('[data-cy=form-submit-btn]').click(); + }); + + cy.get(container).contains(newName).rightclick(); + cy.get('[data-cy=context-menu]').contains(isProject ? 'Edit project' : 'Edit collection').click(); + cy.get('[data-cy=form-dialog]').within(() => { + cy.get('input[name=name]').should('have.value', newName); + + if (isProject) { + cy.get('span[data-text=true]').contains(newDescription); + } else { + cy.get('input[name=description]').should('have.value', newDescription); + } + + cy.get('[data-cy=form-cancel-btn]').click(); + }); + } +) + Cypress.Commands.add( "doSearch", (searchTerm) => { cy.get('[data-cy=searchbar-input-field]').type(`{selectall}${searchTerm}{enter}`); @@ -254,4 +280,42 @@ Cypress.Commands.add('createProject', ({ cy.addToFavorites(user.token, user.user.uuid, project.uuid); } }); -}); \ No newline at end of file +}); + +Cypress.Commands.add( + 'upload', + { + prevSubject: 'element', + }, + (subject, file, fileName) => { + cy.window().then(window => { + const blob = b64toBlob(file, '', 512); + const testFile = new window.File([blob], fileName); + + cy.wrap(subject).trigger('drop', { + dataTransfer: { files: [testFile] }, + }); + }) + } +) + +function b64toBlob(b64Data, contentType = '', sliceSize = 512) { + const byteCharacters = atob(b64Data) + const byteArrays = [] + + for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) { + const slice = byteCharacters.slice(offset, offset + sliceSize); + + const byteNumbers = new Array(slice.length); + for (let i = 0; i < slice.length; i++) { + byteNumbers[i] = slice.charCodeAt(i); + } + + const byteArray = new Uint8Array(byteNumbers); + + byteArrays.push(byteArray); + } + + const blob = new Blob(byteArrays, { type: contentType }); + return blob +} \ No newline at end of file