Skip to content

Commit 7beb31a

Browse files
PER-10299: Test deleting share links
1 parent 39516aa commit 7beb31a

File tree

1 file changed

+83
-1
lines changed

1 file changed

+83
-1
lines changed

src/app/file-browser/components/sharing-dialog/sharing-dialog.component.spec.ts

Lines changed: 83 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { ArchiveVO, RecordVO, ShareVO } from '@models';
1313
import { RelationshipService } from '@core/services/relationship/relationship.service';
1414
import { ApiService } from '@shared/services/api/api.service';
1515
import { ShareResponse } from '@shared/services/api/share.repo';
16-
import { AccessRoleType } from '@models/access-role';
16+
import { AccessRoleType, PermissionsLevel } from '@models/access-role';
1717
import { MessageService } from '@shared/services/message/message.service';
1818
import { Shallow } from 'shallow-render';
1919
import { 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

257339
describe('SharingDialogComponent - Shallow Rendering', () => {

0 commit comments

Comments
 (0)