0
0
Fork 0
mirror of https://github.com/nextcloud/server.git synced 2025-02-07 09:59:46 +00:00
nextcloud_server/cypress/support/utils/assertions.ts
Ferdinand Thiessen 4a90d5328c
test: Add end-to-end tests for new public share Vue UI
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:48 +02:00

40 lines
1.3 KiB
TypeScript

/*!
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { ZipReader } from '@zip.js/zip.js'
/**
* Assert that a file contains a list of expected files
* @param expectedFiles List of expected filenames
* @example
* ```js
* cy.readFile('file', null, { ... })
* .should(zipFileContains(['file.txt']))
* ```
*/
export function zipFileContains(expectedFiles: string[]) {
return async (buffer: Buffer) => {
const blob = new Blob([buffer])
const zip = new ZipReader(blob.stream())
// check the real file names
const entries = (await zip.getEntries()).map((e) => e.filename).sort()
console.info('Zip contains entries:', entries)
expect(entries).to.deep.equal(expectedFiles.sort())
}
}
/**
* Check validity of an input element
* @param validity The expected validity message (empty string means it is valid)
* @example
* ```js
* cy.findByRole('textbox')
* .should(haveValidity(/must not be empty/i))
* ```
*/
export const haveValidity = (validity: string | RegExp) => {
if (typeof validity === 'string') {
return (el: JQuery<HTMLElement>) => expect((el.get(0) as HTMLInputElement).validationMessage).to.equal(validity)
}
return (el: JQuery<HTMLElement>) => expect((el.get(0) as HTMLInputElement).validationMessage).to.match(validity)
}