101623: Fix BrowseResponseParsingService + Add tests for it

This commit is contained in:
Nona Luypaert
2023-05-23 14:13:05 +02:00
parent bf31c76c88
commit f01c58e84d
3 changed files with 70 additions and 2 deletions

View File

@@ -0,0 +1,64 @@
import { getMockObjectCacheService } from '../../shared/mocks/object-cache.service.mock';
import { BrowseResponseParsingService } from './browse-response-parsing.service';
import { ObjectCacheService } from '../cache/object-cache.service';
import { HIERARCHICAL_BROWSE_DEFINITION } from '../shared/hierarchical-browse-definition.resource-type';
import { FLAT_BROWSE_DEFINITION } from '../shared/flat-browse-definition.resource-type';
import { VALUE_LIST_BROWSE_DEFINITION } from '../shared/value-list-browse-definition.resource-type';
class TestService extends BrowseResponseParsingService {
constructor(protected objectCache: ObjectCacheService) {
super(objectCache);
}
// Overwrite method to make it public for testing
public deserialize<ObjectDomain>(obj): any {
return super.deserialize(obj);
}
}
describe('BrowseResponseParsingService', () => {
let service: TestService;
beforeEach(() => {
service = new TestService(getMockObjectCacheService());
});
describe('', () => {
const mockFlatBrowse = {
id: 'title',
browseType: 'flatBrowse',
type: 'browse',
};
const mockValueList = {
id: 'author',
browseType: 'valueList',
type: 'browse',
};
const mockHierarchicalBrowse = {
id: 'srsc',
browseType: 'hierarchicalBrowse',
type: 'browse',
};
it('should deserialize flatBrowses correctly', () => {
let deserialized = service.deserialize(mockFlatBrowse);
expect(deserialized.type).toBe(FLAT_BROWSE_DEFINITION);
expect(deserialized.id).toBe(mockFlatBrowse.id);
});
it('should deserialize valueList browses correctly', () => {
let deserialized = service.deserialize(mockValueList);
expect(deserialized.type).toBe(VALUE_LIST_BROWSE_DEFINITION);
expect(deserialized.id).toBe(mockValueList.id);
});
it('should deserialize hierarchicalBrowses correctly', () => {
let deserialized = service.deserialize(mockHierarchicalBrowse);
expect(deserialized.type).toBe(HIERARCHICAL_BROWSE_DEFINITION);
expect(deserialized.id).toBe(mockHierarchicalBrowse.id);
});
});
});

View File

@@ -7,7 +7,7 @@ import {
import { FLAT_BROWSE_DEFINITION } from '../shared/flat-browse-definition.resource-type';
import { HierarchicalBrowseDefinition } from '../shared/hierarchical-browse-definition.model';
import { FlatBrowseDefinition } from '../shared/flat-browse-definition.model';
import { DSOResponseParsingService } from './dso-response-parsing.service';
import { DspaceRestResponseParsingService } from './dspace-rest-response-parsing.service';
import { Serializer } from '../serializer';
import { BrowseDefinition } from '../shared/browse-definition.model';
import { BROWSE_DEFINITION } from '../shared/browse-definition.resource-type';
@@ -20,7 +20,7 @@ import { VALUE_LIST_BROWSE_DEFINITION } from '../shared/value-list-browse-defini
@Injectable({
providedIn: 'root',
})
export class BrowseResponseParsingService extends DSOResponseParsingService {
export class BrowseResponseParsingService extends DspaceRestResponseParsingService {
constructor(
protected objectCache: ObjectCacheService,
) {

View File

@@ -10,6 +10,10 @@ import { hasNoValue, hasValue } from '../../shared/empty.util';
import { DSpaceObject } from '../shared/dspace-object.model';
import { RestRequest } from './rest-request.model';
/**
* @deprecated use DspaceRestResponseParsingService for new code, this is only left to support a
* few legacy use cases, and should get removed eventually
*/
@Injectable()
export class DSOResponseParsingService extends BaseResponseParsingService implements ResponseParsingService {
protected toCache = true;