forked from hazza/dspace-angular

Add the Item Withdraw and Reistate action Add the make Item Private and Public action Add the Permanently Delete action
106 lines
3.9 KiB
TypeScript
106 lines
3.9 KiB
TypeScript
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
|
|
import {Item} from '../../../core/shared/item.model';
|
|
import {RouterStub} from '../../../shared/testing/router-stub';
|
|
import {of as observableOf} from 'rxjs';
|
|
import {RestResponse} from '../../../core/cache/response-cache.models';
|
|
import {RemoteData} from '../../../core/data/remote-data';
|
|
import {NotificationsServiceStub} from '../../../shared/testing/notifications-service-stub';
|
|
import {CommonModule} from '@angular/common';
|
|
import {FormsModule} from '@angular/forms';
|
|
import {RouterTestingModule} from '@angular/router/testing';
|
|
import {TranslateModule} from '@ngx-translate/core';
|
|
import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
|
|
import {ActivatedRoute, Router} from '@angular/router';
|
|
import {ItemDataService} from '../../../core/data/item-data.service';
|
|
import {NotificationsService} from '../../../shared/notifications/notifications.service';
|
|
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
|
|
import {ItemWithdrawComponent} from './item-withdraw.component';
|
|
import {By} from '@angular/platform-browser';
|
|
|
|
let comp: ItemWithdrawComponent;
|
|
let fixture: ComponentFixture<ItemWithdrawComponent>;
|
|
|
|
let mockItem;
|
|
let itemPageUrl;
|
|
let routerStub;
|
|
let mockItemDataService: ItemDataService;
|
|
let routeStub;
|
|
let notificationsServiceStub;
|
|
let successfulRestResponse;
|
|
let failRestResponse;
|
|
|
|
describe('ItemWithdrawComponent', () => {
|
|
beforeEach(async(() => {
|
|
|
|
mockItem = Object.assign(new Item(), {
|
|
id: 'fake-id',
|
|
handle: 'fake/handle',
|
|
lastModified: '2018',
|
|
isWithdrawn: true
|
|
});
|
|
|
|
itemPageUrl = `fake-url/${mockItem.id}`;
|
|
routerStub = Object.assign(new RouterStub(), {
|
|
url: `${itemPageUrl}/edit`
|
|
});
|
|
|
|
mockItemDataService = jasmine.createSpyObj('mockItemDataService',{
|
|
setWithDrawn: observableOf(new RestResponse(true, '200'))
|
|
});
|
|
|
|
routeStub = {
|
|
data: observableOf({
|
|
item: new RemoteData(false, false, true, null, {
|
|
id: 'fake-id'
|
|
})
|
|
})
|
|
};
|
|
|
|
notificationsServiceStub = new NotificationsServiceStub();
|
|
|
|
TestBed.configureTestingModule({
|
|
imports: [CommonModule, FormsModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule.forRoot(),],
|
|
declarations: [ItemWithdrawComponent],
|
|
providers: [
|
|
{provide: ActivatedRoute, useValue: routeStub},
|
|
{provide: Router, useValue: routerStub},
|
|
{provide: ItemDataService, useValue: mockItemDataService},
|
|
{provide: NotificationsService, useValue: notificationsServiceStub},
|
|
], schemas: [
|
|
CUSTOM_ELEMENTS_SCHEMA
|
|
]
|
|
}).compileComponents();
|
|
}));
|
|
|
|
beforeEach(() => {
|
|
successfulRestResponse = new RestResponse(true, '200');
|
|
failRestResponse = new RestResponse(false, '500');
|
|
|
|
fixture = TestBed.createComponent(ItemWithdrawComponent);
|
|
comp = fixture.componentInstance;
|
|
fixture.detectChanges();
|
|
});
|
|
|
|
it('should render a page with messages based on the \'withdraw\' messageKey', () => {
|
|
const header = fixture.debugElement.query(By.css('h2')).nativeElement;
|
|
expect(header.innerHTML).toContain('item.edit.withdraw.header');
|
|
const description = fixture.debugElement.query(By.css('p')).nativeElement;
|
|
expect(description.innerHTML).toContain('item.edit.withdraw.description');
|
|
const confirmButton = fixture.debugElement.query(By.css('button.perform-action')).nativeElement;
|
|
expect(confirmButton.innerHTML).toContain('item.edit.withdraw.confirm');
|
|
const cancelButton = fixture.debugElement.query(By.css('button.cancel')).nativeElement;
|
|
expect(cancelButton.innerHTML).toContain('item.edit.withdraw.cancel');
|
|
});
|
|
|
|
describe('performAction', () => {
|
|
it('should call setWithdrawn function from the ItemDataService', () => {
|
|
spyOn(comp, 'processRestResponse');
|
|
comp.performAction();
|
|
|
|
expect(mockItemDataService.setWithDrawn).toHaveBeenCalledWith(mockItem.id, true);
|
|
expect(comp.processRestResponse).toHaveBeenCalled();
|
|
});
|
|
});
|
|
})
|
|
;
|