diff --git a/src/app/shared/comcol/comcol-forms/edit-comcol-page/comcol-role/comcol-role.component.spec.ts b/src/app/shared/comcol/comcol-forms/edit-comcol-page/comcol-role/comcol-role.component.spec.ts index 00efc3ccaad..5bf9d01339f 100644 --- a/src/app/shared/comcol/comcol-forms/edit-comcol-page/comcol-role/comcol-role.component.spec.ts +++ b/src/app/shared/comcol/comcol-forms/edit-comcol-page/comcol-role/comcol-role.component.spec.ts @@ -26,12 +26,16 @@ describe('ComcolRoleComponent', () => { let comcolRole; let notificationsService; - const requestService = { hasByHref$: () => observableOf(true) }; + const requestService = { + hasByHref$: () => observableOf(true), + setStaleByHrefSubstring: jasmine.createSpy('setStaleByHrefSubstring') + }; const groupService = { findByHref: jasmine.createSpy('findByHref'), createComcolGroup: jasmine.createSpy('createComcolGroup').and.returnValue(observableOf({})), - deleteComcolGroup: jasmine.createSpy('deleteComcolGroup').and.returnValue(observableOf({})) + deleteComcolGroup: jasmine.createSpy('deleteComcolGroup').and.returnValue(observableOf({})), + clearGroupsRequests: jasmine.createSpy('clearGroupsRequests') }; beforeEach(waitForAsync(() => { @@ -156,6 +160,21 @@ describe('ComcolRoleComponent', () => { done(); }); }); + + describe('when a group is created successfully', () => { + beforeEach(() => { + groupService.createComcolGroup.and.returnValue(createSuccessfulRemoteDataObject$({ + id: '123', + name: 'TestGroup' + })); + comp.create(); + }); + + it('should force a fresh GET after successful create', (done) => { + expect(groupService.findByHref).toHaveBeenCalledWith(comp.comcolRole.href, false, true); + done(); + }); + }); }); describe('when the related group is a custom group', () => { diff --git a/src/app/shared/comcol/comcol-forms/edit-comcol-page/comcol-role/comcol-role.component.ts b/src/app/shared/comcol/comcol-forms/edit-comcol-page/comcol-role/comcol-role.component.ts index 5ae22d754ee..5b54bd4e64f 100644 --- a/src/app/shared/comcol/comcol-forms/edit-comcol-page/comcol-role/comcol-role.component.ts +++ b/src/app/shared/comcol/comcol-forms/edit-comcol-page/comcol-role/comcol-role.component.ts @@ -4,7 +4,7 @@ import { Community } from '../../../../../core/shared/community.model'; import { BehaviorSubject, Observable } from 'rxjs'; import { GroupDataService } from '../../../../../core/eperson/group-data.service'; import { Collection } from '../../../../../core/shared/collection.model'; -import { filter, map, switchMap } from 'rxjs/operators'; +import { filter, map, switchMap, take } from 'rxjs/operators'; import { getAllCompletedRemoteData, getFirstCompletedRemoteData } from '../../../../../core/shared/operators'; import { RequestService } from '../../../../../core/data/request.service'; import { RemoteData } from '../../../../../core/data/remote-data'; @@ -111,6 +111,9 @@ export class ComcolRoleComponent implements OnInit { if (rd.hasSucceeded) { this.groupService.clearGroupsRequests(); this.requestService.setStaleByHrefSubstring(this.comcolRole.href); + this.groupService.findByHref(this.comcolRole.href, false, true) + .pipe(getFirstCompletedRemoteData(), take(1)) + .subscribe(); } else { this.notificationsService.error( this.roleName$.pipe(