mirror of
https://github.com/nextcloud/server.git
synced 2026-02-20 00:12:30 -05:00
fix(files): Allow to copy or move file to folder with similar name
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This commit is contained in:
parent
b29c0cca24
commit
a289fdd2d7
2 changed files with 34 additions and 1 deletions
|
|
@ -89,8 +89,10 @@ export const handleCopyMoveNodeTo = async (node: Node, destination: Folder, meth
|
|||
* Do not allow as it would copy foo within itself
|
||||
* - node: /foo/bar.txt, destination: /foo
|
||||
* Allow copy a file to the same directory
|
||||
* - node: "/foo/bar", destination: "/foo/bar 1"
|
||||
* Allow to move or copy but we need to check with trailing / otherwise it would report false positive
|
||||
*/
|
||||
if (destination.path.startsWith(node.path)) {
|
||||
if (`${destination.path}/`.startsWith(`${node.path}/`)) {
|
||||
throw new Error(t('files', 'You cannot move a file/folder onto itself or into a subfolder of itself'))
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -100,6 +100,37 @@ describe('Files: Move or copy files', { testIsolation: true }, () => {
|
|||
getRowForFile('new-folder').should('not.exist')
|
||||
})
|
||||
|
||||
// This was a bug previously
|
||||
it('Can move a file to folder with similar name', () => {
|
||||
cy.uploadContent(currentUser, new Blob(), 'text/plain', '/original')
|
||||
.mkdir(currentUser, '/original folder')
|
||||
cy.login(currentUser)
|
||||
cy.visit('/apps/files')
|
||||
|
||||
// intercept the copy so we can wait for it
|
||||
cy.intercept('MOVE', /\/remote.php\/dav\/files\//).as('moveFile')
|
||||
|
||||
getRowForFile('original').should('be.visible')
|
||||
triggerActionForFile('original', 'move-copy')
|
||||
|
||||
// select new folder
|
||||
cy.get('.file-picker [data-filename="original folder"]').should('be.visible').click()
|
||||
// click copy
|
||||
cy.get('.file-picker').contains('button', 'Move to original folder').should('be.visible').click()
|
||||
|
||||
cy.wait('@moveFile')
|
||||
// wait until visible again
|
||||
getRowForFile('original folder').should('be.visible')
|
||||
|
||||
// original should be moved -> not exist anymore
|
||||
getRowForFile('original').should('not.exist')
|
||||
getRowForFile('original folder').should('be.visible').find('[data-cy-files-list-row-name-link]').click()
|
||||
|
||||
cy.url().should('contain', 'dir=/original%20folder')
|
||||
getRowForFile('original').should('be.visible')
|
||||
getRowForFile('original folder').should('not.exist')
|
||||
})
|
||||
|
||||
it('Can move a file to its parent folder', () => {
|
||||
cy.mkdir(currentUser, '/new-folder')
|
||||
cy.uploadContent(currentUser, new Blob(), 'text/plain', '/new-folder/original.txt')
|
||||
|
|
|
|||
Loading…
Reference in a new issue