mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-13 13:03:04 +00:00
69110: EPerson Service tests
This commit is contained in:
@@ -306,7 +306,7 @@ export abstract class DataService<T extends CacheableObject> {
|
|||||||
* @return {Observable<RemoteData<PaginatedList<T>>}
|
* @return {Observable<RemoteData<PaginatedList<T>>}
|
||||||
* Return an observable that emits response from the server
|
* Return an observable that emits response from the server
|
||||||
*/
|
*/
|
||||||
protected searchBy(searchMethod: string, options: FindListOptions = {}, ...linksToFollow: Array<FollowLinkConfig<T>>): Observable<RemoteData<PaginatedList<T>>> {
|
searchBy(searchMethod: string, options: FindListOptions = {}, ...linksToFollow: Array<FollowLinkConfig<T>>): Observable<RemoteData<PaginatedList<T>>> {
|
||||||
|
|
||||||
const hrefObs = this.getSearchByHref(searchMethod, options, ...linksToFollow);
|
const hrefObs = this.getSearchByHref(searchMethod, options, ...linksToFollow);
|
||||||
|
|
||||||
|
308
src/app/core/eperson/eperson-data.service.spec.ts
Normal file
308
src/app/core/eperson/eperson-data.service.spec.ts
Normal file
@@ -0,0 +1,308 @@
|
|||||||
|
import { CommonModule } from '@angular/common';
|
||||||
|
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||||
|
import { async, TestBed } from '@angular/core/testing';
|
||||||
|
import { Store, StoreModule } from '@ngrx/store';
|
||||||
|
import { compare, Operation } from 'fast-json-patch';
|
||||||
|
import { getTestScheduler } from 'jasmine-marbles';
|
||||||
|
import { of as observableOf } from 'rxjs';
|
||||||
|
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
|
||||||
|
import { Observable } from 'rxjs/internal/Observable';
|
||||||
|
import { TestScheduler } from 'rxjs/testing';
|
||||||
|
import {
|
||||||
|
EPeopleRegistryCancelEPersonAction,
|
||||||
|
EPeopleRegistryEditEPersonAction
|
||||||
|
} from '../../+admin/admin-access-control/epeople-registry/epeople-registry.actions';
|
||||||
|
import { getMockRemoteDataBuildServiceHrefMap } from '../../shared/mocks/mock-remote-data-build.service';
|
||||||
|
import { getMockRequestService } from '../../shared/mocks/mock-request.service';
|
||||||
|
import { MockTranslateLoader } from '../../shared/mocks/mock-translate-loader';
|
||||||
|
import { EPersonMock, EPersonMock2 } from '../../shared/testing/eperson-mock';
|
||||||
|
import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service-stub';
|
||||||
|
import { createSuccessfulRemoteDataObject$ } from '../../shared/testing/utils';
|
||||||
|
import { SearchParam } from '../cache/models/search-param.model';
|
||||||
|
import { ObjectCacheService } from '../cache/object-cache.service';
|
||||||
|
import { RestResponse } from '../cache/response.models';
|
||||||
|
import { CoreState } from '../core.reducers';
|
||||||
|
import { ChangeAnalyzer } from '../data/change-analyzer';
|
||||||
|
import { PaginatedList } from '../data/paginated-list';
|
||||||
|
import { RemoteData } from '../data/remote-data';
|
||||||
|
import { DeleteByIDRequest, FindListOptions, PatchRequest } from '../data/request.models';
|
||||||
|
import { RequestEntry } from '../data/request.reducer';
|
||||||
|
import { RequestService } from '../data/request.service';
|
||||||
|
import { HALEndpointService } from '../shared/hal-endpoint.service';
|
||||||
|
import { Item } from '../shared/item.model';
|
||||||
|
import { PageInfo } from '../shared/page-info.model';
|
||||||
|
import { EPersonDataService } from './eperson-data.service';
|
||||||
|
import { EPerson } from './models/eperson.model';
|
||||||
|
|
||||||
|
describe('EPersonDataService', () => {
|
||||||
|
let service: EPersonDataService;
|
||||||
|
let store: Store<CoreState>;
|
||||||
|
let requestService: RequestService;
|
||||||
|
let scheduler: TestScheduler;
|
||||||
|
|
||||||
|
const responseCacheEntry = new RequestEntry();
|
||||||
|
responseCacheEntry.response = new RestResponse(true, 200, 'Success');
|
||||||
|
responseCacheEntry.completed = true;
|
||||||
|
|
||||||
|
const epeople = [EPersonMock, EPersonMock2];
|
||||||
|
|
||||||
|
const restEndpointURL = 'https://dspace.4science.it/dspace-spring-rest/api/eperson';
|
||||||
|
const epersonsEndpoint = `${restEndpointURL}/epersons`;
|
||||||
|
let halService: any = new HALEndpointServiceStub(restEndpointURL);
|
||||||
|
const epeople$ = createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [epeople]));
|
||||||
|
const rdbService = getMockRemoteDataBuildServiceHrefMap(undefined, { 'https://dspace.4science.it/dspace-spring-rest/api/eperson/epersons': epeople$ });
|
||||||
|
const objectCache = Object.assign({
|
||||||
|
/* tslint:disable:no-empty */
|
||||||
|
remove: () => {
|
||||||
|
},
|
||||||
|
hasBySelfLinkObservable: () => observableOf(false)
|
||||||
|
/* tslint:enable:no-empty */
|
||||||
|
}) as ObjectCacheService;
|
||||||
|
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [
|
||||||
|
CommonModule,
|
||||||
|
StoreModule.forRoot({}),
|
||||||
|
TranslateModule.forRoot({
|
||||||
|
loader: {
|
||||||
|
provide: TranslateLoader,
|
||||||
|
useClass: MockTranslateLoader
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
declarations: [],
|
||||||
|
providers: [],
|
||||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
||||||
|
});
|
||||||
|
|
||||||
|
const getRequestEntry$ = (successful: boolean) => {
|
||||||
|
return observableOf({
|
||||||
|
response: { isSuccessful: successful, payload: epeople } as any
|
||||||
|
} as RequestEntry)
|
||||||
|
};
|
||||||
|
|
||||||
|
function initTestService() {
|
||||||
|
return new EPersonDataService(
|
||||||
|
requestService,
|
||||||
|
rdbService,
|
||||||
|
store,
|
||||||
|
null,
|
||||||
|
halService,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
new DummyChangeAnalyzer() as any
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
requestService = getMockRequestService(getRequestEntry$(true));
|
||||||
|
store = new Store<CoreState>(undefined, undefined, undefined);
|
||||||
|
service = initTestService();
|
||||||
|
spyOn(store, 'dispatch');
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('searchByScope', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
spyOn(service, 'searchBy');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('search by default scope (byMetadata) and no query', () => {
|
||||||
|
service.searchByScope(null, '');
|
||||||
|
const options = Object.assign(new FindListOptions(), {
|
||||||
|
searchParams: [Object.assign(new SearchParam('query', ''))]
|
||||||
|
});
|
||||||
|
expect(service.searchBy).toHaveBeenCalledWith('byMetadata', options);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('search metadata scope and no query', () => {
|
||||||
|
service.searchByScope('metadata', '');
|
||||||
|
const options = Object.assign(new FindListOptions(), {
|
||||||
|
searchParams: [Object.assign(new SearchParam('query', ''))]
|
||||||
|
});
|
||||||
|
expect(service.searchBy).toHaveBeenCalledWith('byMetadata', options);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('search metadata scope and with query', () => {
|
||||||
|
service.searchByScope('metadata', 'test');
|
||||||
|
const options = Object.assign(new FindListOptions(), {
|
||||||
|
searchParams: [Object.assign(new SearchParam('query', 'test'))]
|
||||||
|
});
|
||||||
|
expect(service.searchBy).toHaveBeenCalledWith('byMetadata', options);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('search email scope and no query', () => {
|
||||||
|
service.searchByScope('email', '');
|
||||||
|
const options = Object.assign(new FindListOptions(), {
|
||||||
|
searchParams: [Object.assign(new SearchParam('email', ''))]
|
||||||
|
});
|
||||||
|
expect(service.searchBy).toHaveBeenCalledWith('byEmail', options);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('updateEPerson', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
spyOn(service, 'findByHref').and.returnValue(createSuccessfulRemoteDataObject$(EPersonMock));
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('change Email', () => {
|
||||||
|
const newEmail = 'changedemail@test.com';
|
||||||
|
beforeEach(() => {
|
||||||
|
const changedEPerson = Object.assign(new EPerson(), {
|
||||||
|
id: EPersonMock.id,
|
||||||
|
metadata: EPersonMock.metadata,
|
||||||
|
email: newEmail,
|
||||||
|
canLogIn: EPersonMock.canLogIn,
|
||||||
|
requireCertificate: EPersonMock.requireCertificate,
|
||||||
|
_links: EPersonMock._links,
|
||||||
|
});
|
||||||
|
service.updateEPerson(changedEPerson).subscribe();
|
||||||
|
});
|
||||||
|
it('should send PatchRequest with replace email operation', () => {
|
||||||
|
const operations = [{ op: 'replace', path: '/email', value: newEmail }];
|
||||||
|
const expected = new PatchRequest(requestService.generateRequestId(), epersonsEndpoint + '/' + EPersonMock.uuid, operations);
|
||||||
|
expect(requestService.configure).toHaveBeenCalledWith(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('change certificate', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
const changedEPerson = Object.assign(new EPerson(), {
|
||||||
|
id: EPersonMock.id,
|
||||||
|
metadata: EPersonMock.metadata,
|
||||||
|
email: EPersonMock.email,
|
||||||
|
canLogIn: EPersonMock.canLogIn,
|
||||||
|
requireCertificate: !EPersonMock.requireCertificate,
|
||||||
|
_links: EPersonMock._links,
|
||||||
|
});
|
||||||
|
service.updateEPerson(changedEPerson).subscribe();
|
||||||
|
});
|
||||||
|
it('should send PatchRequest with replace certificate operation', () => {
|
||||||
|
const operations = [{ op: 'replace', path: '/certificate', value: !EPersonMock.requireCertificate }];
|
||||||
|
const expected = new PatchRequest(requestService.generateRequestId(), epersonsEndpoint + '/' + EPersonMock.uuid, operations);
|
||||||
|
expect(requestService.configure).toHaveBeenCalledWith(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('change canLogin', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
const changedEPerson = Object.assign(new EPerson(), {
|
||||||
|
id: EPersonMock.id,
|
||||||
|
metadata: EPersonMock.metadata,
|
||||||
|
email: EPersonMock.email,
|
||||||
|
canLogIn: !EPersonMock.canLogIn,
|
||||||
|
requireCertificate: EPersonMock.requireCertificate,
|
||||||
|
_links: EPersonMock._links,
|
||||||
|
});
|
||||||
|
service.updateEPerson(changedEPerson).subscribe();
|
||||||
|
});
|
||||||
|
it('should send PatchRequest with replace canLogIn operation', () => {
|
||||||
|
const operations = [{ op: 'replace', path: '/canLogIn', value: !EPersonMock.canLogIn }];
|
||||||
|
const expected = new PatchRequest(requestService.generateRequestId(), epersonsEndpoint + '/' + EPersonMock.uuid, operations);
|
||||||
|
expect(requestService.configure).toHaveBeenCalledWith(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('change name', () => {
|
||||||
|
const newFirstName = 'changedFirst';
|
||||||
|
const newLastName = 'changedLast';
|
||||||
|
beforeEach(() => {
|
||||||
|
const changedEPerson = Object.assign(new EPerson(), {
|
||||||
|
id: EPersonMock.id,
|
||||||
|
metadata: {
|
||||||
|
'eperson.firstname': [
|
||||||
|
{
|
||||||
|
value: newFirstName,
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'eperson.lastname': [
|
||||||
|
{
|
||||||
|
value: newLastName,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
email: EPersonMock.email,
|
||||||
|
canLogIn: EPersonMock.canLogIn,
|
||||||
|
requireCertificate: EPersonMock.requireCertificate,
|
||||||
|
_links: EPersonMock._links,
|
||||||
|
});
|
||||||
|
service.updateEPerson(changedEPerson).subscribe();
|
||||||
|
});
|
||||||
|
it('should send PatchRequest with replace name metadata operations', () => {
|
||||||
|
const operations = [
|
||||||
|
{ op: 'replace', path: '/eperson.lastname/0/value', value: newLastName },
|
||||||
|
{ op: 'replace', path: '/eperson.firstname/0/value', value: newFirstName }];
|
||||||
|
const expected = new PatchRequest(requestService.generateRequestId(), epersonsEndpoint + '/' + EPersonMock.uuid, operations);
|
||||||
|
expect(requestService.configure).toHaveBeenCalledWith(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('clearEPersonRequests', () => {
|
||||||
|
beforeEach(async(() => {
|
||||||
|
scheduler = getTestScheduler();
|
||||||
|
halService = {
|
||||||
|
getEndpoint(linkPath: string): Observable<string> {
|
||||||
|
return observableOf(restEndpointURL + '/' + linkPath);
|
||||||
|
}
|
||||||
|
} as HALEndpointService;
|
||||||
|
initTestService();
|
||||||
|
service.clearEPersonRequests();
|
||||||
|
}));
|
||||||
|
it('should remove the eperson hrefs in the request service', () => {
|
||||||
|
expect(requestService.removeByHrefSubstring).toHaveBeenCalledWith(epersonsEndpoint);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('getActiveEPerson', () => {
|
||||||
|
it('should retrieve the ePerson currently getting edited, if any', () => {
|
||||||
|
service.editEPerson(EPersonMock);
|
||||||
|
|
||||||
|
service.getActiveEPerson().subscribe((activeEPerson: EPerson) => {
|
||||||
|
expect(activeEPerson).toEqual(EPersonMock);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should retrieve the ePerson currently getting edited, null if none being edited', () => {
|
||||||
|
service.getActiveEPerson().subscribe((activeEPerson: EPerson) => {
|
||||||
|
expect(activeEPerson).toEqual(null);
|
||||||
|
})
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('cancelEditEPerson', () => {
|
||||||
|
it('should dispatch a CANCEL_EDIT_EPERSON action', () => {
|
||||||
|
service.cancelEditEPerson();
|
||||||
|
expect(store.dispatch).toHaveBeenCalledWith(new EPeopleRegistryCancelEPersonAction());
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('editEPerson', () => {
|
||||||
|
it('should dispatch a EDIT_EPERSON action with the EPerson to start editing', () => {
|
||||||
|
service.editEPerson(EPersonMock);
|
||||||
|
expect(store.dispatch).toHaveBeenCalledWith(new EPeopleRegistryEditEPersonAction(EPersonMock));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('deleteEPerson', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
spyOn(service, 'findById').and.returnValue(getRemotedataObservable(EPersonMock));
|
||||||
|
service.deleteEPerson(EPersonMock).subscribe();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should send DeleteRequest', () => {
|
||||||
|
const expected = new DeleteByIDRequest(requestService.generateRequestId(), epersonsEndpoint + '/' + EPersonMock.uuid, EPersonMock.uuid);
|
||||||
|
expect(requestService.configure).toHaveBeenCalledWith(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
function getRemotedataObservable(obj: any): Observable<RemoteData<any>> {
|
||||||
|
return observableOf(new RemoteData(false, false, true, undefined, obj));
|
||||||
|
}
|
||||||
|
|
||||||
|
class DummyChangeAnalyzer implements ChangeAnalyzer<Item> {
|
||||||
|
diff(object1: Item, object2: Item): Operation[] {
|
||||||
|
return compare((object1 as any).metadata, (object2 as any).metadata);
|
||||||
|
}
|
||||||
|
}
|
@@ -78,7 +78,7 @@ export class EPersonDataService extends DataService<EPerson> {
|
|||||||
* @param query Query of search
|
* @param query Query of search
|
||||||
* @param options Options of search request
|
* @param options Options of search request
|
||||||
*/
|
*/
|
||||||
public searchByScope(scope: string, query: string, options: FindListOptions = {}) {
|
public searchByScope(scope: string, query: string, options: FindListOptions = {}): Observable<RemoteData<PaginatedList<EPerson>>> {
|
||||||
switch (scope) {
|
switch (scope) {
|
||||||
case 'metadata':
|
case 'metadata':
|
||||||
return this.getEpeopleByMetadata(query.trim(), options);
|
return this.getEpeopleByMetadata(query.trim(), options);
|
||||||
@@ -95,7 +95,7 @@ export class EPersonDataService extends DataService<EPerson> {
|
|||||||
* @param options
|
* @param options
|
||||||
* @param linksToFollow
|
* @param linksToFollow
|
||||||
*/
|
*/
|
||||||
public getEpeopleByEmail(query: string, options?: FindListOptions, ...linksToFollow: Array<FollowLinkConfig<EPerson>>): Observable<RemoteData<PaginatedList<EPerson>>> {
|
private getEpeopleByEmail(query: string, options?: FindListOptions, ...linksToFollow: Array<FollowLinkConfig<EPerson>>): Observable<RemoteData<PaginatedList<EPerson>>> {
|
||||||
const searchParams = [new SearchParam('email', query)];
|
const searchParams = [new SearchParam('email', query)];
|
||||||
return this.getEPeopleBy(searchParams, this.searchByEmailPath, options, ...linksToFollow);
|
return this.getEPeopleBy(searchParams, this.searchByEmailPath, options, ...linksToFollow);
|
||||||
}
|
}
|
||||||
@@ -106,7 +106,7 @@ export class EPersonDataService extends DataService<EPerson> {
|
|||||||
* @param options
|
* @param options
|
||||||
* @param linksToFollow
|
* @param linksToFollow
|
||||||
*/
|
*/
|
||||||
public getEpeopleByMetadata(query: string, options?: FindListOptions, ...linksToFollow: Array<FollowLinkConfig<EPerson>>): Observable<RemoteData<PaginatedList<EPerson>>> {
|
private getEpeopleByMetadata(query: string, options?: FindListOptions, ...linksToFollow: Array<FollowLinkConfig<EPerson>>): Observable<RemoteData<PaginatedList<EPerson>>> {
|
||||||
const searchParams = [new SearchParam('query', query)];
|
const searchParams = [new SearchParam('query', query)];
|
||||||
return this.getEPeopleBy(searchParams, this.searchByMetadataPath, options, ...linksToFollow);
|
return this.getEPeopleBy(searchParams, this.searchByMetadataPath, options, ...linksToFollow);
|
||||||
}
|
}
|
||||||
@@ -173,11 +173,6 @@ export class EPersonDataService extends DataService<EPerson> {
|
|||||||
op: 'replace', path: '/canLogIn', value: newEPerson.canLogIn
|
op: 'replace', path: '/canLogIn', value: newEPerson.canLogIn
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
if (hasValue(oldEPerson.netid) && oldEPerson.netid !== newEPerson.netid) {
|
|
||||||
operations = [...operations, {
|
|
||||||
op: 'replace', path: '/netid', value: newEPerson.netid
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
return operations;
|
return operations;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
import { EPerson } from '../../core/eperson/models/eperson.model';
|
import { EPerson } from '../../core/eperson/models/eperson.model';
|
||||||
|
import { GroupMock } from './group-mock';
|
||||||
|
|
||||||
export const EPersonMock: EPerson = Object.assign(new EPerson(),{
|
export const EPersonMock: EPerson = Object.assign(new EPerson(), {
|
||||||
handle: null,
|
handle: null,
|
||||||
groups: [],
|
groups: [],
|
||||||
netid: 'test@test.com',
|
netid: 'test@test.com',
|
||||||
@@ -12,7 +13,8 @@ export const EPersonMock: EPerson = Object.assign(new EPerson(),{
|
|||||||
_links: {
|
_links: {
|
||||||
self: {
|
self: {
|
||||||
href: 'https://dspace.4science.it/dspace-spring-rest/api/eperson/epersons/testid',
|
href: 'https://dspace.4science.it/dspace-spring-rest/api/eperson/epersons/testid',
|
||||||
}
|
},
|
||||||
|
groups: { href: 'https://dspace.4science.it/dspace-spring-rest/api/eperson/epersons/testid/groups' }
|
||||||
},
|
},
|
||||||
id: 'testid',
|
id: 'testid',
|
||||||
uuid: 'testid',
|
uuid: 'testid',
|
||||||
@@ -44,3 +46,49 @@ export const EPersonMock: EPerson = Object.assign(new EPerson(),{
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export const EPersonMock2: EPerson = Object.assign(new EPerson(), {
|
||||||
|
handle: null,
|
||||||
|
groups: [GroupMock],
|
||||||
|
netid: 'test2@test.com',
|
||||||
|
lastActive: '2019-05-14T12:25:42.411+0000',
|
||||||
|
canLogIn: false,
|
||||||
|
email: 'test2@test.com',
|
||||||
|
requireCertificate: false,
|
||||||
|
selfRegistered: true,
|
||||||
|
_links: {
|
||||||
|
self: {
|
||||||
|
href: 'https://dspace.4science.it/dspace-spring-rest/api/eperson/epersons/testid2',
|
||||||
|
},
|
||||||
|
groups: { href: 'https://dspace.4science.it/dspace-spring-rest/api/eperson/epersons/testid2/groups' }
|
||||||
|
},
|
||||||
|
id: 'testid2',
|
||||||
|
uuid: 'testid2',
|
||||||
|
type: 'eperson',
|
||||||
|
metadata: {
|
||||||
|
'dc.title': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: 'User Test 2'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'eperson.firstname': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: 'User2'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'eperson.lastname': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: 'Test2'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
'eperson.language': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: 'fr'
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
16
src/app/shared/testing/group-mock.ts
Normal file
16
src/app/shared/testing/group-mock.ts
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import { Group } from '../../core/eperson/models/group.model';
|
||||||
|
|
||||||
|
export const GroupMock: Group = Object.assign(new Group(), {
|
||||||
|
handle: null,
|
||||||
|
groups: [],
|
||||||
|
selfRegistered: false,
|
||||||
|
_links: {
|
||||||
|
self: {
|
||||||
|
href: 'https://dspace.4science.it/dspace-spring-rest/api/eperson/groups/testgroupid',
|
||||||
|
},
|
||||||
|
groups: { href: 'https://dspace.4science.it/dspace-spring-rest/api/eperson/groups/testgroupid/groups' }
|
||||||
|
},
|
||||||
|
id: 'testgroupid',
|
||||||
|
uuid: 'testgroupid',
|
||||||
|
type: 'group',
|
||||||
|
});
|
Reference in New Issue
Block a user