Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>pull/54820/head
parent
74804b612c
commit
e925dbbd0d
@ -0,0 +1,72 @@ |
||||
/*! |
||||
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors |
||||
* SPDX-License-Identifier: AGPL-3.0-or-later |
||||
*/ |
||||
|
||||
import type { User } from '@nextcloud/cypress' |
||||
|
||||
import { randomBytes } from 'crypto' |
||||
import { closeSidebar, getRowForFile, getRowForFileId, triggerActionForFile } from '../files/FilesUtils.ts' |
||||
|
||||
describe('Systemtags: Files view', { testIsolation: true }, () => { |
||||
let user: User |
||||
|
||||
beforeEach(() => cy.createRandomUser().then(($user) => { |
||||
user = $user |
||||
|
||||
cy.mkdir(user, '/folder') |
||||
cy.uploadContent(user, new Blob([]), 'text/plain', '/file.txt') |
||||
cy.login(user) |
||||
cy.visit('/apps/files') |
||||
})) |
||||
|
||||
it('See first assigned tag in the file list', () => { |
||||
const tag = randomBytes(8).toString('base64') |
||||
let tagId |
||||
|
||||
// Tag the file
|
||||
tagNode(tag, 'folder') |
||||
.then((id) => { tagId = id }) |
||||
|
||||
// open the tags view
|
||||
cy.visit('/apps/files/tags').then(() => { |
||||
// see the tag
|
||||
getRowForFileId(tagId).should('be.visible') |
||||
getRowForFile('folder').should('not.exist') |
||||
getRowForFile('file.txt').should('not.exist') |
||||
|
||||
// see that the tag has its content
|
||||
getRowForFileId(tagId).find('[data-cy-files-list-row-name-link]').click() |
||||
getRowForFile('folder').should('be.visible') |
||||
getRowForFile('file.txt').should('not.exist') |
||||
}) |
||||
}) |
||||
}) |
||||
|
||||
function getCollaborativeTagsInput(): Cypress.Chainable<JQuery<HTMLElement>> { |
||||
return cy.get('[data-cy-sidebar]') |
||||
.findByRole('combobox', { name: /collaborative tags/i }) |
||||
.should('be.visible') |
||||
.should('not.have.attr', 'disabled', { timeout: 5000 }) |
||||
} |
||||
|
||||
function tagNode(tag: string, node: string): Cypress.Chainable<number> { |
||||
getRowForFile(node).should('be.visible') |
||||
|
||||
triggerActionForFile(node, 'details') |
||||
cy.get('[data-cy-sidebar]') |
||||
.should('be.visible') |
||||
.findByRole('button', { name: 'Actions' }) |
||||
.should('be.visible') |
||||
.click() |
||||
cy.findByRole('menuitem', { name: 'Tags' }) |
||||
.should('be.visible') |
||||
.click() |
||||
cy.intercept('PUT', '**/remote.php/dav/systemtags-relations/files/**').as('assignTag') |
||||
getCollaborativeTagsInput() |
||||
.type(`{selectAll}${tag}{enter}`) |
||||
cy.wait('@assignTag') |
||||
closeSidebar() |
||||
return cy.get('@assignTag') |
||||
.then(({ request }) => request.body.id) |
||||
} |
Loading…
Reference in new issue