X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/fc02bef10c31adcad5ef912979d43a56dc9741ad..b4f14437823e9201e9cd952a4f6f3b1502b583bd:/cypress/integration/collection.spec.js diff --git a/cypress/integration/collection.spec.js b/cypress/integration/collection.spec.js index 1a66600c8a..69e484173f 100644 --- a/cypress/integration/collection.spec.js +++ b/cypress/integration/collection.spec.js @@ -389,6 +389,7 @@ describe('Collection panel tests', function () { 'table%&?*2', 'bar' // make sure we can go back to the original name as a last step ]; + cy.intercept({method: 'PUT', url: '**/arvados/v1/collections/*'}).as('renameRequest'); eachPair(names, (from, to) => { cy.waitForDom().get('[data-cy=collection-files-panel]') .contains(`${from}`).rightclick(); @@ -403,6 +404,7 @@ describe('Collection panel tests', function () { .type(to, { parseSpecialCharSequences: false }); }); cy.get('[data-cy=form-submit-btn]').click(); + cy.wait('@renameRequest'); cy.get('[data-cy=collection-files-panel]') .should('not.contain', `${from}`) .and('contain', `${to}`); @@ -813,7 +815,7 @@ describe('Collection panel tests', function () { cy.get('[data-cy=collection-version-browser-select-1]') .should('contain', '1') .and('contain', '6 B') - .and('contain', adminUser.user.uuid); + .and('contain', adminUser.user.full_name); // Version 2: 3 bytes in size (one file removed) cy.get('[data-cy=collection-version-browser-select-2]') .should('contain', '2') @@ -874,6 +876,7 @@ describe('Collection panel tests', function () { .should('contain', '3').and('contain', '3 B'); // Check context menus on version browser + cy.waitForDom(); cy.get('[data-cy=collection-version-browser-select-3]').rightclick() cy.get('[data-cy=context-menu]') .should('contain', 'Add to favorites') @@ -905,7 +908,7 @@ describe('Collection panel tests', function () { }); }); - it('creates collection from selected files of another collection', () => { + it('copies selected files into new collection', () => { cy.createCollection(adminUser.token, { name: `Test Collection ${Math.floor(Math.random() * 999999)}`, owner_uuid: activeUser.user.uuid, @@ -922,7 +925,7 @@ describe('Collection panel tests', function () { }); cy.get('[data-cy=collection-files-panel-options-btn]').click(); - cy.get('[data-cy=context-menu]').contains('Create a new collection with selected').click(); + cy.get('[data-cy=context-menu]').contains('Copy selected into new collection').click(); cy.get('[data-cy=form-dialog]').contains('Projects').click(); @@ -930,7 +933,203 @@ describe('Collection panel tests', function () { cy.waitForDom().get('.layout-pane-primary', { timeout: 12000 }).contains('Projects').click(); - cy.get('main').contains(`Files extracted from: ${this.collection.name}`).should('exist'); + cy.waitForDom().get('main').contains(`Files extracted from: ${this.collection.name}`).click(); + cy.get('[data-cy=collection-files-panel]') + .and('contain', 'bar'); + }); + }); + + it('copies selected files into existing collection', () => { + cy.createCollection(adminUser.token, { + name: `Test Collection ${Math.floor(Math.random() * 999999)}`, + owner_uuid: activeUser.user.uuid, + preserve_version: true, + manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:foo 0:3:bar\n" + }).as('sourceCollection') + + cy.createCollection(adminUser.token, { + name: `Destination Collection ${Math.floor(Math.random() * 999999)}`, + owner_uuid: activeUser.user.uuid, + preserve_version: true, + manifest_text: "" + }).as('destinationCollection'); + + cy.getAll('@sourceCollection', '@destinationCollection').then(function ([sourceCollection, destinationCollection]) { + // Visit collection, check basic information + cy.loginAs(activeUser) + cy.goToPath(`/collections/${sourceCollection.uuid}`); + + cy.get('[data-cy=collection-files-panel]').within(() => { + cy.get('input[type=checkbox]').first().click(); + }); + + cy.get('[data-cy=collection-files-panel-options-btn]').click(); + cy.get('[data-cy=context-menu]').contains('Copy selected into existing collection').click(); + + cy.get('[data-cy=form-dialog]').contains(destinationCollection.name).click(); + + cy.get('[data-cy=form-submit-btn]').click(); + cy.wait(2000); + + cy.goToPath(`/collections/${destinationCollection.uuid}`); + + cy.get('main').contains(destinationCollection.name).should('exist'); + cy.get('[data-cy=collection-files-panel]') + .and('contain', 'bar'); + }); + }); + + it('copies selected files into separate collections', () => { + cy.createCollection(adminUser.token, { + name: `Test Collection ${Math.floor(Math.random() * 999999)}`, + owner_uuid: activeUser.user.uuid, + preserve_version: true, + manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:foo 0:3:bar\n" + }).as('sourceCollection') + + cy.getAll('@sourceCollection').then(function ([sourceCollection]) { + // Visit collection, check basic information + cy.loginAs(activeUser) + cy.goToPath(`/collections/${sourceCollection.uuid}`); + + // Select both files + cy.waitForDom().get('[data-cy=collection-files-panel]').within(() => { + cy.get('input[type=checkbox]').first().click(); + cy.get('input[type=checkbox]').last().click(); + }); + + // Copy to separate collections + cy.get('[data-cy=collection-files-panel-options-btn]').click(); + cy.get('[data-cy=context-menu]').contains('Copy selected into separate collections').click(); + cy.get('[data-cy=form-dialog]').contains('Projects').click(); + cy.get('[data-cy=form-submit-btn]').click(); + + // Verify created collections + cy.waitForDom().get('.layout-pane-primary', { timeout: 12000 }).contains('Projects').click(); + cy.get('main').contains(`File copied from collection ${sourceCollection.name}/foo`).click(); + cy.get('[data-cy=collection-files-panel]') + .and('contain', 'foo'); + cy.get('.layout-pane-primary').contains('Projects').click(); + cy.get('main').contains(`File copied from collection ${sourceCollection.name}/bar`).click(); + cy.get('[data-cy=collection-files-panel]') + .and('contain', 'bar'); + + // Verify separate collection menu items not present when single file selected + // Wait for dom for collection to re-render + cy.waitForDom().get('[data-cy=collection-files-panel]').within(() => { + cy.get('input[type=checkbox]').first().click(); + }); + cy.get('[data-cy=collection-files-panel-options-btn]').click(); + cy.get('[data-cy=context-menu]').should('not.contain', 'Copy selected into separate collections'); + cy.get('[data-cy=context-menu]').should('not.contain', 'Move selected into separate collections'); + }); + }); + + it('moves selected files into new collection', () => { + cy.createCollection(adminUser.token, { + name: `Test Collection ${Math.floor(Math.random() * 999999)}`, + owner_uuid: activeUser.user.uuid, + preserve_version: true, + manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:foo 0:3:bar\n" + }) + .as('collection').then(function () { + // Visit collection, check basic information + cy.loginAs(activeUser) + cy.goToPath(`/collections/${this.collection.uuid}`); + + cy.get('[data-cy=collection-files-panel]').within(() => { + cy.get('input[type=checkbox]').first().click(); + }); + + cy.get('[data-cy=collection-files-panel-options-btn]').click(); + cy.get('[data-cy=context-menu]').contains('Move selected into new collection').click(); + + cy.get('[data-cy=form-dialog]').contains('Projects').click(); + + cy.get('[data-cy=form-submit-btn]').click(); + + cy.waitForDom().get('.layout-pane-primary', { timeout: 12000 }).contains('Projects').click(); + + cy.get('main').contains(`Files moved from: ${this.collection.name}`).click(); + cy.get('[data-cy=collection-files-panel]') + .and('contain', 'bar'); + }); + }); + + it('moves selected files into existing collection', () => { + cy.createCollection(adminUser.token, { + name: `Test Collection ${Math.floor(Math.random() * 999999)}`, + owner_uuid: activeUser.user.uuid, + preserve_version: true, + manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:foo 0:3:bar\n" + }).as('sourceCollection') + + cy.createCollection(adminUser.token, { + name: `Destination Collection ${Math.floor(Math.random() * 999999)}`, + owner_uuid: activeUser.user.uuid, + preserve_version: true, + manifest_text: "" + }).as('destinationCollection'); + + cy.getAll('@sourceCollection', '@destinationCollection').then(function ([sourceCollection, destinationCollection]) { + // Visit collection, check basic information + cy.loginAs(activeUser) + cy.goToPath(`/collections/${sourceCollection.uuid}`); + + cy.get('[data-cy=collection-files-panel]').within(() => { + cy.get('input[type=checkbox]').first().click(); + }); + + cy.get('[data-cy=collection-files-panel-options-btn]').click(); + cy.get('[data-cy=context-menu]').contains('Move selected into existing collection').click(); + + cy.get('[data-cy=form-dialog]').contains(destinationCollection.name).click(); + + cy.get('[data-cy=form-submit-btn]').click(); + cy.wait(2000); + + cy.goToPath(`/collections/${destinationCollection.uuid}`); + + cy.get('main').contains(destinationCollection.name).should('exist'); + cy.get('[data-cy=collection-files-panel]') + .and('contain', 'bar'); + }); + }); + + it('moves selected files into separate collections', () => { + cy.createCollection(adminUser.token, { + name: `Test Collection ${Math.floor(Math.random() * 999999)}`, + owner_uuid: activeUser.user.uuid, + preserve_version: true, + manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:foo 0:3:bar\n" + }).as('sourceCollection') + + cy.getAll('@sourceCollection').then(function ([sourceCollection]) { + // Visit collection, check basic information + cy.loginAs(activeUser) + cy.goToPath(`/collections/${sourceCollection.uuid}`); + + // Select both files + cy.get('[data-cy=collection-files-panel]').within(() => { + cy.get('input[type=checkbox]').first().click(); + cy.get('input[type=checkbox]').last().click(); + }); + + // Copy to separate collections + cy.get('[data-cy=collection-files-panel-options-btn]').click(); + cy.get('[data-cy=context-menu]').contains('Move selected into separate collections').click(); + cy.get('[data-cy=form-dialog]').contains('Projects').click(); + cy.get('[data-cy=form-submit-btn]').click(); + + // Verify created collections + cy.waitForDom().get('.layout-pane-primary', { timeout: 12000 }).contains('Projects').click(); + cy.get('main').contains(`File moved from collection ${sourceCollection.name}/foo`).click(); + cy.get('[data-cy=collection-files-panel]') + .and('contain', 'foo'); + cy.get('.layout-pane-primary').contains('Projects').click(); + cy.get('main').contains(`File moved from collection ${sourceCollection.name}/bar`).click(); + cy.get('[data-cy=collection-files-panel]') + .and('contain', 'bar'); }); });