mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-13 13:03:04 +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 { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils';
|
||||||
import { getMockThemeService } from '../../../../../shared/mocks/theme-service.mock';
|
import { getMockThemeService } from '../../../../../shared/mocks/theme-service.mock';
|
||||||
import { ThemeService } from '../../../../../shared/theme-support/theme.service';
|
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', () => {
|
describe('ItemAdminSearchResultGridElementComponent', () => {
|
||||||
let component: 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();
|
const mockThemeService = getMockThemeService();
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
@@ -55,6 +63,7 @@ describe('ItemAdminSearchResultGridElementComponent', () => {
|
|||||||
{ provide: TruncatableService, useValue: mockTruncatableService },
|
{ provide: TruncatableService, useValue: mockTruncatableService },
|
||||||
{ provide: BitstreamDataService, useValue: mockBitstreamDataService },
|
{ provide: BitstreamDataService, useValue: mockBitstreamDataService },
|
||||||
{ provide: ThemeService, useValue: mockThemeService },
|
{ provide: ThemeService, useValue: mockThemeService },
|
||||||
|
{ provide: AccessStatusDataService, useValue: mockAccessStatusDataService },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
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', () => {
|
describe('when cache is invalidated', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
service = initTestService();
|
service = initTestService();
|
||||||
|
@@ -6,8 +6,9 @@ import { NO_ERRORS_SCHEMA } from '@angular/core';
|
|||||||
import { AccessStatusBadgeComponent } from './access-status-badge.component';
|
import { AccessStatusBadgeComponent } from './access-status-badge.component';
|
||||||
import { createSuccessfulRemoteDataObject$ } from '../../remote-data.utils';
|
import { createSuccessfulRemoteDataObject$ } from '../../remote-data.utils';
|
||||||
import { By } from '@angular/platform-browser';
|
import { By } from '@angular/platform-browser';
|
||||||
import { ItemDataService } from 'src/app/core/data/item-data.service';
|
|
||||||
import { AccessStatusObject } from './access-status.model';
|
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', () => {
|
describe('ItemAccessStatusBadgeComponent', () => {
|
||||||
let component: AccessStatusBadgeComponent;
|
let component: AccessStatusBadgeComponent;
|
||||||
@@ -19,7 +20,7 @@ describe('ItemAccessStatusBadgeComponent', () => {
|
|||||||
let embargoStatus: AccessStatusObject;
|
let embargoStatus: AccessStatusObject;
|
||||||
let restrictedStatus: AccessStatusObject;
|
let restrictedStatus: AccessStatusObject;
|
||||||
|
|
||||||
let itemDataService: ItemDataService;
|
let accessStatusDataService: AccessStatusDataService;
|
||||||
|
|
||||||
let item: Item;
|
let item: Item;
|
||||||
|
|
||||||
@@ -44,8 +45,8 @@ describe('ItemAccessStatusBadgeComponent', () => {
|
|||||||
status: 'restricted'
|
status: 'restricted'
|
||||||
});
|
});
|
||||||
|
|
||||||
itemDataService = jasmine.createSpyObj('itemDataService', {
|
accessStatusDataService = jasmine.createSpyObj('accessStatusDataService', {
|
||||||
getAccessStatus: createSuccessfulRemoteDataObject$(unknownStatus)
|
findAccessStatusFor: createSuccessfulRemoteDataObject$(unknownStatus)
|
||||||
});
|
});
|
||||||
|
|
||||||
item = Object.assign(new Item(), {
|
item = Object.assign(new Item(), {
|
||||||
@@ -59,16 +60,18 @@ describe('ItemAccessStatusBadgeComponent', () => {
|
|||||||
declarations: [AccessStatusBadgeComponent, TruncatePipe],
|
declarations: [AccessStatusBadgeComponent, TruncatePipe],
|
||||||
schemas: [NO_ERRORS_SCHEMA],
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
providers: [
|
providers: [
|
||||||
{provide: ItemDataService, useValue: itemDataService}
|
{provide: AccessStatusDataService, useValue: accessStatusDataService}
|
||||||
]
|
]
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}
|
}
|
||||||
|
|
||||||
function initFixtureAndComponent() {
|
function initFixtureAndComponent() {
|
||||||
|
environment.item.showAccessStatuses = true;
|
||||||
fixture = TestBed.createComponent(AccessStatusBadgeComponent);
|
fixture = TestBed.createComponent(AccessStatusBadgeComponent);
|
||||||
component = fixture.componentInstance;
|
component = fixture.componentInstance;
|
||||||
component.uuid = item.uuid;
|
component.item = item;
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
environment.item.showAccessStatuses = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function lookForAccessStatusBadge(status: string) {
|
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(() => {
|
beforeEach(waitForAsync(() => {
|
||||||
init();
|
init();
|
||||||
initTestBed();
|
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(() => {
|
beforeEach(waitForAsync(() => {
|
||||||
init();
|
init();
|
||||||
(itemDataService.getAccessStatus as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(metadataOnlyStatus));
|
(accessStatusDataService.findAccessStatusFor as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(metadataOnlyStatus));
|
||||||
initTestBed();
|
initTestBed();
|
||||||
}));
|
}));
|
||||||
beforeEach(() => {
|
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(() => {
|
beforeEach(waitForAsync(() => {
|
||||||
init();
|
init();
|
||||||
(itemDataService.getAccessStatus as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(openAccessStatus));
|
(accessStatusDataService.findAccessStatusFor as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(openAccessStatus));
|
||||||
initTestBed();
|
initTestBed();
|
||||||
}));
|
}));
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
@@ -130,10 +133,10 @@ describe('ItemAccessStatusBadgeComponent', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('When the getAccessStatus method returns embargo', () => {
|
describe('When the findAccessStatusFor method returns embargo', () => {
|
||||||
beforeEach(waitForAsync(() => {
|
beforeEach(waitForAsync(() => {
|
||||||
init();
|
init();
|
||||||
(itemDataService.getAccessStatus as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(embargoStatus));
|
(accessStatusDataService.findAccessStatusFor as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(embargoStatus));
|
||||||
initTestBed();
|
initTestBed();
|
||||||
}));
|
}));
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
@@ -144,10 +147,10 @@ describe('ItemAccessStatusBadgeComponent', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('When the getAccessStatus method returns restricted', () => {
|
describe('When the findAccessStatusFor method returns restricted', () => {
|
||||||
beforeEach(waitForAsync(() => {
|
beforeEach(waitForAsync(() => {
|
||||||
init();
|
init();
|
||||||
(itemDataService.getAccessStatus as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(restrictedStatus));
|
(accessStatusDataService.findAccessStatusFor as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(restrictedStatus));
|
||||||
initTestBed();
|
initTestBed();
|
||||||
}));
|
}));
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
Reference in New Issue
Block a user