mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-14 13:33:03 +00:00
Fixes for lint and tests
This commit is contained in:
@@ -18,6 +18,8 @@ import { ItemAdminSearchResultGridElementComponent } from './item-admin-search-r
|
||||
import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils';
|
||||
import { getMockThemeService } from '../../../../../shared/mocks/theme-service.mock';
|
||||
import { ThemeService } from '../../../../../shared/theme-support/theme.service';
|
||||
import { AccessStatusDataService } from 'src/app/core/data/access-status-data.service';
|
||||
import { AccessStatusObject } from 'src/app/shared/object-list/access-status-badge/access-status.model';
|
||||
|
||||
describe('ItemAdminSearchResultGridElementComponent', () => {
|
||||
let component: ItemAdminSearchResultGridElementComponent;
|
||||
@@ -31,6 +33,12 @@ describe('ItemAdminSearchResultGridElementComponent', () => {
|
||||
}
|
||||
};
|
||||
|
||||
const mockAccessStatusDataService = {
|
||||
findAccessStatusFor(item: Item): Observable<RemoteData<AccessStatusObject>> {
|
||||
return createSuccessfulRemoteDataObject$(new AccessStatusObject());
|
||||
}
|
||||
};
|
||||
|
||||
const mockThemeService = getMockThemeService();
|
||||
|
||||
function init() {
|
||||
@@ -55,6 +63,7 @@ describe('ItemAdminSearchResultGridElementComponent', () => {
|
||||
{ provide: TruncatableService, useValue: mockTruncatableService },
|
||||
{ provide: BitstreamDataService, useValue: mockBitstreamDataService },
|
||||
{ provide: ThemeService, useValue: mockThemeService },
|
||||
{ provide: AccessStatusDataService, useValue: mockAccessStatusDataService },
|
||||
],
|
||||
schemas: [NO_ERRORS_SCHEMA]
|
||||
})
|
||||
|
81
src/app/core/data/access-status-data.service.spec.ts
Normal file
81
src/app/core/data/access-status-data.service.spec.ts
Normal file
@@ -0,0 +1,81 @@
|
||||
import { RequestService } from './request.service';
|
||||
import { getMockRequestService } from '../../shared/mocks/request.service.mock';
|
||||
import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub';
|
||||
import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub';
|
||||
import { fakeAsync, tick } from '@angular/core/testing';
|
||||
import { GetRequest } from './request.models';
|
||||
import { ObjectCacheService } from '../cache/object-cache.service';
|
||||
import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service';
|
||||
import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils';
|
||||
import { Observable } from 'rxjs';
|
||||
import { RemoteData } from './remote-data';
|
||||
import { hasNoValue } from '../../shared/empty.util';
|
||||
import { AccessStatusDataService } from './access-status-data.service';
|
||||
import { Item } from '../shared/item.model';
|
||||
|
||||
const url = 'fake-url';
|
||||
|
||||
describe('AccessStatusDataService', () => {
|
||||
let service: AccessStatusDataService;
|
||||
let requestService: RequestService;
|
||||
let notificationsService: any;
|
||||
let rdbService: RemoteDataBuildService;
|
||||
let objectCache: ObjectCacheService;
|
||||
let halService: any;
|
||||
|
||||
const itemId = '8b3c613a-5a4b-438b-9686-be1d5b4a1c5a';
|
||||
const mockItem: Item = Object.assign(new Item(), {
|
||||
id: itemId,
|
||||
name: 'test-item',
|
||||
_links: {
|
||||
accessStatus: {
|
||||
href: `https://rest.api/items/${itemId}/accessStatus`
|
||||
},
|
||||
self: {
|
||||
href: `https://rest.api/items/${itemId}`
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
describe('when the requests are successful', () => {
|
||||
beforeEach(() => {
|
||||
createService();
|
||||
});
|
||||
|
||||
describe('when calling findAccessStatusFor', () => {
|
||||
let contentSource$;
|
||||
|
||||
beforeEach(() => {
|
||||
contentSource$ = service.findAccessStatusFor(mockItem);
|
||||
});
|
||||
|
||||
it('should send a new GetRequest', fakeAsync(() => {
|
||||
contentSource$.subscribe();
|
||||
tick();
|
||||
expect(requestService.send).toHaveBeenCalledWith(jasmine.any(GetRequest), true);
|
||||
}));
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* Create an AccessStatusDataService used for testing
|
||||
* @param reponse$ Supply a RemoteData to be returned by the REST API (optional)
|
||||
*/
|
||||
function createService(reponse$?: Observable<RemoteData<any>>) {
|
||||
requestService = getMockRequestService();
|
||||
let buildResponse$ = reponse$;
|
||||
if (hasNoValue(reponse$)) {
|
||||
buildResponse$ = createSuccessfulRemoteDataObject$({});
|
||||
}
|
||||
rdbService = jasmine.createSpyObj('rdbService', {
|
||||
buildFromRequestUUID: buildResponse$,
|
||||
buildSingle: buildResponse$
|
||||
});
|
||||
objectCache = jasmine.createSpyObj('objectCache', {
|
||||
remove: jasmine.createSpy('remove')
|
||||
});
|
||||
halService = new HALEndpointServiceStub(url);
|
||||
notificationsService = new NotificationsServiceStub();
|
||||
service = new AccessStatusDataService(null, halService, null, notificationsService, objectCache, rdbService, requestService, null);
|
||||
}
|
||||
});
|
@@ -184,33 +184,6 @@ describe('ItemDataService', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('getAccessStatusEndpoint', () => {
|
||||
beforeEach(() => {
|
||||
service = initTestService();
|
||||
});
|
||||
it('should retrieve the access status endpoint', () => {
|
||||
const itemId = '3de6ea60-ec39-419b-ae6f-065930ac1429';
|
||||
const result = service.getAccessStatusEndpoint(itemId);
|
||||
result.subscribe(((value) => {
|
||||
expect(value).toEqual(`${itemEndpoint}/items/${itemId}/accessStatus`);
|
||||
}));
|
||||
});
|
||||
});
|
||||
|
||||
describe('getAccessStatus', () => {
|
||||
beforeEach(() => {
|
||||
service = initTestService();
|
||||
});
|
||||
it('should send a GET request', (done) => {
|
||||
const itemId = '3de6ea60-ec39-419b-ae6f-065930ac1429';
|
||||
const result = service.getAccessStatus(itemId);
|
||||
result.subscribe(() => {
|
||||
expect(requestService.send).toHaveBeenCalledWith(jasmine.any(GetRequest));
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('when cache is invalidated', () => {
|
||||
beforeEach(() => {
|
||||
service = initTestService();
|
||||
|
@@ -6,8 +6,9 @@ import { NO_ERRORS_SCHEMA } from '@angular/core';
|
||||
import { AccessStatusBadgeComponent } from './access-status-badge.component';
|
||||
import { createSuccessfulRemoteDataObject$ } from '../../remote-data.utils';
|
||||
import { By } from '@angular/platform-browser';
|
||||
import { ItemDataService } from 'src/app/core/data/item-data.service';
|
||||
import { AccessStatusObject } from './access-status.model';
|
||||
import { AccessStatusDataService } from 'src/app/core/data/access-status-data.service';
|
||||
import { environment } from 'src/environments/environment';
|
||||
|
||||
describe('ItemAccessStatusBadgeComponent', () => {
|
||||
let component: AccessStatusBadgeComponent;
|
||||
@@ -19,7 +20,7 @@ describe('ItemAccessStatusBadgeComponent', () => {
|
||||
let embargoStatus: AccessStatusObject;
|
||||
let restrictedStatus: AccessStatusObject;
|
||||
|
||||
let itemDataService: ItemDataService;
|
||||
let accessStatusDataService: AccessStatusDataService;
|
||||
|
||||
let item: Item;
|
||||
|
||||
@@ -44,8 +45,8 @@ describe('ItemAccessStatusBadgeComponent', () => {
|
||||
status: 'restricted'
|
||||
});
|
||||
|
||||
itemDataService = jasmine.createSpyObj('itemDataService', {
|
||||
getAccessStatus: createSuccessfulRemoteDataObject$(unknownStatus)
|
||||
accessStatusDataService = jasmine.createSpyObj('accessStatusDataService', {
|
||||
findAccessStatusFor: createSuccessfulRemoteDataObject$(unknownStatus)
|
||||
});
|
||||
|
||||
item = Object.assign(new Item(), {
|
||||
@@ -59,16 +60,18 @@ describe('ItemAccessStatusBadgeComponent', () => {
|
||||
declarations: [AccessStatusBadgeComponent, TruncatePipe],
|
||||
schemas: [NO_ERRORS_SCHEMA],
|
||||
providers: [
|
||||
{provide: ItemDataService, useValue: itemDataService}
|
||||
{provide: AccessStatusDataService, useValue: accessStatusDataService}
|
||||
]
|
||||
}).compileComponents();
|
||||
}
|
||||
|
||||
function initFixtureAndComponent() {
|
||||
environment.item.showAccessStatuses = true;
|
||||
fixture = TestBed.createComponent(AccessStatusBadgeComponent);
|
||||
component = fixture.componentInstance;
|
||||
component.uuid = item.uuid;
|
||||
component.item = item;
|
||||
fixture.detectChanges();
|
||||
environment.item.showAccessStatuses = false;
|
||||
}
|
||||
|
||||
function lookForAccessStatusBadge(status: string) {
|
||||
@@ -89,7 +92,7 @@ describe('ItemAccessStatusBadgeComponent', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('When the getAccessStatus method returns unknown', () => {
|
||||
describe('When the findAccessStatusFor method returns unknown', () => {
|
||||
beforeEach(waitForAsync(() => {
|
||||
init();
|
||||
initTestBed();
|
||||
@@ -102,10 +105,10 @@ describe('ItemAccessStatusBadgeComponent', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('When the getAccessStatus method returns metadata.only', () => {
|
||||
describe('When the findAccessStatusFor method returns metadata.only', () => {
|
||||
beforeEach(waitForAsync(() => {
|
||||
init();
|
||||
(itemDataService.getAccessStatus as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(metadataOnlyStatus));
|
||||
(accessStatusDataService.findAccessStatusFor as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(metadataOnlyStatus));
|
||||
initTestBed();
|
||||
}));
|
||||
beforeEach(() => {
|
||||
@@ -116,10 +119,10 @@ describe('ItemAccessStatusBadgeComponent', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('When the getAccessStatus method returns open.access', () => {
|
||||
describe('When the findAccessStatusFor method returns open.access', () => {
|
||||
beforeEach(waitForAsync(() => {
|
||||
init();
|
||||
(itemDataService.getAccessStatus as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(openAccessStatus));
|
||||
(accessStatusDataService.findAccessStatusFor as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(openAccessStatus));
|
||||
initTestBed();
|
||||
}));
|
||||
beforeEach(() => {
|
||||
@@ -130,10 +133,10 @@ describe('ItemAccessStatusBadgeComponent', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('When the getAccessStatus method returns embargo', () => {
|
||||
describe('When the findAccessStatusFor method returns embargo', () => {
|
||||
beforeEach(waitForAsync(() => {
|
||||
init();
|
||||
(itemDataService.getAccessStatus as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(embargoStatus));
|
||||
(accessStatusDataService.findAccessStatusFor as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(embargoStatus));
|
||||
initTestBed();
|
||||
}));
|
||||
beforeEach(() => {
|
||||
@@ -144,10 +147,10 @@ describe('ItemAccessStatusBadgeComponent', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('When the getAccessStatus method returns restricted', () => {
|
||||
describe('When the findAccessStatusFor method returns restricted', () => {
|
||||
beforeEach(waitForAsync(() => {
|
||||
init();
|
||||
(itemDataService.getAccessStatus as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(restrictedStatus));
|
||||
(accessStatusDataService.findAccessStatusFor as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(restrictedStatus));
|
||||
initTestBed();
|
||||
}));
|
||||
beforeEach(() => {
|
||||
|
Reference in New Issue
Block a user