"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();
cy.get("[data-cy=context-menu]").contains("Rename").click();
cy.get("input").type("{selectall}{backspace}").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}`);
});
});
});
});
+ it("renames a file to a different directory", function () {
+ // Creates the collection using the admin token so we can set up
+ // a bogus manifest text without block signatures.
+ cy.createCollection(adminUser.token, {
+ name: `Test collection ${Math.floor(Math.random() * 999999)}`,
+ owner_uuid: activeUser.user.uuid,
+ manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:bar\n",
+ })
+ .as("testCollection")
+ .then(function () {
+ cy.loginAs(activeUser);
+ cy.goToPath(`/collections/${this.testCollection.uuid}`);
+
+ ["subdir", "G%C3%BCnter's%20file", "table%&?*2"].forEach(subdir => {
+ cy.waitForDom().get("[data-cy=collection-files-panel]").contains("bar").rightclick();
+ cy.get("[data-cy=context-menu]").contains("Rename").click();
+ cy.get("[data-cy=form-dialog]")
+ .should("contain", "Rename")
+ .within(() => {
+ cy.get("input").type(`{selectall}{backspace}${subdir}/foo`);
+ });
+ cy.get("[data-cy=form-submit-btn]").click();
+ cy.get("[data-cy=collection-files-panel]").should("not.contain", "bar").and("contain", subdir);
+ cy.get("[data-cy=collection-files-panel]").contains(subdir).click();
+
+ // Rename 'subdir/foo' to 'bar'
+ cy.wait(1000);
+ cy.get("[data-cy=collection-files-panel]").contains("foo").rightclick();
+ cy.get("[data-cy=context-menu]").contains("Rename").click();
+ cy.get("[data-cy=form-dialog]")
+ .should("contain", "Rename")
+ .within(() => {
+ cy.get("input").should("have.value", `${subdir}/foo`).type(`{selectall}{backspace}bar`);
+ });
+ cy.get("[data-cy=form-submit-btn]").click();
+
+ // need to wait for dialog to dismiss
+ cy.get("[data-cy=form-dialog]").should("not.exist");
+
+ cy.waitForDom().get("[data-cy=collection-files-panel]").contains("Home").click();
+
+ cy.wait(2000);
+ cy.get("[data-cy=collection-files-panel]")
+ .should("contain", subdir) // empty dir kept
+ .and("contain", "bar");
+
+ cy.get("[data-cy=collection-files-panel]").contains(subdir).rightclick();
+ cy.get("[data-cy=context-menu]").contains("Remove").click();
+ cy.get("[data-cy=confirmation-dialog-ok-btn]").click();
+ cy.get("[data-cy=form-dialog]").should("not.exist");
+ });
+ });
+ });
+
it("shows collection owner", () => {
cy.createCollection(adminUser.token, {
name: `Test collection ${Math.floor(Math.random() * 999999)}`,
cy.get("[data-cy=collection-version-browser-select-3]").should("contain", "3").and("contain", "3 B");
// Check context menus on version browser
- cy.get("[data-cy=collection-version-browser-select-3]").rightclick({ force: true });
+ cy.waitForDom();
+ cy.get("[data-cy=collection-version-browser-select-3]").rightclick();
cy.get("[data-cy=context-menu]")
.should("contain", "Add to favorites")
.and("contain", "Make a copy")
});
});
- 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,
+ 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("Copy 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.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,
});
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("Move selected into new collection").click();
cy.get("[data-cy=form-dialog]").contains("Projects").click();
cy.waitForDom().get(".layout-pane-primary", { timeout: 12000 }).contains("Projects").click();
- cy.get("main").contains(`Files extracted from: ${this.collection.name}`).should("exist");
+ 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");
+ });
});
it("creates new collection with properties on home project", function () {