Merge branch '20029-collection-batch-file-operations' into main. Closes #20029 and...
[arvados-workbench2.git] / cypress / integration / delete-multiple-files.spec.js
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 describe('Multi-file deletion tests', function () {
6     let activeUser;
7     let adminUser;
8
9     before(function () {
10         cy.getUser('admin', 'Admin', 'User', true, true)
11             .as('adminUser').then(function () {
12                 adminUser = this.adminUser;
13             }
14             );
15         cy.getUser('collectionuser1', 'Collection', 'User', false, true)
16             .as('activeUser').then(function () {
17                 activeUser = this.activeUser;
18             }
19             );
20     });
21
22     beforeEach(function () {
23         cy.clearCookies();
24         cy.clearLocalStorage();
25     });
26
27     it('deletes all files from root dir', function () {
28         cy.createCollection(adminUser.token, {
29             name: `Test collection ${Math.floor(Math.random() * 999999)}`,
30             owner_uuid: activeUser.user.uuid,
31             manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:bar\n. 37b51d194a7513e45b56f6524f2d51f2+3 0:3:baz\n"
32         })
33             .as('testCollection').then(function () {
34                 cy.loginAs(activeUser);
35                 cy.goToPath(`/collections/${this.testCollection.uuid}`);
36
37                 cy.get('[data-cy=collection-files-panel]').within(() => {
38                     cy.get('[type="checkbox"]').first().check();
39                     cy.get('[type="checkbox"]').last().check();
40                 });
41                 cy.get('[data-cy=collection-files-panel-options-btn]').click();
42                 cy.get('[data-cy=context-menu] div').contains('Remove selected').click();
43                 cy.get('[data-cy=confirmation-dialog-ok-btn]').click();
44                 cy.wait(1000);
45                 cy.get('[data-cy=collection-files-panel]')
46                     .should('not.contain', 'baz')
47                     .and('not.contain', 'bar');
48             });
49     });
50
51     it.skip('deletes all files from non root dir', function () {
52         cy.createCollection(adminUser.token, {
53             name: `Test collection ${Math.floor(Math.random() * 999999)}`,
54             owner_uuid: activeUser.user.uuid,
55             manifest_text: "./subdir 37b51d194a7513e45b56f6524f2d51f2+3 0:3:foo\n. 37b51d194a7513e45b56f6524f2d51f2+3 0:3:baz\n"
56         })
57             .as('testCollection').then(function () {
58                 cy.loginAs(activeUser);
59                 cy.goToPath(`/collections/${this.testCollection.uuid}`);
60
61                 cy.get('[data-cy=virtual-file-tree] > div > i').first().click();
62                 cy.get('[data-cy=collection-files-panel]')
63                     .should('contain', 'foo');
64
65                 cy.get('[data-cy=collection-files-panel]')
66                     .contains('foo').closest('[data-cy=virtual-file-tree]').find('[type="checkbox"]').click();
67
68                 cy.get('[data-cy=collection-files-panel-options-btn]').click();
69                 cy.get('[data-cy=context-menu] div').contains('Remove selected').click();
70                 cy.get('[data-cy=confirmation-dialog-ok-btn]').click();
71
72                 cy.get('[data-cy=collection-files-panel]')
73                     .should('not.contain', 'subdir')
74                     .and('contain', 'baz');
75             });
76     });
77
78     it('deletes all files from non root dir', function () {
79         cy.createCollection(adminUser.token, {
80             name: `Test collection ${Math.floor(Math.random() * 999999)}`,
81             owner_uuid: activeUser.user.uuid,
82             manifest_text: "./subdir 37b51d194a7513e45b56f6524f2d51f2+3 0:3:foo\n. 37b51d194a7513e45b56f6524f2d51f2+3 0:3:baz\n"
83         })
84             .as('testCollection').then(function () {
85                 cy.loginAs(activeUser);
86                 cy.goToPath(`/collections/${this.testCollection.uuid}`);
87
88                 cy.get('[data-cy=collection-files-panel]').contains('subdir').click();
89                 cy.wait(1000);
90                 cy.get('[data-cy=collection-files-panel]')
91                     .should('contain', 'foo');
92
93                 cy.get('[data-cy=collection-files-panel]')
94                     .contains('foo').parent().find('[type="checkbox"]').click();
95
96                 cy.get('[data-cy=collection-files-panel-options-btn]').click();
97                 cy.get('[data-cy=context-menu] div').contains('Remove selected').click();
98                 cy.get('[data-cy=confirmation-dialog-ok-btn]').click();
99
100                 cy.get('[data-cy=collection-files-panel]')
101                     .should('not.contain', 'foo')
102                     .and('contain', 'subdir');
103             });
104     });
105 })