mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-09 19:13:08 +00:00
130 lines
4.7 KiB
TypeScript
130 lines
4.7 KiB
TypeScript
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
|
|
import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
import { WorkflowItemActionPageComponent } from './workflow-item-action-page.component';
|
|
import { NotificationsService } from '../shared/notifications/notifications.service';
|
|
import { RouteService } from '../core/services/route.service';
|
|
import { Component, NO_ERRORS_SCHEMA } from '@angular/core';
|
|
import { WorkflowItemDataService } from '../core/submission/workflowitem-data.service';
|
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
import { WorkflowItem } from '../core/submission/models/workflowitem.model';
|
|
import { Observable, of as observableOf } from 'rxjs';
|
|
import { VarDirective } from '../shared/utils/var.directive';
|
|
import { By } from '@angular/platform-browser';
|
|
import { createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$ } from '../shared/remote-data.utils';
|
|
import { TranslateLoaderMock } from '../shared/mocks/translate-loader.mock';
|
|
import { ActivatedRouteStub } from '../shared/testing/active-router.stub';
|
|
import { RouterStub } from '../shared/testing/router.stub';
|
|
import { NotificationsServiceStub } from '../shared/testing/notifications-service.stub';
|
|
import { RequestService } from '../core/data/request.service';
|
|
import { RequestServiceStub } from '../shared/testing/request-service.stub';
|
|
|
|
const type = 'testType';
|
|
describe('WorkflowItemActionPageComponent', () => {
|
|
let component: WorkflowItemActionPageComponent;
|
|
let fixture: ComponentFixture<WorkflowItemActionPageComponent>;
|
|
let wfiService;
|
|
let wfi;
|
|
let itemRD$;
|
|
let id;
|
|
|
|
function init() {
|
|
wfiService = jasmine.createSpyObj('workflowItemService', {
|
|
sendBack: observableOf(true)
|
|
});
|
|
itemRD$ = createSuccessfulRemoteDataObject$(itemRD$);
|
|
wfi = new WorkflowItem();
|
|
wfi.item = itemRD$;
|
|
id = 'de11b5e5-064a-4e98-a7ac-a1a6a65ddf80';
|
|
}
|
|
|
|
beforeEach(waitForAsync(() => {
|
|
init();
|
|
TestBed.configureTestingModule({
|
|
imports: [TranslateModule.forRoot({
|
|
loader: {
|
|
provide: TranslateLoader,
|
|
useClass: TranslateLoaderMock
|
|
}
|
|
})],
|
|
declarations: [TestComponent, VarDirective],
|
|
providers: [
|
|
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub({}, { wfi: createSuccessfulRemoteDataObject(wfi) }) },
|
|
{ provide: Router, useClass: RouterStub },
|
|
{ provide: RouteService, useValue: {} },
|
|
{ provide: NotificationsService, useClass: NotificationsServiceStub },
|
|
{ provide: WorkflowItemDataService, useValue: wfiService },
|
|
{ provide: RequestService, useClass: RequestServiceStub },
|
|
],
|
|
schemas: [NO_ERRORS_SCHEMA]
|
|
})
|
|
.compileComponents();
|
|
}));
|
|
|
|
beforeEach(() => {
|
|
fixture = TestBed.createComponent(TestComponent);
|
|
component = fixture.componentInstance;
|
|
fixture.detectChanges();
|
|
});
|
|
|
|
it('should create', () => {
|
|
expect(component).toBeTruthy();
|
|
});
|
|
|
|
it('should set the initial type correctly', () => {
|
|
expect(component.type).toEqual(type);
|
|
});
|
|
|
|
describe('clicking the button with class btn-danger', () => {
|
|
beforeEach(() => {
|
|
spyOn(component, 'performAction');
|
|
});
|
|
|
|
it('should call performAction on clicking the btn-danger', () => {
|
|
const button = fixture.debugElement.query(By.css('.btn-danger')).nativeElement;
|
|
button.click();
|
|
fixture.detectChanges();
|
|
expect(component.performAction).toHaveBeenCalled();
|
|
});
|
|
});
|
|
|
|
describe('clicking the button with class btn-default', () => {
|
|
beforeEach(() => {
|
|
spyOn(component, 'previousPage');
|
|
});
|
|
|
|
it('should call performAction on clicking the btn-default', () => {
|
|
const button = fixture.debugElement.query(By.css('.btn-default')).nativeElement;
|
|
button.click();
|
|
fixture.detectChanges();
|
|
expect(component.previousPage).toHaveBeenCalled();
|
|
});
|
|
});
|
|
});
|
|
|
|
@Component({
|
|
selector: 'ds-workflow-item-test-action-page',
|
|
templateUrl: 'workflow-item-action-page.component.html'
|
|
}
|
|
)
|
|
class TestComponent extends WorkflowItemActionPageComponent {
|
|
constructor(protected route: ActivatedRoute,
|
|
protected workflowItemService: WorkflowItemDataService,
|
|
protected router: Router,
|
|
protected routeService: RouteService,
|
|
protected notificationsService: NotificationsService,
|
|
protected translationService: TranslateService,
|
|
protected requestService: RequestService,
|
|
) {
|
|
super(route, workflowItemService, router, routeService, notificationsService, translationService, requestService);
|
|
}
|
|
|
|
getType(): string {
|
|
return type;
|
|
}
|
|
|
|
sendRequest(id: string): Observable<boolean> {
|
|
return observableOf(true);
|
|
}
|
|
}
|