[ACS-880] Enable digital-work-space to join link to site with workspace template (#1800)

* [ACS-880] Enable digital-work-space to join link to site with workspace template

* fix changes

* ut added

* * conflicts fixed

* * prettier fixed
This commit is contained in:
dhrn
2020-11-25 03:28:36 +05:30
committed by GitHub
parent aba16339dc
commit fe2fe0c669
2 changed files with 32 additions and 8 deletions

View File

@@ -29,7 +29,7 @@ import { AppTestingModule } from '../testing/app-testing.module';
import { DirectivesModule } from './directives.module'; import { DirectivesModule } from './directives.module';
import { LibraryMembershipDirective } from './library-membership.directive'; import { LibraryMembershipDirective } from './library-membership.directive';
import { NO_ERRORS_SCHEMA, SimpleChange } from '@angular/core'; import { NO_ERRORS_SCHEMA, SimpleChange } from '@angular/core';
import { of, throwError } from 'rxjs'; import { of, throwError, Subject } from 'rxjs';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
describe('LibraryMembershipDirective', () => { describe('LibraryMembershipDirective', () => {
@@ -40,6 +40,7 @@ describe('LibraryMembershipDirective', () => {
let addMembershipSpy; let addMembershipSpy;
let getMembershipSpy; let getMembershipSpy;
let deleteMembershipSpy; let deleteMembershipSpy;
let mockSupportedVersion = false;
const testSiteEntry = { const testSiteEntry = {
id: 'id-1', id: 'id-1',
@@ -61,7 +62,10 @@ describe('LibraryMembershipDirective', () => {
alfrescoApiService = new AlfrescoApiServiceMock(new AppConfigService(null), new StorageService()); alfrescoApiService = new AlfrescoApiServiceMock(new AppConfigService(null), new StorageService());
sitesService = new SitesService(alfrescoApiService); sitesService = new SitesService(alfrescoApiService);
peopleApi = alfrescoApiService.getInstance().core.peopleApi; peopleApi = alfrescoApiService.getInstance().core.peopleApi;
directive = new LibraryMembershipDirective(alfrescoApiService, sitesService); directive = new LibraryMembershipDirective(alfrescoApiService, sitesService, {
ecmProductInfo$: new Subject(),
isVersionSupported: () => mockSupportedVersion
} as any);
}); });
describe('markMembershipRequest', () => { describe('markMembershipRequest', () => {
@@ -106,6 +110,7 @@ describe('LibraryMembershipDirective', () => {
describe('toggleMembershipRequest', () => { describe('toggleMembershipRequest', () => {
beforeEach(() => { beforeEach(() => {
mockSupportedVersion = false;
getMembershipSpy = spyOn(peopleApi, 'getSiteMembershipRequest').and.returnValue(Promise.resolve({ entry: requestedMembershipResponse })); getMembershipSpy = spyOn(peopleApi, 'getSiteMembershipRequest').and.returnValue(Promise.resolve({ entry: requestedMembershipResponse }));
addMembershipSpy = spyOn(peopleApi, 'addSiteMembershipRequest').and.returnValue(Promise.resolve({ entry: requestedMembershipResponse })); addMembershipSpy = spyOn(peopleApi, 'addSiteMembershipRequest').and.returnValue(Promise.resolve({ entry: requestedMembershipResponse }));
deleteMembershipSpy = spyOn(peopleApi, 'removeSiteMembershipRequest').and.returnValue(Promise.resolve({})); deleteMembershipSpy = spyOn(peopleApi, 'removeSiteMembershipRequest').and.returnValue(Promise.resolve({}));
@@ -139,7 +144,19 @@ describe('LibraryMembershipDirective', () => {
tick(); tick();
directive.toggleMembershipRequest(); directive.toggleMembershipRequest();
tick(); tick();
expect(addMembershipSpy).toHaveBeenCalled(); expect(addMembershipSpy).toHaveBeenCalledWith('-me-', { id: 'no-membership-requested' });
expect(deleteMembershipSpy).not.toHaveBeenCalled();
}));
it("should add 'workspace' to send appropriate email", fakeAsync(() => {
mockSupportedVersion = true;
const selection = { entry: { id: 'no-membership-requested' } };
const change = new SimpleChange(null, selection, true);
directive.ngOnChanges({ selection: change });
tick();
directive.toggleMembershipRequest();
tick();
expect(addMembershipSpy).toHaveBeenCalledWith('-me-', { id: 'no-membership-requested', client: 'workspace' });
expect(deleteMembershipSpy).not.toHaveBeenCalled(); expect(deleteMembershipSpy).not.toHaveBeenCalled();
})); }));

View File

@@ -24,9 +24,9 @@
*/ */
import { Directive, EventEmitter, HostListener, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; import { Directive, EventEmitter, HostListener, Input, OnChanges, Output, SimpleChanges } from '@angular/core';
import { SiteEntry, SiteMemberEntry, SiteMembershipRequestBody } from '@alfresco/js-api'; import { SiteEntry, SiteMembershipRequestBody, SiteMemberEntry, SiteMembershipRequestEntry } from '@alfresco/js-api';
import { AlfrescoApiService, SitesService } from '@alfresco/adf-core'; import { AlfrescoApiService, SitesService, VersionCompatibilityService } from '@alfresco/adf-core';
import { BehaviorSubject, from } from 'rxjs'; import { BehaviorSubject, from, Observable } from 'rxjs';
export interface LibraryMembershipToggleEvent { export interface LibraryMembershipToggleEvent {
updatedEntry?: any; updatedEntry?: any;
@@ -68,7 +68,11 @@ export class LibraryMembershipDirective implements OnChanges {
this.toggleMembershipRequest(); this.toggleMembershipRequest();
} }
constructor(private alfrescoApiService: AlfrescoApiService, private sitesService: SitesService) {} constructor(
private alfrescoApiService: AlfrescoApiService,
private sitesService: SitesService,
private versionCompatibilityService: VersionCompatibilityService
) {}
ngOnChanges(changes: SimpleChanges) { ngOnChanges(changes: SimpleChanges) {
if (!changes.selection.currentValue || !changes.selection.currentValue.entry) { if (!changes.selection.currentValue || !changes.selection.currentValue.entry) {
@@ -203,11 +207,14 @@ export class LibraryMembershipDirective implements OnChanges {
); );
} }
private joinLibraryRequest() { private joinLibraryRequest(): Observable<SiteMembershipRequestEntry> {
const memberBody = { const memberBody = {
id: this.targetSite.id id: this.targetSite.id
} as SiteMembershipRequestBody; } as SiteMembershipRequestBody;
if (this.versionCompatibilityService.isVersionSupported('7.0.0')) {
memberBody.client = 'workspace';
}
return from(this.alfrescoApiService.peopleApi.addSiteMembershipRequest('-me-', memberBody)); return from(this.alfrescoApiService.peopleApi.addSiteMembershipRequest('-me-', memberBody));
} }