diff --git a/cypress/e2e/albums.cy.js b/cypress/e2e/albums.cy.js index 53bc32b7b..044776f82 100644 --- a/cypress/e2e/albums.cy.js +++ b/cypress/e2e/albums.cy.js @@ -99,4 +99,36 @@ describe('Manage albums', () => { cy.downloadSelection() cy.unselectMedia([1, 2]) }) + + it('Edit an album\'s name', () => { + cy.get('[aria-label="Open actions menu"]').click() + cy.contains('Edit album details').click() + cy.get('form [name="name"]').clear().type("New name") + cy.contains('Save').click() + + cy.reload() + + cy.contains('New name') + + cy.get('[aria-label="Open actions menu"]').click() + cy.contains('Edit album details').click() + cy.get('form [name="name"]').clear().type("albums_test") + cy.contains('Save').click() + }) + + it('Edit an album\'s location', () => { + cy.get('[aria-label="Open actions menu"]').click() + cy.contains('Edit album details').click() + cy.get('form [name="location"]').clear().type("New location") + cy.contains('Save').click() + + cy.reload() + + cy.contains('New location') + + cy.get('[aria-label="Open actions menu"]').click() + cy.contains('Edit album details').click() + cy.get('form [name="location"]').clear() + cy.contains('Save').click() + }) }) diff --git a/cypress/e2e/shared_albums.cy.js b/cypress/e2e/shared_albums.cy.js index 9619cfdfd..283974bad 100644 --- a/cypress/e2e/shared_albums.cy.js +++ b/cypress/e2e/shared_albums.cy.js @@ -20,8 +20,10 @@ * */ import { randHash } from '../utils' + const randUser = randHash() const randUser2 = randHash() +const randUser3 = randHash() const resizeObserverLoopErrRe = /^[^(ResizeObserver loop limit exceeded)]/ Cypress.on('uncaught:exception', (err) => { @@ -34,112 +36,154 @@ Cypress.on('uncaught:exception', (err) => { describe('Manage shared albums', () => { before(() => { cy.logout() + cy.nextcloudCreateUser(randUser, 'password') cy.nextcloudCreateUser(randUser2, 'password') - - cy.login(randUser, 'password') - cy.visit(`${Cypress.env('baseUrl')}/index.php/apps/photos/albums`) - cy.createAnAlbumFromAlbums('shared_album_test1') - cy.addCollaborators([randUser2]) - cy.visit(`${Cypress.env('baseUrl')}/index.php/apps/photos/albums`) - cy.createAnAlbumFromAlbums('shared_album_test2') - cy.addCollaborators([randUser2]) - cy.visit(`${Cypress.env('baseUrl')}/index.php/apps/photos/albums`) - cy.createAnAlbumFromAlbums('shared_album_test3') - cy.addCollaborators([randUser2]) - cy.visit(`${Cypress.env('baseUrl')}/index.php/apps/photos/albums`) - cy.createAnAlbumFromAlbums('shared_album_test4') - cy.addCollaborators([randUser2]) - cy.logout() + cy.nextcloudCreateUser(randUser3, 'password') cy.login(randUser2, 'password') cy.uploadTestMedia() - cy.visit(`${Cypress.env('baseUrl')}/index.php/apps/photos/sharedalbums`) - cy.goToSharedAlbum('shared_album_test2') - cy.addFilesToAlbumFromAlbum('shared_album_test2', [0, 1, 2]) - - // wait a bit for things to be settled - cy.wait(1000) + cy.logout() }) beforeEach(() => { + cy.logout() + cy.login(randUser2, 'password') cy.visit(`${Cypress.env('baseUrl')}/index.php/apps/photos/sharedalbums`) }) - it('Add and remove a file to a shared album from a shared album', () => { - cy.goToSharedAlbum('shared_album_test1') - cy.get('[data-test="media"]').should('have.length', 0) - cy.addFilesToAlbumFromAlbum('shared_album_test1', [0]) - cy.get('[data-test="media"]').should('have.length', 1) - cy.selectMedia([0]) - cy.removeSelectionFromAlbum() - cy.get('[data-test="media"]').should('have.length', 0) - }) - - it('Add and remove multiple files to a shared album from a shared album', () => { - cy.goToSharedAlbum('shared_album_test1') - cy.get('[data-test="media"]').should('have.length', 0) - cy.addFilesToAlbumFromAlbum('shared_album_test1', [1, 2]) - cy.get('[data-test="media"]').should('have.length', 2) - cy.selectMedia([0, 1]) - cy.removeSelectionFromAlbum() - cy.get('[data-test="media"]').should('have.length', 0) - }) - - it('Download a file from a shared album', () => { - cy.goToSharedAlbum('shared_album_test2') - cy.selectMedia([0]) - cy.downloadSelection() - cy.unselectMedia([0]) - }) - - it('Download multiple files from a shared album', () => { - cy.goToSharedAlbum('shared_album_test2') - cy.selectMedia([1, 2]) - cy.downloadSelection() - cy.unselectMedia([1, 2]) + context('Adding and removing files in a shared album', () => { + before(() => { + cy.logout() + cy.login(randUser, 'password') + cy.visit(`${Cypress.env('baseUrl')}/index.php/apps/photos/albums`) + cy.createAnAlbumFromAlbums('shared_album_test1') + cy.addCollaborators([randUser2]) + cy.logout() + }) + + it('Add and remove a file to a shared album from a shared album', () => { + cy.goToSharedAlbum('shared_album_test1') + cy.get('[data-test="media"]').should('have.length', 0) + cy.addFilesToAlbumFromAlbum('shared_album_test1', [0]) + cy.get('[data-test="media"]').should('have.length', 1) + cy.selectMedia([0]) + cy.removeSelectionFromAlbum() + cy.get('[data-test="media"]').should('have.length', 0) + }) + + it('Add and remove multiple files to a shared album from a shared album', () => { + cy.goToSharedAlbum('shared_album_test1') + cy.get('[data-test="media"]').should('have.length', 0) + cy.addFilesToAlbumFromAlbum('shared_album_test1', [1, 2]) + cy.get('[data-test="media"]').should('have.length', 2) + cy.selectMedia([0, 1]) + cy.removeSelectionFromAlbum() + cy.get('[data-test="media"]').should('have.length', 0) + }) }) - it('Download all files from a shared album', () => { - cy.goToSharedAlbum('shared_album_test2') - cy.downloadAllFiles() + context('Download files from a shared album', () => { + before(() => { + cy.logout() + cy.login(randUser, 'password') + cy.visit(`${Cypress.env('baseUrl')}/index.php/apps/photos/albums`) + cy.createAnAlbumFromAlbums('shared_album_test2') + cy.addCollaborators([randUser2]) + cy.logout() + + cy.login(randUser2, 'password') + cy.visit(`${Cypress.env('baseUrl')}/index.php/apps/photos/sharedalbums`) + cy.goToSharedAlbum('shared_album_test2') + cy.addFilesToAlbumFromAlbum('shared_album_test2', [0, 1, 2]) + cy.logout() + }) + + it('Download a file from a shared album', () => { + cy.goToSharedAlbum('shared_album_test2') + cy.selectMedia([0]) + cy.downloadSelection() + cy.unselectMedia([0]) + }) + + it('Download multiple files from a shared album', () => { + cy.goToSharedAlbum('shared_album_test2') + cy.selectMedia([1, 2]) + cy.downloadSelection() + cy.unselectMedia([1, 2]) + }) + + it('Download all files from a shared album', () => { + cy.goToSharedAlbum('shared_album_test2') + cy.downloadAllFiles() + }) }) - it('Remove a file from a shared album', () => { - cy.goToSharedAlbum('shared_album_test2') - cy.get('[data-test="media"]').should('have.length', 3) - cy.goToSharedAlbum('shared_album_test2') - cy.selectMedia([0]) - cy.removeSelectionFromAlbum() - cy.get('[data-test="media"]').should('have.length', 2) + context('Delete a received shared album', () => { + before(() => { + cy.logout() + cy.login(randUser, 'password') + cy.visit(`${Cypress.env('baseUrl')}/index.php/apps/photos/albums`) + cy.createAnAlbumFromAlbums('shared_album_test3') + cy.addCollaborators([randUser2]) + cy.logout() + }) + + it('Remove shared album', () => { + cy.goToSharedAlbum('shared_album_test3') + cy.removeSharedAlbums() + }) }) - it('Remove multiple files from a shared album', () => { - cy.goToSharedAlbum('shared_album_test2') - cy.get('[data-test="media"]').should('have.length', 2) - cy.goToSharedAlbum('shared_album_test2') - cy.selectMedia([0, 1]) - cy.removeSelectionFromAlbum() - cy.get('[data-test="media"]').should('have.length', 0) + context('Remove a collaborator from an album', () => { + before(() => { + cy.logout() + cy.login(randUser, 'password') + cy.visit(`${Cypress.env('baseUrl')}/index.php/apps/photos/albums`) + cy.createAnAlbumFromAlbums('shared_album_test4') + cy.addCollaborators([randUser2]) + cy.logout() + }) + + it('Remove collaborator from an album', () => { + cy.get('ul.collections__list li').should('have.length', 4) + + cy.logout() + cy.login(randUser, 'password') + cy.visit(`${Cypress.env('baseUrl')}/index.php/apps/photos`) + cy.goToAlbum('shared_album_test4') + cy.removeCollaborators([randUser2]) + cy.logout() + + cy.login(randUser2, 'password') + cy.visit(`${Cypress.env('baseUrl')}/index.php/apps/photos/sharedalbums`) + + cy.get('ul.collections__list li').should('have.length', 3) + }) }) - xit('Remove shared album', () => { - cy.goToSharedAlbum('shared_album_test3') - cy.removeSharedAlbums() - }) - - xit('Remove collaborator from an album', () => { - cy.get('[data-test="media"]').should('have.length', 4) - - cy.logout() - cy.login(randUser, 'password') - cy.goToAlbum('shared_album_test4') - cy.removeCollaborators([randUser2]) - cy.logout() - - cy.login(randUser2, 'password') - cy.visit(`${Cypress.env('baseUrl')}/index.php/apps/photos/sharedalbums`) - - cy.get('ul.collections__list li').should('have.length', 3) + context('Two shared albums with the same name', () => { + before(() => { + cy.logout() + cy.login(randUser, 'password') + cy.visit(`${Cypress.env('baseUrl')}/index.php/apps/photos/albums`) + cy.createAnAlbumFromAlbums('shared_album_test5') + cy.addCollaborators([randUser2]) + cy.logout() + + cy.login(randUser3, 'password') + cy.visit(`${Cypress.env('baseUrl')}/index.php/apps/photos/albums`) + cy.createAnAlbumFromAlbums('shared_album_test5') + cy.addCollaborators([randUser2]) + cy.logout() + }) + + + it('It should display two shared albums', () => { + cy.get('ul.collections__list li') + .contains(`shared_album_test5 (${randUser})`) + cy.get('ul.collections__list li') + .contains(`shared_album_test5 (${randUser3})`) + }) }) }) \ No newline at end of file diff --git a/cypress/support/commands.js b/cypress/support/commands.js index d1eed57cc..aa4828f3a 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -232,13 +232,18 @@ Cypress.Commands.add('addCollaborators', collaborators => { Cypress.Commands.add('removeCollaborators', collaborators => { cy.get('[aria-label="Manage collaborators for this album"]').click() collaborators.forEach((collaborator) => { - cy.get('[aria-label="Search for collaborators"').type(collaborator) - cy.contains(collaborator).click() + cy.get('.manage-collaborators') + .within(() => { + cy.contains(collaborator) + .parentsUntil('ul') + .get(`[aria-label="Remove ${collaborator} from the collaborators list"]`) + .click() + }) }) cy.contains('Save').click() }) -Cypress.Commands.add('removeSharedAlbums', collaborators => { +Cypress.Commands.add('removeSharedAlbums', () => { cy.get('[aria-label="Open actions menu"]').click() - cy.contains("Remove selection from album").click() + cy.contains("Delete album").click() }) diff --git a/lib/Album/AlbumMapper.php b/lib/Album/AlbumMapper.php index d3e882046..827b8c802 100644 --- a/lib/Album/AlbumMapper.php +++ b/lib/Album/AlbumMapper.php @@ -364,11 +364,11 @@ public function getSharedAlbumsForCollaboratorWithFiles(string $collaboratorId, if ($row['fileid']) { $mimeId = $row['mimetype']; $mimeType = $this->mimeTypeLoader->getMimetypeById($mimeId); - $filesByAlbum[$albumId][] = new AlbumFile((int)$row['fileid'], $row['file_name'], $mimeType, (int)$row['size'], (int)$row['mtime'], $row['etag'], (int)$row['added'], $row['owner']); + $filesByAlbum[$albumId][] = new AlbumFile((int)$row['fileid'], $row['album_name'].' ('.$row['album_user'].')', $mimeType, (int)$row['size'], (int)$row['mtime'], $row['etag'], (int)$row['added'], $row['owner']); } if (!isset($albumsById[$albumId])) { - $albumsById[$albumId] = new AlbumInfo($albumId, $row['album_user'], $row['album_name'], $row['location'], (int)$row['created'], (int)$row['last_added_photo']); + $albumsById[$albumId] = new AlbumInfo($albumId, $row['album_user'], $row['album_name'].' ('.$row['album_user'].')', $row['location'], (int)$row['created'], (int)$row['last_added_photo']); } } @@ -419,7 +419,7 @@ public function getAlbumForCollaboratorIdAndFileId(string $collaboratorId, int $ return new AlbumInfo( (int)$row['album_id'], $row['user'], - $row['name'], + $row['name'].' ('.$row['user'].')', $row['location'], (int)$row['created'], (int)$row['last_added_photo'] diff --git a/src/components/Albums/CollaboratorsSelectionForm.vue b/src/components/Albums/CollaboratorsSelectionForm.vue index f1f46734b..9cc02afea 100644 --- a/src/components/Albums/CollaboratorsSelectionForm.vue +++ b/src/components/Albums/CollaboratorsSelectionForm.vue @@ -45,7 +45,7 @@ -