@@ -19,15 +19,23 @@ import { RouterTestingModule } from '@angular/router/testing';
1919import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core' ;
2020import { ProcessDetailFieldComponent } from './process-detail-field/process-detail-field.component' ;
2121import { Process } from '../processes/process.model' ;
22- import { ActivatedRoute } from '@angular/router' ;
22+ import { ActivatedRoute , Router } from '@angular/router' ;
2323import { of as observableOf } from 'rxjs' ;
2424import { By } from '@angular/platform-browser' ;
2525import { FileSizePipe } from '../../shared/utils/file-size-pipe' ;
2626import { Bitstream } from '../../core/shared/bitstream.model' ;
2727import { ProcessDataService } from '../../core/data/processes/process-data.service' ;
2828import { DSONameService } from '../../core/breadcrumbs/dso-name.service' ;
29- import { createSuccessfulRemoteDataObject , createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils' ;
29+ import {
30+ createFailedRemoteDataObject$ ,
31+ createSuccessfulRemoteDataObject ,
32+ createSuccessfulRemoteDataObject$
33+ } from '../../shared/remote-data.utils' ;
3034import { createPaginatedList } from '../../shared/testing/utils.test' ;
35+ import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub' ;
36+ import { NgbModal } from '@ng-bootstrap/ng-bootstrap' ;
37+ import { NotificationsService } from '../../shared/notifications/notifications.service' ;
38+ import { getProcessListRoute } from '../process-page-routing.paths' ;
3139
3240describe ( 'ProcessDetailComponent' , ( ) => {
3341 let component : ProcessDetailComponent ;
@@ -44,6 +52,11 @@ describe('ProcessDetailComponent', () => {
4452
4553 let processOutput ;
4654
55+ let modalService ;
56+ let notificationsService ;
57+
58+ let router ;
59+
4760 function init ( ) {
4861 processOutput = 'Process Started' ;
4962 process = Object . assign ( new Process ( ) , {
@@ -93,7 +106,8 @@ describe('ProcessDetailComponent', () => {
93106 }
94107 } ) ;
95108 processService = jasmine . createSpyObj ( 'processService' , {
96- getFiles : createSuccessfulRemoteDataObject$ ( createPaginatedList ( files ) )
109+ getFiles : createSuccessfulRemoteDataObject$ ( createPaginatedList ( files ) ) ,
110+ delete : createSuccessfulRemoteDataObject$ ( null )
97111 } ) ;
98112 bitstreamDataService = jasmine . createSpyObj ( 'bitstreamDataService' , {
99113 findByHref : createSuccessfulRemoteDataObject$ ( logBitstream )
@@ -104,13 +118,23 @@ describe('ProcessDetailComponent', () => {
104118 httpClient = jasmine . createSpyObj ( 'httpClient' , {
105119 get : observableOf ( processOutput )
106120 } ) ;
121+
122+ modalService = jasmine . createSpyObj ( 'modalService' , {
123+ open : { }
124+ } ) ;
125+
126+ notificationsService = new NotificationsServiceStub ( ) ;
127+
128+ router = jasmine . createSpyObj ( 'router' , {
129+ navigateByUrl :{ }
130+ } ) ;
107131 }
108132
109133 beforeEach ( waitForAsync ( ( ) => {
110134 init ( ) ;
111135 TestBed . configureTestingModule ( {
112136 declarations : [ ProcessDetailComponent , ProcessDetailFieldComponent , VarDirective , FileSizePipe ] ,
113- imports : [ TranslateModule . forRoot ( ) , RouterTestingModule . withRoutes ( [ ] ) ] ,
137+ imports : [ TranslateModule . forRoot ( ) ] ,
114138 providers : [
115139 {
116140 provide : ActivatedRoute ,
@@ -121,6 +145,9 @@ describe('ProcessDetailComponent', () => {
121145 { provide : DSONameService , useValue : nameService } ,
122146 { provide : AuthService , useValue : new AuthServiceMock ( ) } ,
123147 { provide : HttpClient , useValue : httpClient } ,
148+ { provide : NgbModal , useValue : modalService } ,
149+ { provide : NotificationsService , useValue : notificationsService } ,
150+ { provide : Router , useValue : router } ,
124151 ] ,
125152 schemas : [ CUSTOM_ELEMENTS_SCHEMA ]
126153 } ) . compileComponents ( ) ;
@@ -207,4 +234,34 @@ describe('ProcessDetailComponent', () => {
207234 } ) ;
208235 } ) ;
209236
237+ describe ( 'openDeleteModal' , ( ) => {
238+ it ( 'should open the modal' , ( ) => {
239+ component . openDeleteModal ( { } ) ;
240+ expect ( modalService . open ) . toHaveBeenCalledWith ( { } ) ;
241+ } ) ;
242+ } ) ;
243+
244+ describe ( 'deleteProcess' , ( ) => {
245+ it ( 'should delete the process and navigate back to the overview page on success' , ( ) => {
246+ spyOn ( component , 'closeModal' ) ;
247+ component . deleteProcess ( process ) ;
248+
249+ expect ( processService . delete ) . toHaveBeenCalledWith ( process . processId ) ;
250+ expect ( notificationsService . success ) . toHaveBeenCalled ( ) ;
251+ expect ( component . closeModal ) . toHaveBeenCalled ( ) ;
252+ expect ( router . navigateByUrl ) . toHaveBeenCalledWith ( getProcessListRoute ( ) ) ;
253+ } ) ;
254+ it ( 'should delete the process and not navigate on error' , ( ) => {
255+ ( processService . delete as jasmine . Spy ) . and . returnValue ( createFailedRemoteDataObject$ ( ) ) ;
256+ spyOn ( component , 'closeModal' ) ;
257+
258+ component . deleteProcess ( process ) ;
259+
260+ expect ( processService . delete ) . toHaveBeenCalledWith ( process . processId ) ;
261+ expect ( notificationsService . error ) . toHaveBeenCalled ( ) ;
262+ expect ( component . closeModal ) . not . toHaveBeenCalled ( ) ;
263+ expect ( router . navigateByUrl ) . not . toHaveBeenCalled ( ) ;
264+ } ) ;
265+ } ) ;
266+
210267} ) ;
0 commit comments