summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Ng <chrng8@gmail.com>2023-11-15 17:12:56 -0800
committerChristopher Ng <chrng8@gmail.com>2023-11-15 18:34:14 -0800
commit470f825f8b464ddf2c09746c7e82f48985071187 (patch)
tree2f528312df482d220c4e3ebe7d892a3bfa82acfd
parent3354b6ba7cb84beeeff61c5e83b938d408fcf2e5 (diff)
downloadnextcloud-server-470f825f8b464ddf2c09746c7e82f48985071187.tar.gz
nextcloud-server-470f825f8b464ddf2c09746c7e82f48985071187.zip
test(systemtags): Admin system tags form
Signed-off-by: Christopher Ng <chrng8@gmail.com>
-rw-r--r--cypress/e2e/settings/systemtags.cy.ts138
1 files changed, 138 insertions, 0 deletions
diff --git a/cypress/e2e/settings/systemtags.cy.ts b/cypress/e2e/settings/systemtags.cy.ts
new file mode 100644
index 00000000000..3c9a8b25cf4
--- /dev/null
+++ b/cypress/e2e/settings/systemtags.cy.ts
@@ -0,0 +1,138 @@
+/**
+ * @copyright 2023 Christopher Ng <chrng8@gmail.com>
+ *
+ * @author Christopher Ng <chrng8@gmail.com>
+ *
+ * @license AGPL-3.0-or-later
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+import { User } from '@nextcloud/cypress'
+
+const admin = new User('admin', 'admin')
+
+const tagName = 'foo'
+const updatedTagName = 'bar'
+
+describe('Create system tags', () => {
+ before(() => {
+ cy.login(admin)
+ cy.visit('/settings/admin')
+ })
+
+ it('Can create a tag', () => {
+ cy.get('input#system-tag-name').should('exist').and('have.value', '')
+ cy.get('input#system-tag-name').type(tagName)
+ cy.get('input#system-tag-name').should('have.value', tagName)
+ // submit the form
+ cy.get('input#system-tag-name').type('{enter}')
+
+ // see that the created tag is in the list
+ cy.get('input#system-tags-input').focus()
+ cy.get('input#system-tags-input').invoke('attr', 'aria-controls').then(id => {
+ cy.get(`ul#${id}`).within(() => {
+ cy.contains('li', tagName).should('exist')
+ // ensure only one tag exists
+ cy.get('li').should('have.length', 1)
+ })
+ })
+ })
+})
+
+describe('Update system tags', { testIsolation: false }, () => {
+ before(() => {
+ cy.login(admin)
+ cy.visit('/settings/admin')
+ })
+
+ it('select the tag', () => {
+ // select the tag to edit
+ cy.get('input#system-tags-input').focus()
+ cy.get('input#system-tags-input').invoke('attr', 'aria-controls').then(id => {
+ cy.get(`ul#${id}`).within(() => {
+ cy.contains('li', tagName).should('exist').click()
+ })
+ })
+ // see that the tag name matches the selected tag
+ cy.get('input#system-tag-name').should('exist').and('have.value', tagName)
+ // see that the tag level matches the selected tag
+ cy.get('input#system-tag-level').click()
+ cy.get('input#system-tag-level').siblings('.vs__selected').contains('Public').should('exist')
+ })
+
+ it('update the tag name and level', () => {
+ cy.get('input#system-tag-name').clear()
+ cy.get('input#system-tag-name').type(updatedTagName)
+ cy.get('input#system-tag-name').should('have.value', updatedTagName)
+ // select the new tag level
+ cy.get('input#system-tag-level').focus()
+ cy.get('input#system-tag-level').invoke('attr', 'aria-controls').then(id => {
+ cy.get(`ul#${id}`).within(() => {
+ cy.contains('li', 'Invisible').should('exist').click()
+ })
+ })
+ // submit the form
+ cy.get('input#system-tag-name').type('{enter}')
+ })
+
+ it('see the tag was successfully updated', () => {
+ cy.get('input#system-tags-input').focus()
+ cy.get('input#system-tags-input').invoke('attr', 'aria-controls').then(id => {
+ cy.get(`ul#${id}`).within(() => {
+ cy.contains('li', `${updatedTagName} (invisible)`).should('exist')
+ // ensure only one tag exists
+ cy.get('li').should('have.length', 1)
+ })
+ })
+ })
+})
+
+describe('Delete system tags', { testIsolation: false }, () => {
+ before(() => {
+ cy.login(admin)
+ cy.visit('/settings/admin')
+ })
+
+ it('select the tag', () => {
+ // select the tag to edit
+ cy.get('input#system-tags-input').focus()
+ cy.get('input#system-tags-input').invoke('attr', 'aria-controls').then(id => {
+ cy.get(`ul#${id}`).within(() => {
+ cy.contains('li', `${updatedTagName} (invisible)`).should('exist').click()
+ })
+ })
+ // see that the tag name matches the selected tag
+ cy.get('input#system-tag-name').should('exist').and('have.value', updatedTagName)
+ // see that the tag level matches the selected tag
+ cy.get('input#system-tag-level').focus()
+ cy.get('input#system-tag-level').siblings('.vs__selected').contains('Invisible').should('exist')
+ })
+
+ it('can delete the tag', () => {
+ cy.get('.system-tag-form__row').within(() => {
+ cy.contains('button', 'Delete').should('be.enabled').click()
+ })
+ })
+
+ it('see that the deleted tag is not present', () => {
+ cy.get('input#system-tags-input').focus()
+ cy.get('input#system-tags-input').invoke('attr', 'aria-controls').then(id => {
+ cy.get(`ul#${id}`).within(() => {
+ cy.contains('li', updatedTagName).should('not.exist')
+ })
+ })
+ })
+})