Skip to content
Snippets Groups Projects
Commit f3ec1baa authored by piotr.kupczyk@id.ethz.ch's avatar piotr.kupczyk@id.ethz.ch
Browse files

SSDM-13191 : New Navigation - migrate Admin UI from old component to new...

SSDM-13191 : New Navigation - migrate Admin UI from old component to new component - remove old users browser and fix the tests
parent eb0f2aa7
No related branches found
No related tags found
1 merge request!40SSDM-13578 : 2PT : Database and V3 Implementation - include the new AFS "free"...
Showing
with 314 additions and 563 deletions
......@@ -2,7 +2,7 @@ import React from 'react'
import { withStyles } from '@material-ui/core/styles'
import Content from '@src/js/components/common/content/Content.jsx'
import ContentTab from '@src/js/components/common/content/ContentTab.jsx'
import UserBrowser from '@src/js/components/users/browser2/UserBrowser.jsx'
import UserBrowser from '@src/js/components/users/browser/UserBrowser.jsx'
import UserSearch from '@src/js/components/users/search/UserSearch.jsx'
import UserForm from '@src/js/components/users/form/user/UserForm.jsx'
import UserGroupForm from '@src/js/components/users/form/usergroup/UserGroupForm.jsx'
......
import _ from 'lodash'
import React from 'react'
import Browser from '@src/js/components/common/browser/Browser.jsx'
import autoBind from 'auto-bind'
import BrowserWithOpenbis from '@src/js/components/common/browser2/BrowserWithOpenbis.jsx'
import BrowserButtonsAddRemove from '@src/js/components/common/browser2/BrowserButtonsAddRemove.jsx'
import UserBrowserController from '@src/js/components/users/browser/UserBrowserController.js'
import AppController from '@src/js/components/AppController.js'
import pages from '@src/js/common/consts/pages.js'
import ids from '@src/js/common/consts/ids.js'
import logger from '@src/js/common/logger.js'
class UserBrowser extends React.Component {
export class UserBrowser extends React.Component {
constructor(props) {
super(props)
autoBind(this)
this.controller = this.props.controller || new UserBrowserController()
}
componentDidMount() {
this.componentDidUpdate({})
}
componentDidUpdate(prevProps) {
if (!_.isEqual(this.props.selectedObject, prevProps.selectedObject)) {
this.controller.selectObject(this.props.selectedObject)
}
if (
!_.isEqual(
this.props.lastObjectModifications,
prevProps.lastObjectModifications
)
) {
this.controller.reload(this.props.lastObjectModifications)
}
}
render() {
logger.log(logger.DEBUG, 'UserBrowser.render')
return <Browser controller={this.controller} />
return (
<BrowserWithOpenbis
id={ids.USER_BROWSER_ID}
controller={this.controller}
renderFooter={this.renderFooter}
onSelectedChange={selectedObject => {
if (selectedObject) {
AppController.getInstance().objectOpen(
pages.USERS,
selectedObject.type,
selectedObject.id
)
}
}}
/>
)
}
renderFooter() {
return (
<div>
<BrowserButtonsAddRemove
selectedObject={this.controller.getSelectedObject()}
addEnabled={this.controller.canAddNode()}
removeEnabled={this.controller.canRemoveNode()}
onAdd={this.controller.addNode}
onRemove={this.controller.removeNode}
/>
</div>
)
}
}
export default UserBrowser
export default AppController.getInstance().withState(() => ({
selectedObject: AppController.getInstance().getSelectedObject(pages.USERS),
lastObjectModifications:
AppController.getInstance().getLastObjectModifications()
}))(UserBrowser)
import openbis from '@src/js/services/openbis.js'
import pages from '@src/js/common/consts/pages.js'
import objectType from '@src/js/common/consts/objectType.js'
import objectOperation from '@src/js/common/consts/objectOperation.js'
import BrowserController from '@src/js/components/common/browser/BrowserController.js'
import AppController from '@src/js/components/AppController.js'
import messages from '@src/js/common/messages.js'
import BrowserController from '@src/js/components/common/browser2/BrowserController.js'
import UserBrowserControllerLoadNodePath from '@src/js/components/users/browser/UserBrowserControllerLoadNodePath.js'
import UserBrowserControllerLoadNodes from '@src/js/components/users/browser/UserBrowserControllerLoadNodes.js'
import UserBrowserControllerAddNode from '@src/js/components/users/browser/UserBrowserControllerAddNode.js'
import UserBrowserControllerRemoveNode from '@src/js/components/users/browser/UserBrowserControllerRemoveNode.js'
import UserBrowserControllerReload from '@src/js/components/users/browser/UserBrowserControllerReload.js'
export default class UserBrowserController extends BrowserController {
doGetPage() {
return pages.USERS
async doLoadNodePath(params) {
return await new UserBrowserControllerLoadNodePath().doLoadNodePath(params)
}
async doLoadNodes() {
return Promise.all([
openbis.searchPersons(
new openbis.PersonSearchCriteria(),
new openbis.PersonFetchOptions()
),
openbis.searchAuthorizationGroups(
new openbis.AuthorizationGroupSearchCriteria(),
new openbis.AuthorizationGroupFetchOptions()
)
]).then(([users, groups]) => {
const userNodes = users.getObjects().map(user => {
return {
id: `users/${user.userId}`,
text: user.userId,
object: { type: objectType.USER, id: user.userId },
canMatchFilter: true,
canRemove: true
}
})
const groupNodes = groups.getObjects().map(group => {
return {
id: `groups/${group.code}`,
text: group.code,
object: { type: objectType.USER_GROUP, id: group.code },
canMatchFilter: true,
canRemove: true
}
})
let nodes = [
{
id: 'users',
text: messages.get(messages.USERS),
object: { type: objectType.OVERVIEW, id: objectType.USER },
children: userNodes,
childrenType: objectType.NEW_USER,
canAdd: true
},
{
id: 'groups',
text: messages.get(messages.GROUPS),
object: { type: objectType.OVERVIEW, id: objectType.USER_GROUP },
children: groupNodes,
childrenType: objectType.NEW_USER_GROUP,
canAdd: true
}
]
return nodes
})
async doLoadNodes(params) {
return await new UserBrowserControllerLoadNodes().doLoadNodes(params)
}
doNodeAdd(node) {
if (node && node.childrenType) {
AppController.getInstance().objectNew(this.getPage(), node.childrenType)
}
}
doNodeRemove(node) {
if (!node.object) {
return Promise.resolve()
}
const { type, id } = node.object
const reason = 'deleted via ng_ui'
return this._prepareRemoveOperations(type, id, reason)
.then(operations => {
const options = new openbis.SynchronousOperationExecutionOptions()
options.setExecuteInOrder(true)
return openbis.executeOperations(operations, options)
})
.then(() => {
AppController.getInstance().objectDelete(this.getPage(), type, id)
})
.catch(error => {
if (
error &&
error.message &&
error.message.startsWith('Could not commit Hibernate transaction')
) {
AppController.getInstance().errorChange(
messages.get(
messages.USERS_WHO_REGISTERED_SOME_DATA_CANNOT_BE_REMOVED
)
)
} else {
AppController.getInstance().errorChange(error)
}
})
async reload(objectModifications) {
new UserBrowserControllerReload(this).reload(objectModifications)
}
_prepareRemoveOperations(type, id, reason) {
if (type === objectType.USER_GROUP) {
return this._prepareRemoveUserGroupOperations(id, reason)
} else if (type === objectType.USER) {
return this._prepareRemoveUserOperations(id, reason)
} else {
throw new Error('Unsupported type: ' + type)
}
canAddNode() {
return new UserBrowserControllerAddNode().canAddNode(
this.getSelectedObject()
)
}
_prepareRemoveUserGroupOperations(id, reason) {
const options = new openbis.AuthorizationGroupDeletionOptions()
options.setReason(reason)
return Promise.resolve([
new openbis.DeleteAuthorizationGroupsOperation(
[new openbis.AuthorizationGroupPermId(id)],
options
)
])
async addNode() {
await new UserBrowserControllerAddNode().doAddNode(this.getSelectedObject())
}
_prepareRemoveUserOperations(id, reason) {
const options = new openbis.PersonDeletionOptions()
options.setReason(reason)
return Promise.resolve([
new openbis.DeletePersonsOperation(
[new openbis.PersonPermId(id)],
options
)
])
canRemoveNode() {
return new UserBrowserControllerRemoveNode().canRemoveNode(
this.getSelectedObject()
)
}
doGetObservedModifications() {
return {
[objectType.USER]: [objectOperation.CREATE, objectOperation.DELETE],
[objectType.USER_GROUP]: [objectOperation.CREATE, objectOperation.DELETE]
}
async removeNode() {
await new UserBrowserControllerRemoveNode().doRemoveNode(
this.getSelectedObject()
)
}
}
import UserBrowserConsts from '@src/js/components/users/browser2/UserBrowserConsts.js'
import UserBrowserConsts from '@src/js/components/users/browser/UserBrowserConsts.js'
import openbis from '@src/js/services/openbis.js'
import objectType from '@src/js/common/consts/objectType.js'
......
import _ from 'lodash'
import UserBrowserConsts from '@src/js/components/users/browser2/UserBrowserConsts.js'
import UserBrowserConsts from '@src/js/components/users/browser/UserBrowserConsts.js'
import openbis from '@src/js/services/openbis.js'
import objectType from '@src/js/common/consts/objectType.js'
import messages from '@src/js/common/messages.js'
......
import _ from 'lodash'
import React from 'react'
import autoBind from 'auto-bind'
import BrowserWithOpenbis from '@src/js/components/common/browser2/BrowserWithOpenbis.jsx'
import BrowserButtonsAddRemove from '@src/js/components/common/browser2/BrowserButtonsAddRemove.jsx'
import UserBrowserController from '@src/js/components/users/browser2/UserBrowserController.js'
import AppController from '@src/js/components/AppController.js'
import pages from '@src/js/common/consts/pages.js'
import ids from '@src/js/common/consts/ids.js'
import logger from '@src/js/common/logger.js'
export class UserBrowser extends React.Component {
constructor(props) {
super(props)
autoBind(this)
this.controller = this.props.controller || new UserBrowserController()
}
componentDidMount() {
this.componentDidUpdate({})
}
componentDidUpdate(prevProps) {
if (!_.isEqual(this.props.selectedObject, prevProps.selectedObject)) {
this.controller.selectObject(this.props.selectedObject)
}
if (
!_.isEqual(
this.props.lastObjectModifications,
prevProps.lastObjectModifications
)
) {
this.controller.reload(this.props.lastObjectModifications)
}
}
render() {
logger.log(logger.DEBUG, 'UserBrowser.render')
return (
<BrowserWithOpenbis
id={ids.USER_BROWSER_ID}
controller={this.controller}
renderFooter={this.renderFooter}
onSelectedChange={selectedObject => {
if (selectedObject) {
AppController.getInstance().objectOpen(
pages.USERS,
selectedObject.type,
selectedObject.id
)
}
}}
/>
)
}
renderFooter() {
return (
<div>
<BrowserButtonsAddRemove
selectedObject={this.controller.getSelectedObject()}
addEnabled={this.controller.canAddNode()}
removeEnabled={this.controller.canRemoveNode()}
onAdd={this.controller.addNode}
onRemove={this.controller.removeNode}
/>
</div>
)
}
}
export default AppController.getInstance().withState(() => ({
selectedObject: AppController.getInstance().getSelectedObject(pages.USERS),
lastObjectModifications:
AppController.getInstance().getLastObjectModifications()
}))(UserBrowser)
import BrowserController from '@src/js/components/common/browser2/BrowserController.js'
import UserBrowserControllerLoadNodePath from '@src/js/components/users/browser2/UserBrowserControllerLoadNodePath.js'
import UserBrowserControllerLoadNodes from '@src/js/components/users/browser2/UserBrowserControllerLoadNodes.js'
import UserBrowserControllerAddNode from '@src/js/components/users/browser2/UserBrowserControllerAddNode.js'
import UserBrowserControllerRemoveNode from '@src/js/components/users/browser2/UserBrowserControllerRemoveNode.js'
import UserBrowserControllerReload from '@src/js/components/users/browser2/UserBrowserControllerReload.js'
export default class UserBrowserController extends BrowserController {
async doLoadNodePath(params) {
return await new UserBrowserControllerLoadNodePath().doLoadNodePath(params)
}
async doLoadNodes(params) {
return await new UserBrowserControllerLoadNodes().doLoadNodes(params)
}
async reload(objectModifications) {
new UserBrowserControllerReload(this).reload(objectModifications)
}
canAddNode() {
return new UserBrowserControllerAddNode().canAddNode(
this.getSelectedObject()
)
}
async addNode() {
await new UserBrowserControllerAddNode().doAddNode(this.getSelectedObject())
}
canRemoveNode() {
return new UserBrowserControllerRemoveNode().canRemoveNode(
this.getSelectedObject()
)
}
async removeNode() {
await new UserBrowserControllerRemoveNode().doRemoveNode(
this.getSelectedObject()
)
}
}
import UserBrowserComponentTest from '@srcTest/js/components/users/browser/UserBrowserComponentTest.js'
import fixture from '@srcTest/js/common/fixture.js'
let common = null
beforeEach(() => {
common = new UserBrowserComponentTest()
common.beforeEach()
})
describe(UserBrowserComponentTest.SUITE, () => {
test('filter', testFilter)
})
async function testFilter() {
const browser = await common.mount()
browser.getFilter().change(fixture.ANOTHER_USER_GROUP_DTO.code.toUpperCase())
await browser.update()
browser.expectJSON({
filter: {
value: fixture.ANOTHER_USER_GROUP_DTO.code.toUpperCase()
},
nodes: [
{ level: 0, text: 'Groups' },
{ level: 1, text: fixture.ANOTHER_USER_GROUP_DTO.code }
]
})
browser.getFilter().getClearIcon().click()
await browser.update()
browser.expectJSON({
filter: {
value: null
},
nodes: [
{ level: 0, text: 'Users' },
{ level: 1, text: fixture.ANOTHER_USER_DTO.userId },
{ level: 1, text: fixture.TEST_USER_DTO.userId },
{ level: 0, text: 'Groups' },
{ level: 1, text: fixture.ALL_USERS_GROUP_DTO.code },
{ level: 1, text: fixture.ANOTHER_USER_GROUP_DTO.code },
{ level: 1, text: fixture.TEST_USER_GROUP_DTO.code }
]
})
}
import UserBrowserConsts from '@src/js/components/users/browser/UserBrowserConsts.js'
import UserBrowserControllerTest from '@srcTest/js/components/users/browser/UserBrowserControllerTest.js'
import objectType from '@src/js/common/consts/objectType.js'
import openbis from '@srcTest/js/services/openbis.js'
import fixture from '@srcTest/js/common/fixture.js'
......@@ -18,33 +20,43 @@ async function testExpandAndCollapseNode() {
openbis.mockSearchGroups([fixture.TEST_USER_GROUP_DTO])
await common.controller.load()
common.controller.nodeExpand('groups')
expect(common.controller.getNodes()).toMatchObject([
{
text: 'Users',
expanded: false,
selected: false
},
{
text: 'Groups',
expanded: true,
selected: false
}
])
common.controller.nodeCollapse('groups')
expect(common.controller.getNodes()).toMatchObject([
{
text: 'Users',
expanded: false,
selected: false
},
{
text: 'Groups',
expanded: false,
selected: false
}
])
await common.controller.expandNode(
UserBrowserConsts.nodeId(UserBrowserConsts.TYPE_ROOT, objectType.USER_GROUP)
)
expect(common.controller.getTree()).toMatchObject({
id: 'root',
children: [
{
text: 'Users',
expanded: false,
selected: false
},
{
text: 'Groups',
expanded: true,
selected: false
}
]
})
await common.controller.collapseNode(
UserBrowserConsts.nodeId(UserBrowserConsts.TYPE_ROOT, objectType.USER_GROUP)
)
expect(common.controller.getTree()).toMatchObject({
id: 'root',
children: [
{
text: 'Users',
expanded: false,
selected: false
},
{
text: 'Groups',
expanded: false,
selected: false
}
]
})
}
import UserBrowserControllerTest from '@srcTest/js/components/users/browser/UserBrowserControllerTest.js'
import openbis from '@srcTest/js/services/openbis.js'
import fixture from '@srcTest/js/common/fixture.js'
let common = null
beforeEach(() => {
common = new UserBrowserControllerTest()
common.beforeEach()
})
describe(UserBrowserControllerTest.SUITE, () => {
test('filter', testFilter)
})
async function testFilter() {
openbis.mockSearchPersons([fixture.TEST_USER_DTO, fixture.ANOTHER_USER_DTO])
openbis.mockSearchGroups([
fixture.TEST_USER_GROUP_DTO,
fixture.ANOTHER_USER_GROUP_DTO,
fixture.ALL_USERS_GROUP_DTO
])
await common.controller.load()
common.controller.filterChange('ANOTHER')
expect(common.controller.getNodes()).toMatchObject([
{
text: 'Users',
expanded: true,
selected: false,
children: [
{
text: fixture.ANOTHER_USER_DTO.userId,
expanded: false,
selected: false
}
]
},
{
text: 'Groups',
expanded: true,
selected: false,
children: [
{
text: fixture.ANOTHER_USER_GROUP_DTO.code,
expanded: false,
selected: false
}
]
}
])
}
......@@ -23,16 +23,19 @@ async function testLoad() {
await common.controller.load()
expect(common.controller.getNodes()).toMatchObject([
{
text: 'Users',
expanded: false,
selected: false
},
{
text: 'Groups',
expanded: false,
selected: false
}
])
expect(common.controller.getTree()).toMatchObject({
id: 'root',
children: [
{
text: 'Users',
expanded: false,
selected: false
},
{
text: 'Groups',
expanded: false,
selected: false
}
]
})
}
import UserBrowserControllerTest from '@srcTest/js/components/users/browser/UserBrowserControllerTest.js'
import objectType from '@src/js/common/consts/objectType.js'
import openbis from '@srcTest/js/services/openbis.js'
import fixture from '@srcTest/js/common/fixture.js'
......@@ -24,96 +25,107 @@ async function testSelectNode() {
])
await common.controller.load()
common.controller.nodeSelect('users/' + fixture.TEST_USER_DTO.userId)
expect(common.controller.getNodes()).toMatchObject([
{
text: 'Users',
expanded: false,
selected: false,
children: [
{
text: fixture.ANOTHER_USER_DTO.userId,
expanded: false,
selected: false
},
{
text: fixture.TEST_USER_DTO.userId,
expanded: false,
selected: true
}
]
},
{
text: 'Groups',
expanded: false,
selected: false,
children: [
{
text: fixture.ALL_USERS_GROUP_DTO.code,
expanded: false,
selected: false
},
{
text: fixture.ANOTHER_USER_GROUP_DTO.code,
expanded: false,
selected: false
},
{
text: fixture.TEST_USER_GROUP_DTO.code,
expanded: false,
selected: false
}
]
}
])
common.expectOpenUserAction(fixture.TEST_USER_DTO.userId)
common.controller.nodeSelect('groups/' + fixture.ANOTHER_USER_GROUP_DTO.code)
expect(common.controller.getNodes()).toMatchObject([
{
text: 'Users',
expanded: false,
selected: false,
children: [
{
text: fixture.ANOTHER_USER_DTO.userId,
expanded: false,
selected: false
},
{
text: fixture.TEST_USER_DTO.userId,
expanded: false,
selected: false
}
]
},
{
text: 'Groups',
expanded: false,
selected: false,
children: [
{
text: fixture.ALL_USERS_GROUP_DTO.code,
expanded: false,
selected: false
},
{
text: fixture.ANOTHER_USER_GROUP_DTO.code,
expanded: false,
selected: true
},
{
text: fixture.TEST_USER_GROUP_DTO.code,
expanded: false,
selected: false
}
]
}
])
common.expectOpenGroupAction(fixture.ANOTHER_USER_GROUP_DTO.code)
await common.controller.changeAutoShowSelectedObject()
await common.controller.selectObject({
type: objectType.USER,
id: fixture.TEST_USER_DTO.userId
})
expect(common.controller.getTree()).toMatchObject({
id: 'root',
children: [
{
text: 'Users',
expanded: false,
selected: false,
children: [
{
text: fixture.ANOTHER_USER_DTO.userId,
expanded: false,
selected: false
},
{
text: fixture.TEST_USER_DTO.userId,
expanded: false,
selected: true
}
]
},
{
text: 'Groups',
expanded: false,
selected: false,
children: [
{
text: fixture.ALL_USERS_GROUP_DTO.code,
expanded: false,
selected: false
},
{
text: fixture.ANOTHER_USER_GROUP_DTO.code,
expanded: false,
selected: false
},
{
text: fixture.TEST_USER_GROUP_DTO.code,
expanded: false,
selected: false
}
]
}
]
})
await common.controller.selectObject({
type: objectType.USER_GROUP,
id: fixture.ANOTHER_USER_GROUP_DTO.code
})
expect(common.controller.getTree()).toMatchObject({
id: 'root',
children: [
{
text: 'Users',
expanded: false,
selected: false,
children: [
{
text: fixture.ANOTHER_USER_DTO.userId,
expanded: false,
selected: false
},
{
text: fixture.TEST_USER_DTO.userId,
expanded: false,
selected: false
}
]
},
{
text: 'Groups',
expanded: false,
selected: false,
children: [
{
text: fixture.ALL_USERS_GROUP_DTO.code,
expanded: false,
selected: false
},
{
text: fixture.ANOTHER_USER_GROUP_DTO.code,
expanded: false,
selected: true
},
{
text: fixture.TEST_USER_GROUP_DTO.code,
expanded: false,
selected: false
}
]
}
]
})
}
async function testSelectAnotherNode() {
......@@ -121,37 +133,46 @@ async function testSelectAnotherNode() {
openbis.mockSearchGroups([])
await common.controller.load()
common.controller.nodeSelect('users/' + fixture.TEST_USER_DTO.userId)
common.controller.nodeSelect('users/' + fixture.ANOTHER_USER_DTO.userId)
expect(common.controller.getNodes()).toMatchObject([
{
text: 'Users',
expanded: false,
selected: false,
children: [
{
text: fixture.ANOTHER_USER_DTO.userId,
expanded: false,
selected: true
},
{
text: fixture.TEST_USER_DTO.userId,
expanded: false,
selected: false
}
]
},
{
text: 'Groups',
expanded: false,
selected: false,
children: []
}
])
common.expectOpenUserAction(fixture.TEST_USER_DTO.userId)
common.expectOpenUserAction(fixture.ANOTHER_USER_DTO.userId)
await common.controller.changeAutoShowSelectedObject()
await common.controller.selectObject({
type: objectType.USER,
id: fixture.TEST_USER_DTO.userId
})
await common.controller.selectObject({
type: objectType.USER,
id: fixture.ANOTHER_USER_DTO.userId
})
expect(common.controller.getTree()).toMatchObject({
id: 'root',
children: [
{
text: 'Users',
expanded: false,
selected: false,
children: [
{
text: fixture.ANOTHER_USER_DTO.userId,
expanded: false,
selected: true
},
{
text: fixture.TEST_USER_DTO.userId,
expanded: false,
selected: false
}
]
},
{
text: 'Groups',
expanded: false,
selected: false,
children: []
}
]
})
}
async function testSelectVirtualNode() {
......@@ -159,20 +180,26 @@ async function testSelectVirtualNode() {
openbis.mockSearchGroups([])
await common.controller.load()
common.controller.nodeSelect('users')
expect(common.controller.getNodes()).toMatchObject([
{
text: 'Users',
expanded: false,
selected: true
},
{
text: 'Groups',
expanded: false,
selected: false
}
])
common.expectOpenUsersOverviewAction()
await common.controller.changeAutoShowSelectedObject()
await common.controller.selectObject({
type: objectType.OVERVIEW,
id: objectType.USER
})
expect(common.controller.getTree()).toMatchObject({
id: 'root',
children: [
{
text: 'Users',
expanded: false,
selected: true
},
{
text: 'Groups',
expanded: false,
selected: false
}
]
})
}
......@@ -2,8 +2,6 @@ import AppController from '@src/js/components/AppController.js'
import TestAppController from '@srcTest/js/components/AppController.js'
import UserBrowserController from '@src/js/components/users/browser/UserBrowserController.js'
import ComponentContext from '@srcTest/js/components/common/ComponentContext.js'
import pages from '@src/js/common/consts/pages.js'
import objectType from '@src/js/common/consts/objectType.js'
export default class UserBrowserControllerTest {
static SUITE = 'UserBrowserController'
......@@ -18,28 +16,4 @@ export default class UserBrowserControllerTest {
this.controller = new UserBrowserController()
this.controller.init(this.context)
}
expectOpenUserAction(userId) {
expect(AppController.getInstance().objectOpen).toHaveBeenCalledWith(
pages.USERS,
objectType.USER,
userId
)
}
expectOpenGroupAction(groupId) {
expect(AppController.getInstance().objectOpen).toHaveBeenCalledWith(
pages.USERS,
objectType.USER_GROUP,
groupId
)
}
expectOpenUsersOverviewAction() {
expect(AppController.getInstance().objectOpen).toHaveBeenCalledWith(
pages.USERS,
objectType.OVERVIEW,
objectType.USER
)
}
}
import Content from '@src/js/components/common/content/Content.jsx'
import { UserBrowser } from '@src/js/components/users/browser2/UserBrowser.jsx'
import { UserBrowser } from '@src/js/components/users/browser/UserBrowser.jsx'
import BaseWrapper from '@srcTest/js/components/common/wrapper/BaseWrapper.js'
import BrowserWrapper from '@srcTest/js/components/common/browser/wrapper/BrowserWrapper.js'
import ContentWrapper from '@srcTest/js/components/common/content/wrapper/ContentWrapper.js'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment