@@ -13,7 +13,7 @@ import { ArchiveVO, RecordVO, ShareVO } from '@models';
1313import { RelationshipService } from '@core/services/relationship/relationship.service' ;
1414import { ApiService } from '@shared/services/api/api.service' ;
1515import { ShareResponse } from '@shared/services/api/share.repo' ;
16- import { AccessRoleType } from '@models/access-role' ;
16+ import { AccessRoleType , PermissionsLevel } from '@models/access-role' ;
1717import { MessageService } from '@shared/services/message/message.service' ;
1818import { Shallow } from 'shallow-render' ;
1919import { NgModule } from '@angular/core' ;
@@ -252,6 +252,88 @@ describe('SharingDialogComponent', () => {
252252 expect ( component . shares . length ) . toBe ( 1 ) ;
253253 expect ( component . shares [ 0 ] . accessRole ) . toBe ( shareViewer . accessRole ) ;
254254 } ) ) ;
255+
256+ it ( 'should remove share link when confirmed' , fakeAsync ( ( ) => {
257+ const mockShareLink = {
258+ id : '123' ,
259+ token : 'test-token' ,
260+ permissionsLevel : 'viewer' as PermissionsLevel ,
261+ accessRestrictions : 'none' as 'none' | 'account' | 'approval' ,
262+ expirationTimestamp : null ,
263+ createdAt : new Date ( ) ,
264+ updatedAt : new Date ( ) ,
265+ itemId : '1' ,
266+ itemType : 'record' as const ,
267+ maxUses : null ,
268+ usesExpended : null ,
269+ } ;
270+
271+ component . newShareLink = mockShareLink ;
272+ component . showLinkSettings = true ;
273+
274+ const confirmSpy = spyOn (
275+ TestBed . inject ( PromptService ) ,
276+ 'confirm' ,
277+ ) . and . returnValue ( Promise . resolve ( true ) ) ;
278+
279+ const deleteShareLinkSpy = spyOn (
280+ TestBed . inject ( ShareLinksApiService ) ,
281+ 'deleteShareLink' ,
282+ ) . and . returnValue ( Promise . resolve ( ) ) ;
283+
284+ component . removeShareLink ( ) ;
285+
286+ tick ( ) ;
287+
288+ expect ( confirmSpy ) . toHaveBeenCalledWith (
289+ 'Remove link' ,
290+ 'Are you sure you want to remove this link?' ,
291+ jasmine . any ( Promise ) ,
292+ 'btn-danger' ,
293+ ) ;
294+
295+ expect ( deleteShareLinkSpy ) . toHaveBeenCalledWith ( '123' ) ;
296+ expect ( component . newShareLink ) . toBeNull ( ) ;
297+ expect ( component . showLinkSettings ) . toBe ( false ) ;
298+ } ) ) ;
299+
300+ it ( 'should not remove share link when cancelled' , fakeAsync ( ( ) => {
301+ const mockShareLink = {
302+ id : '123' ,
303+ token : 'test-token' ,
304+ permissionsLevel : 'viewer' as PermissionsLevel ,
305+ accessRestrictions : 'none' as 'none' | 'account' | 'approval' ,
306+ expirationTimestamp : null ,
307+ createdAt : new Date ( ) ,
308+ updatedAt : new Date ( ) ,
309+ itemId : '1' ,
310+ itemType : 'record' as const ,
311+ maxUses : null ,
312+ usesExpended : null ,
313+ } ;
314+
315+ component . newShareLink = mockShareLink ;
316+ component . showLinkSettings = true ;
317+
318+ const confirmSpy = spyOn (
319+ TestBed . inject ( PromptService ) ,
320+ 'confirm' ,
321+ ) . and . returnValue ( Promise . reject ( false ) ) ;
322+
323+ const deleteShareLinkSpy = spyOn (
324+ TestBed . inject ( ShareLinksApiService ) ,
325+ 'deleteShareLink' ,
326+ ) . and . returnValue ( Promise . resolve ( ) ) ;
327+
328+ component . removeShareLink ( ) ;
329+
330+ tick ( ) ;
331+
332+ expect ( confirmSpy ) . toHaveBeenCalled ( ) ;
333+ expect ( deleteShareLinkSpy ) . not . toHaveBeenCalled ( ) ;
334+ expect ( component . newShareLink ) . toEqual ( mockShareLink ) ;
335+ expect ( component . showLinkSettings ) . toBe ( true ) ;
336+ } ) ) ;
255337} ) ;
256338
257339describe ( 'SharingDialogComponent - Shallow Rendering' , ( ) => {
0 commit comments