From fe2fe0c669e03d04f52f71325154ad94c157a470 Mon Sep 17 00:00:00 2001 From: dhrn <14145706+dhrn@users.noreply.github.com> Date: Wed, 25 Nov 2020 03:28:36 +0530 Subject: [PATCH] [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 --- .../library-membership.directive.spec.ts | 23 ++++++++++++++++--- .../library-membership.directive.ts | 17 ++++++++++---- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/app/directives/library-membership.directive.spec.ts b/src/app/directives/library-membership.directive.spec.ts index 1326d7162..3b15dbd09 100644 --- a/src/app/directives/library-membership.directive.spec.ts +++ b/src/app/directives/library-membership.directive.spec.ts @@ -29,7 +29,7 @@ import { AppTestingModule } from '../testing/app-testing.module'; import { DirectivesModule } from './directives.module'; import { LibraryMembershipDirective } from './library-membership.directive'; 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'; describe('LibraryMembershipDirective', () => { @@ -40,6 +40,7 @@ describe('LibraryMembershipDirective', () => { let addMembershipSpy; let getMembershipSpy; let deleteMembershipSpy; + let mockSupportedVersion = false; const testSiteEntry = { id: 'id-1', @@ -61,7 +62,10 @@ describe('LibraryMembershipDirective', () => { alfrescoApiService = new AlfrescoApiServiceMock(new AppConfigService(null), new StorageService()); sitesService = new SitesService(alfrescoApiService); peopleApi = alfrescoApiService.getInstance().core.peopleApi; - directive = new LibraryMembershipDirective(alfrescoApiService, sitesService); + directive = new LibraryMembershipDirective(alfrescoApiService, sitesService, { + ecmProductInfo$: new Subject(), + isVersionSupported: () => mockSupportedVersion + } as any); }); describe('markMembershipRequest', () => { @@ -106,6 +110,7 @@ describe('LibraryMembershipDirective', () => { describe('toggleMembershipRequest', () => { beforeEach(() => { + mockSupportedVersion = false; getMembershipSpy = spyOn(peopleApi, 'getSiteMembershipRequest').and.returnValue(Promise.resolve({ entry: requestedMembershipResponse })); addMembershipSpy = spyOn(peopleApi, 'addSiteMembershipRequest').and.returnValue(Promise.resolve({ entry: requestedMembershipResponse })); deleteMembershipSpy = spyOn(peopleApi, 'removeSiteMembershipRequest').and.returnValue(Promise.resolve({})); @@ -139,7 +144,19 @@ describe('LibraryMembershipDirective', () => { tick(); directive.toggleMembershipRequest(); 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(); })); diff --git a/src/app/directives/library-membership.directive.ts b/src/app/directives/library-membership.directive.ts index c97fb96e7..041a4612b 100644 --- a/src/app/directives/library-membership.directive.ts +++ b/src/app/directives/library-membership.directive.ts @@ -24,9 +24,9 @@ */ import { Directive, EventEmitter, HostListener, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; -import { SiteEntry, SiteMemberEntry, SiteMembershipRequestBody } from '@alfresco/js-api'; -import { AlfrescoApiService, SitesService } from '@alfresco/adf-core'; -import { BehaviorSubject, from } from 'rxjs'; +import { SiteEntry, SiteMembershipRequestBody, SiteMemberEntry, SiteMembershipRequestEntry } from '@alfresco/js-api'; +import { AlfrescoApiService, SitesService, VersionCompatibilityService } from '@alfresco/adf-core'; +import { BehaviorSubject, from, Observable } from 'rxjs'; export interface LibraryMembershipToggleEvent { updatedEntry?: any; @@ -68,7 +68,11 @@ export class LibraryMembershipDirective implements OnChanges { this.toggleMembershipRequest(); } - constructor(private alfrescoApiService: AlfrescoApiService, private sitesService: SitesService) {} + constructor( + private alfrescoApiService: AlfrescoApiService, + private sitesService: SitesService, + private versionCompatibilityService: VersionCompatibilityService + ) {} ngOnChanges(changes: SimpleChanges) { if (!changes.selection.currentValue || !changes.selection.currentValue.entry) { @@ -203,11 +207,14 @@ export class LibraryMembershipDirective implements OnChanges { ); } - private joinLibraryRequest() { + private joinLibraryRequest(): Observable { const memberBody = { id: this.targetSite.id } as SiteMembershipRequestBody; + if (this.versionCompatibilityService.isVersionSupported('7.0.0')) { + memberBody.client = 'workspace'; + } return from(this.alfrescoApiService.peopleApi.addSiteMembershipRequest('-me-', memberBody)); }