mirror of
https://gitlab.com/bramw/baserow.git
synced 2025-01-15 13:08:41 +00:00
237 lines
6.5 KiB
JavaScript
237 lines
6.5 KiB
JavaScript
import EditUserContext from '@baserow/modules/core/components/admin/users/contexts/EditUserContext'
|
|
import Error from '@baserow/modules/core/components/Error'
|
|
import ChangeUserPasswordModal from '@baserow/modules/core/components/admin/users/modals/ChangeUserPasswordModal'
|
|
import EditUserModal from '@baserow/modules/core/components/admin/users/modals/EditUserModal'
|
|
import CrudTableSearch from '@baserow/modules/core/components/crudTable/CrudTableSearch'
|
|
import DeleteUserModal from '@baserow/modules/core/components/admin/users/modals/DeleteUserModal'
|
|
|
|
export default class UserAdminUserHelpers {
|
|
constructor(userAdminComponent) {
|
|
this.c = userAdminComponent
|
|
}
|
|
|
|
findCells(numCellsExpected = 7) {
|
|
const cells = this.c.findAll('tbody .data-table__table-cell-content')
|
|
expect(cells.length).toBe(numCellsExpected)
|
|
return cells
|
|
}
|
|
|
|
findUsernameColumnCellsText() {
|
|
const cells = this.c.findAll('tbody .data-table__table-cell-content')
|
|
const usernameCells = []
|
|
const numRows = cells.length / 7
|
|
for (let i = 0; i < numRows; i++) {
|
|
usernameCells.push(
|
|
cells
|
|
.at(i * 7 + 0)
|
|
.find('.user-admin-username__name')
|
|
.text()
|
|
)
|
|
}
|
|
return usernameCells
|
|
}
|
|
|
|
getRow(cells, rowNumber) {
|
|
const offset = rowNumber * 7
|
|
return {
|
|
usernameCell: cells.at(offset),
|
|
nameCell: cells.at(offset + 1),
|
|
workspacesCell: cells.at(offset + 2),
|
|
lastLoginCell: cells.at(offset + 3),
|
|
signedUpCell: cells.at(offset + 4),
|
|
isActiveCell: cells.at(offset + 5),
|
|
moreCell: cells.at(offset + 6),
|
|
}
|
|
}
|
|
|
|
getSingleRowUsernameText() {
|
|
const cells = this.findCells()
|
|
const { usernameCell } = this.getRow(cells, 0)
|
|
return usernameCell.text()
|
|
}
|
|
|
|
getUsernameInitials(usernameCell) {
|
|
const initials = usernameCell.get('.user-admin-username__avatar')
|
|
return initials.text()
|
|
}
|
|
|
|
usernameCellIsForStaffMember(usernameCell) {
|
|
return usernameCell.find('.user-admin-username__icon').exists()
|
|
}
|
|
|
|
getWorkspaces(workspacesCell) {
|
|
return workspacesCell.findAll('.expand-overflow-list__item')
|
|
}
|
|
|
|
workspaceCellShowsThisUserIsWorkspaceAdmin(workspaceCell) {
|
|
return workspaceCell.find('.user-admin-group__icon').exists()
|
|
}
|
|
|
|
async openFirstUserActionsMenu() {
|
|
await this.c.get('.data-table__more').trigger('click')
|
|
return this.c.findComponent(EditUserContext)
|
|
}
|
|
|
|
clickDeleteUser(editUserContext) {
|
|
return editUserContext.find('.iconoir-bin').trigger('click')
|
|
}
|
|
|
|
clickDeactivateUser(editUserContext) {
|
|
return editUserContext.find('.iconoir-cancel').trigger('click')
|
|
}
|
|
|
|
clickActivateUser(editUserContext) {
|
|
return editUserContext.find('.iconoir-check').trigger('click')
|
|
}
|
|
|
|
clickEditUser(editUserContext) {
|
|
return editUserContext.find('.iconoir-edit-pencil').trigger('click')
|
|
}
|
|
|
|
clickChangeUserPassword(editUserContext) {
|
|
return editUserContext.find('.iconoir-key-alt').trigger('click')
|
|
}
|
|
|
|
async attemptToChangePasswordReturningModalError(password, repeatPassword) {
|
|
const changePasswordModal = await this.changePassword(
|
|
password,
|
|
repeatPassword
|
|
)
|
|
|
|
return this.getModalFieldErrorText(changePasswordModal)
|
|
}
|
|
|
|
getModalFieldErrorText(modal) {
|
|
return modal
|
|
.find('.control__messages--error')
|
|
.text()
|
|
.replace(/\n/gm, '')
|
|
.replace(/\s\s+/g, ' ')
|
|
}
|
|
|
|
async changePassword(password, repeatPassword) {
|
|
const editUserContext = await this.openFirstUserActionsMenu()
|
|
|
|
await this.clickChangeUserPassword(editUserContext)
|
|
|
|
const changePasswordModal = this.c.findComponent(ChangeUserPasswordModal)
|
|
const passwordInputs = changePasswordModal.findAll('input')
|
|
|
|
passwordInputs.at(0).element.value = password
|
|
await passwordInputs.at(0).trigger('input')
|
|
passwordInputs.at(1).element.value = repeatPassword
|
|
await passwordInputs.at(1).trigger('input')
|
|
|
|
await changePasswordModal.find('button').trigger('click')
|
|
|
|
return changePasswordModal
|
|
}
|
|
|
|
getErrorText(component) {
|
|
return component.findComponent(Error).find('.alert__message').text()
|
|
}
|
|
|
|
changeFullName(newFullName, options = {}) {
|
|
return this.changeUserEditField(newFullName, 0, options)
|
|
}
|
|
|
|
async getUserEditModalEmailField() {
|
|
const editUserContext = await this.openFirstUserActionsMenu()
|
|
|
|
await this.clickEditUser(editUserContext)
|
|
|
|
const editUserModal = this.c.findComponent(EditUserModal)
|
|
const userEditInputs = editUserModal.findAll('input')
|
|
|
|
return userEditInputs.at(1)
|
|
}
|
|
|
|
async changeUserEditField(
|
|
newValue,
|
|
inputIndex,
|
|
{ clickSave = true, exit = false } = {}
|
|
) {
|
|
const editUserContext = await this.openFirstUserActionsMenu()
|
|
|
|
await this.clickEditUser(editUserContext)
|
|
|
|
const editUserModal = this.c.findComponent(EditUserModal)
|
|
const userEditInputs = editUserModal.findAll('input')
|
|
|
|
userEditInputs.at(inputIndex).element.value = newValue
|
|
await userEditInputs.at(inputIndex).trigger('input')
|
|
|
|
await editUserModal.find('button').trigger('click')
|
|
|
|
if (exit) {
|
|
await editUserModal.find('.modal__close').trigger('click')
|
|
}
|
|
|
|
return editUserModal
|
|
}
|
|
|
|
async changeUserCheckbox(checkboxIndex) {
|
|
const editUserContext = await this.openFirstUserActionsMenu()
|
|
|
|
await this.clickEditUser(editUserContext)
|
|
|
|
const editUserModal = this.c.findComponent(EditUserModal)
|
|
const checkboxes = editUserModal.findAll('.checkbox')
|
|
|
|
checkboxes.at(checkboxIndex).trigger('click')
|
|
|
|
await editUserModal.find('button').trigger('click')
|
|
|
|
return editUserModal
|
|
}
|
|
|
|
changeEmail(newEmail, options) {
|
|
return this.changeUserEditField(newEmail, 1, options)
|
|
}
|
|
|
|
toggleIsStaff() {
|
|
return this.changeUserCheckbox(1)
|
|
}
|
|
|
|
toggleIsActive() {
|
|
return this.changeUserCheckbox(0)
|
|
}
|
|
|
|
clickNextPage() {
|
|
return this.c.find('.iconoir-nav-arrow-right').trigger('click')
|
|
}
|
|
|
|
clickPrevPage() {
|
|
return this.c.find('.iconoir-nav-arrow-left').trigger('click')
|
|
}
|
|
|
|
async typeIntoSearchBox(searchText) {
|
|
const searchBox = this.c.findComponent(CrudTableSearch)
|
|
const searchInput = searchBox.find('input')
|
|
searchInput.element.value = searchText
|
|
await searchInput.trigger('input')
|
|
await searchInput.trigger('keyup')
|
|
}
|
|
|
|
clickUsernameHeader() {
|
|
return this.clickHeaderAt(0)
|
|
}
|
|
|
|
clickFullnameHeader() {
|
|
return this.clickHeaderAt(1)
|
|
}
|
|
|
|
clickHeaderAt(index) {
|
|
return this.c
|
|
.findAll('.data-table__table-cell-head-link')
|
|
.at(index)
|
|
.trigger('click')
|
|
}
|
|
|
|
async clickConfirmDeleteUserInModal() {
|
|
await this.c
|
|
.findComponent(DeleteUserModal)
|
|
.find('.button--danger')
|
|
.trigger('click')
|
|
}
|
|
}
|