diff --git a/__fixtures__/users.js b/__fixtures__/users.js index 56e618db796..76f23d4e2ee 100644 --- a/__fixtures__/users.js +++ b/__fixtures__/users.js @@ -11,8 +11,9 @@ export default { id: 'alice', name: 'alice', displayname: 'Alice Hansen', - additionalInfo: "alice@example.org", + additionalInfo: 'alice@example.org', home: '/mnt/data/files/alice', - two_factor_auth_enabled: 'false' + two_factor_auth_enabled: 'false', + uuid: 1 } } diff --git a/packages/web-app-files/src/components/SideBar/SideBar.vue b/packages/web-app-files/src/components/SideBar/SideBar.vue index 63203066d8b..5e5afcf40a8 100644 --- a/packages/web-app-files/src/components/SideBar/SideBar.vue +++ b/packages/web-app-files/src/components/SideBar/SideBar.vue @@ -268,15 +268,17 @@ export default { if (!this.areMultipleSelected) { await this.fetchFileInfo() } - if (this.$route.params.spaceId && !this.highlightedFileIsSpace) { - this.loadSpaceTask.perform(this, this.$route.params.spaceId) - } this.$nextTick(this.initVisibilityObserver) }, beforeDestroy() { visibilityObserver.disconnect() hiddenObserver.disconnect() }, + mounted() { + if (this.$route.params.spaceId && !this.highlightedFileIsSpace) { + this.loadSpaceTask.perform(this, this.$route.params.spaceId) + } + }, methods: { ...mapActions('Files/sidebar', { closeSidebar: 'close', diff --git a/packages/web-app-files/tests/unit/components/SideBar/Shares/FileShares.spec.js b/packages/web-app-files/tests/unit/components/SideBar/Shares/FileShares.spec.js index 4bd7b562703..3f0d1e584ad 100644 --- a/packages/web-app-files/tests/unit/components/SideBar/Shares/FileShares.spec.js +++ b/packages/web-app-files/tests/unit/components/SideBar/Shares/FileShares.spec.js @@ -5,10 +5,15 @@ import Vuex from 'vuex' import DesignSystem from 'owncloud-design-system' import Users from '@/__fixtures__/users' import Collaborators from '@/__fixtures__/collaborators' +import mockAxios from 'jest-mock-axios' +import { buildSpace } from '../../../../../src/helpers/resources' +import { spaceRoleManager } from '../../../../../src/helpers/share' +import VueCompositionAPI from '@vue/composition-api/dist/vue-composition-api' const localVue = createLocalVue() localVue.use(DesignSystem) localVue.use(Vuex) +localVue.use(VueCompositionAPI) localVue.use(GetTextPlugin, { translations: 'does-not-matter.json', silent: true @@ -108,6 +113,40 @@ describe('FileShares', () => { expect(spyOnReloadShares).toHaveBeenCalledTimes(1) }) }) + + describe('current space', () => { + afterEach(() => { + mockAxios.reset() + }) + it('loads space members if a space is given', async () => { + const spaceMock = { + id: '1', + root: { permissions: [{ roles: ['manager'], grantedTo: [{ user: { id: 1 } }] }] } + } + mockAxios.request.mockImplementationOnce(() => { + return Promise.resolve({ + data: { role: spaceRoleManager.name } + }) + }) + + const wrapper = getShallowMountedWrapper({ + user, + space: buildSpace(spaceMock) + }) + + await wrapper.vm.loadSpaceMembersTask.last + expect(wrapper.vm.spaceMembers.length).toBe(1) + expect(wrapper.find('#space-collaborators-list').exists()).toBeTruthy() + }) + it('does not load space members if no space is given', async () => { + const wrapper = getShallowMountedWrapper({ + user + }) + + await wrapper.vm.loadSpaceMembersTask.last + expect(wrapper.vm.spaceMembers.length).toBe(0) + }) + }) }) function getResource({ @@ -191,6 +230,10 @@ const storeOptions = (data, isInLoadingState) => { } }, getters: { + getToken: jest.fn(() => 'GFwHKXdsMgoFwt'), + configuration: jest.fn(() => ({ + server: 'http://example.com/' + })), isOcis: () => false, user: () => user, capabilities: () => { @@ -236,6 +279,11 @@ function getShallowMountedWrapper(data, loading = false) { 'oc-button': true, 'oc-icon': true, 'oc-spinner': true + }, + provide: { + currentSpace: { + value: data.space + } } }) } diff --git a/packages/web-app-files/tests/unit/components/SideBar/Shares/__snapshots__/FileShares.spec.js.snap b/packages/web-app-files/tests/unit/components/SideBar/Shares/__snapshots__/FileShares.spec.js.snap index 20889013bfe..5d30ce5dca2 100644 --- a/packages/web-app-files/tests/unit/components/SideBar/Shares/__snapshots__/FileShares.spec.js.snap +++ b/packages/web-app-files/tests/unit/components/SideBar/Shares/__snapshots__/FileShares.spec.js.snap @@ -5,6 +5,7 @@ exports[`FileShares if currentUser can not share initially renders no share perm
You don't have permission to share this file.
+ `; @@ -13,6 +14,7 @@ exports[`FileShares if currentUser can share initially renders add people dialog