0
0
Fork 0
mirror of https://github.com/nextcloud/server.git synced 2025-05-22 05:51:35 +00:00
nextcloud_server/cypress/e2e/files_sharing/share-status-action.cy.ts

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

129 lines
3.2 KiB
TypeScript
Raw Permalink Normal View History

/*!
* 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')
})
})
})