18169: Post review changes, Cypress tests added
[arvados-workbench2.git] / cypress / support / commands.js
index 97bb2450909566ca0a964ffcc8edaa03adec28c9..07290e550aa3b6beceba61559a477216ef220435 100644 (file)
@@ -193,12 +193,12 @@ Cypress.Commands.add(
 )
 
 Cypress.Commands.add(
-    "editProjectOrCollection", (container, oldName, newName, newDescription, isProject = true) => {
+    "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]').type(newDescription);
+            cy.get(isProject ? 'div[contenteditable=true]' : 'input[name=description]').clear().type(newDescription);
             cy.get('[data-cy=form-submit-btn]').click();
         });
 
@@ -280,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