mirror of
https://github.com/nextcloud/server.git
synced 2025-05-02 04:50:37 +00:00

Remove some hacks from files app about the *files_sharing* status action, in general not sure why this hack was there instead of being in the correct app - but it broke the grid view. So now the sharing information is also available in grid view. Moreover the icon is fixed in size to not overflow the actions menu. Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
128 lines
3.2 KiB
TypeScript
128 lines
3.2 KiB
TypeScript
/*!
|
|
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
|
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
*/
|
|
import type { User } from '@nextcloud/cypress'
|
|
import { createShare } from './FilesSharingUtils.ts'
|
|
import { closeSidebar, enableGridMode, getActionButtonForFile, getRowForFile } from '../files/FilesUtils.ts'
|
|
|
|
describe('files_sharing: Sharing status action', { testIsolation: true }, () => {
|
|
/**
|
|
* Regression test of https://github.com/nextcloud/server/issues/45723
|
|
*/
|
|
it('No "shared" tag when user ID is purely numerical but there are no shares', () => {
|
|
const user = {
|
|
language: 'en',
|
|
password: 'test1234',
|
|
userId: String(Math.floor(Math.random() * 1000)),
|
|
} as User
|
|
cy.createUser(user)
|
|
cy.mkdir(user, '/folder')
|
|
cy.login(user)
|
|
|
|
cy.visit('/apps/files')
|
|
|
|
getRowForFile('folder')
|
|
.should('be.visible')
|
|
.find('[data-cy-files-list-row-actions]')
|
|
.findByRole('button', { name: 'Shared' })
|
|
.should('not.exist')
|
|
})
|
|
|
|
it('Render quick option for sharing', () => {
|
|
cy.createRandomUser().then((user) => {
|
|
cy.mkdir(user, '/folder')
|
|
cy.login(user)
|
|
|
|
cy.visit('/apps/files')
|
|
})
|
|
|
|
getRowForFile('folder')
|
|
.should('be.visible')
|
|
.find('[data-cy-files-list-row-actions]')
|
|
.findByRole('button', { name: /Show sharing options/ })
|
|
.should('be.visible')
|
|
.click()
|
|
|
|
// check the click opened the sidebar
|
|
cy.get('[data-cy-sidebar]')
|
|
.should('be.visible')
|
|
// and ensure the sharing tab is selected
|
|
.findByRole('tab', { name: 'Sharing', selected: true })
|
|
.should('exist')
|
|
})
|
|
|
|
describe('Sharing inline status action handling', () => {
|
|
let user: User
|
|
let sharee: User
|
|
|
|
before(() => {
|
|
cy.createRandomUser().then(($user) => {
|
|
sharee = $user
|
|
})
|
|
cy.createRandomUser().then(($user) => {
|
|
user = $user
|
|
cy.mkdir(user, '/folder')
|
|
cy.login(user)
|
|
|
|
cy.visit('/apps/files')
|
|
getRowForFile('folder').should('be.visible')
|
|
|
|
createShare('folder', sharee.userId)
|
|
closeSidebar()
|
|
})
|
|
cy.logout()
|
|
})
|
|
|
|
it('Render inline status action for sharer', () => {
|
|
cy.login(user)
|
|
cy.visit('/apps/files')
|
|
|
|
getRowForFile('folder')
|
|
.should('be.visible')
|
|
.find('[data-cy-files-list-row-actions]')
|
|
.findByRole('button', { name: /^Shared with/i })
|
|
.should('be.visible')
|
|
})
|
|
|
|
it('Render status action in gridview for sharer', () => {
|
|
cy.login(user)
|
|
cy.visit('/apps/files')
|
|
enableGridMode()
|
|
|
|
getRowForFile('folder')
|
|
.should('be.visible')
|
|
getActionButtonForFile('folder')
|
|
.click()
|
|
cy.findByRole('menu')
|
|
.findByRole('menuitem', { name: /shared with/i })
|
|
.should('be.visible')
|
|
})
|
|
|
|
it('Render inline status action for sharee', () => {
|
|
cy.login(sharee)
|
|
cy.visit('/apps/files')
|
|
|
|
getRowForFile('folder')
|
|
.should('be.visible')
|
|
.find('[data-cy-files-list-row-actions]')
|
|
.findByRole('button', { name: `Shared by ${user.userId}` })
|
|
.should('be.visible')
|
|
})
|
|
|
|
it('Render status action in grid view for sharee', () => {
|
|
cy.login(sharee)
|
|
cy.visit('/apps/files')
|
|
|
|
enableGridMode()
|
|
|
|
getRowForFile('folder')
|
|
.should('be.visible')
|
|
getActionButtonForFile('folder')
|
|
.click()
|
|
cy.findByRole('menu')
|
|
.findByRole('menuitem', { name: `Shared by ${user.userId}` })
|
|
.should('be.visible')
|
|
})
|
|
})
|
|
})
|