diff --git a/openbis_ng_ui/src/js/components/users/Users.jsx b/openbis_ng_ui/src/js/components/users/Users.jsx index ff37c9faaea02f0e01c53274de1b241d5b0ec049..f72928d31d5886ccb45c2f5821ff68227dabf53f 100644 --- a/openbis_ng_ui/src/js/components/users/Users.jsx +++ b/openbis_ng_ui/src/js/components/users/Users.jsx @@ -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' diff --git a/openbis_ng_ui/src/js/components/users/browser/UserBrowser.jsx b/openbis_ng_ui/src/js/components/users/browser/UserBrowser.jsx index f4039f3505949dec75fddffd6403254e88827041..aba73bc0286077dac1cc7acd7e6e37f944ec843a 100644 --- a/openbis_ng_ui/src/js/components/users/browser/UserBrowser.jsx +++ b/openbis_ng_ui/src/js/components/users/browser/UserBrowser.jsx @@ -1,18 +1,78 @@ +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) diff --git a/openbis_ng_ui/src/js/components/users/browser2/UserBrowserConsts.js b/openbis_ng_ui/src/js/components/users/browser/UserBrowserConsts.js similarity index 100% rename from openbis_ng_ui/src/js/components/users/browser2/UserBrowserConsts.js rename to openbis_ng_ui/src/js/components/users/browser/UserBrowserConsts.js diff --git a/openbis_ng_ui/src/js/components/users/browser/UserBrowserController.js b/openbis_ng_ui/src/js/components/users/browser/UserBrowserController.js index b32cf50aac4006076e88a4d2ec1cd2d23026df8e..f9ef8ba8160bb9d0a446b39d9528762dea54b2f5 100644 --- a/openbis_ng_ui/src/js/components/users/browser/UserBrowserController.js +++ b/openbis_ng_ui/src/js/components/users/browser/UserBrowserController.js @@ -1,146 +1,42 @@ -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() + ) } } diff --git a/openbis_ng_ui/src/js/components/users/browser2/UserBrowserControllerAddNode.js b/openbis_ng_ui/src/js/components/users/browser/UserBrowserControllerAddNode.js similarity index 100% rename from openbis_ng_ui/src/js/components/users/browser2/UserBrowserControllerAddNode.js rename to openbis_ng_ui/src/js/components/users/browser/UserBrowserControllerAddNode.js diff --git a/openbis_ng_ui/src/js/components/users/browser2/UserBrowserControllerLoadNodePath.js b/openbis_ng_ui/src/js/components/users/browser/UserBrowserControllerLoadNodePath.js similarity index 96% rename from openbis_ng_ui/src/js/components/users/browser2/UserBrowserControllerLoadNodePath.js rename to openbis_ng_ui/src/js/components/users/browser/UserBrowserControllerLoadNodePath.js index cd7e4f94bc524d2c752bbd5dfacbfca6e0a4d0c5..4e17665fdce91f76cbf9eda25e367984363a0b17 100644 --- a/openbis_ng_ui/src/js/components/users/browser2/UserBrowserControllerLoadNodePath.js +++ b/openbis_ng_ui/src/js/components/users/browser/UserBrowserControllerLoadNodePath.js @@ -1,4 +1,4 @@ -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' diff --git a/openbis_ng_ui/src/js/components/users/browser2/UserBrowserControllerLoadNodes.js b/openbis_ng_ui/src/js/components/users/browser/UserBrowserControllerLoadNodes.js similarity index 98% rename from openbis_ng_ui/src/js/components/users/browser2/UserBrowserControllerLoadNodes.js rename to openbis_ng_ui/src/js/components/users/browser/UserBrowserControllerLoadNodes.js index f20488a2878bf612cfe4c3680ec8c183ef0871be..0ea2fa6a2bdf884e57ffcf6ccdcce01c588e0227 100644 --- a/openbis_ng_ui/src/js/components/users/browser2/UserBrowserControllerLoadNodes.js +++ b/openbis_ng_ui/src/js/components/users/browser/UserBrowserControllerLoadNodes.js @@ -1,5 +1,5 @@ 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' diff --git a/openbis_ng_ui/src/js/components/users/browser2/UserBrowserControllerReload.js b/openbis_ng_ui/src/js/components/users/browser/UserBrowserControllerReload.js similarity index 100% rename from openbis_ng_ui/src/js/components/users/browser2/UserBrowserControllerReload.js rename to openbis_ng_ui/src/js/components/users/browser/UserBrowserControllerReload.js diff --git a/openbis_ng_ui/src/js/components/users/browser2/UserBrowserControllerRemoveNode.js b/openbis_ng_ui/src/js/components/users/browser/UserBrowserControllerRemoveNode.js similarity index 100% rename from openbis_ng_ui/src/js/components/users/browser2/UserBrowserControllerRemoveNode.js rename to openbis_ng_ui/src/js/components/users/browser/UserBrowserControllerRemoveNode.js diff --git a/openbis_ng_ui/src/js/components/users/browser2/UserBrowser.jsx b/openbis_ng_ui/src/js/components/users/browser2/UserBrowser.jsx deleted file mode 100644 index 697c64eea85af5269ce58344ea57b1c52bc30c82..0000000000000000000000000000000000000000 --- a/openbis_ng_ui/src/js/components/users/browser2/UserBrowser.jsx +++ /dev/null @@ -1,78 +0,0 @@ -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) diff --git a/openbis_ng_ui/src/js/components/users/browser2/UserBrowserController.js b/openbis_ng_ui/src/js/components/users/browser2/UserBrowserController.js deleted file mode 100644 index 6e4d6ac55c0dcf583f8731218469936a4a4f9876..0000000000000000000000000000000000000000 --- a/openbis_ng_ui/src/js/components/users/browser2/UserBrowserController.js +++ /dev/null @@ -1,42 +0,0 @@ -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() - ) - } -} diff --git a/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserComponentFilter.test.js b/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserComponentFilter.test.js deleted file mode 100644 index 04f1956e8d8005d8753fdeaf4a7c6a0bf17a8184..0000000000000000000000000000000000000000 --- a/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserComponentFilter.test.js +++ /dev/null @@ -1,48 +0,0 @@ -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 } - ] - }) -} diff --git a/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerExpandCollapseNode.test.js b/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerExpandCollapseNode.test.js index f70ef5e2de674bebd552ff74f5e398bd611b3684..f02f27f6f5f89ff1f9f63cc8d69fd749045c4573 100644 --- a/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerExpandCollapseNode.test.js +++ b/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerExpandCollapseNode.test.js @@ -1,4 +1,6 @@ +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 + } + ] + }) } diff --git a/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerFilter.test.js b/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerFilter.test.js deleted file mode 100644 index 6ea196f19c3c940945feb6eadd49ce5f08ed6e5d..0000000000000000000000000000000000000000 --- a/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerFilter.test.js +++ /dev/null @@ -1,53 +0,0 @@ -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 - } - ] - } - ]) -} diff --git a/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerLoad.test.js b/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerLoad.test.js index 2a575e4990bea2cf0c1eb44f9ae4a946be68565c..a5b1874c25663ffae04cfb7a9e15bca985ee0b53 100644 --- a/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerLoad.test.js +++ b/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerLoad.test.js @@ -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 + } + ] + }) } diff --git a/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerSelectNode.test.js b/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerSelectNode.test.js index 5f560d5f5027ef458177e659669ab187fd21334d..643a862b0e4d7d77835c51787af62d27838dcc9c 100644 --- a/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerSelectNode.test.js +++ b/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerSelectNode.test.js @@ -1,4 +1,5 @@ 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 + } + ] + }) } diff --git a/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerTest.js b/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerTest.js index 6b9ded291161203c37fb2d880e26e6d0412419b7..eec47e475519384870fcb826f3fab449a748dc10 100644 --- a/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerTest.js +++ b/openbis_ng_ui/srcTest/js/components/users/browser/UserBrowserControllerTest.js @@ -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 - ) - } } diff --git a/openbis_ng_ui/srcTest/js/components/users/wrapper/UsersWrapper.js b/openbis_ng_ui/srcTest/js/components/users/wrapper/UsersWrapper.js index c69b316f85956a61336b49b9fd365653e1a604e0..730410e15fb54142a77d2163731e2427e55a6f40 100644 --- a/openbis_ng_ui/srcTest/js/components/users/wrapper/UsersWrapper.js +++ b/openbis_ng_ui/srcTest/js/components/users/wrapper/UsersWrapper.js @@ -1,5 +1,5 @@ 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'