Adjust IIIF info parsing to 3.0-beta spec

- respect `preferredFormats`
- correct compliance level profile formats and features
This commit is contained in:
Lutz Helm
2019-07-01 17:51:52 +02:00
parent f44a199bae
commit cc976dd4ad
2 changed files with 97 additions and 9 deletions

View File

@@ -219,7 +219,40 @@ describe('ol.format.IIIFInfo', function() {
expect(level.supports).to.contain('sizeByDistortedWh');
expect(level.supports).to.contain('sizeByWh');
// TODO test version 3 compliance level features once version 3 is final
iiifInfo.setImageInfo({
'@context': 'http://iiif.io/api/image/3/context.json',
profile: 'level0'
});
level = iiifInfo.getComplianceLevelSupportedFeatures();
expect(level.supports).to.be.empty();
iiifInfo.setImageInfo({
'@context': 'http://iiif.io/api/image/3/context.json',
profile: 'level1'
});
level = iiifInfo.getComplianceLevelSupportedFeatures();
expect(level.supports).to.have.length(5);
expect(level.supports).to.contain('regionByPx');
expect(level.supports).to.contain('regionSquare');
expect(level.supports).to.contain('sizeByW');
expect(level.supports).to.contain('sizeByH');
expect(level.supports).to.contain('sizeByWh');
iiifInfo.setImageInfo({
'@context': 'http://iiif.io/api/image/3/context.json',
profile: 'level2'
});
level = iiifInfo.getComplianceLevelSupportedFeatures();
expect(level.supports).to.have.length(8);
expect(level.supports).to.contain('regionByPx');
expect(level.supports).to.contain('regionByPct');
expect(level.supports).to.contain('regionSquare');
expect(level.supports).to.contain('sizeByW');
expect(level.supports).to.contain('sizeByH');
expect(level.supports).to.contain('sizeByWh');
expect(level.supports).to.contain('sizeByConfinedWh');
expect(level.supports).to.contain('sizeByPct');
});
});
@@ -350,7 +383,8 @@ describe('ol.format.IIIFInfo', function() {
expect(options.supports).to.contain('regionSquare');
expect(options.supports).to.contain('sizeByW');
expect(options.supports).to.contain('sizeByH');
expect(options.supports).to.have.length(6);
expect(options.supports).to.contain('sizeByWh');
expect(options.supports).to.have.length(7);
});
@@ -484,4 +518,46 @@ describe('ol.format.IIIFInfo', function() {
});
it('respects the preferred image formats', function() {
iiifInfo.setImageInfo({
'@context': 'http://iiif.io/api/image/3/context.json',
'id': 'http://iiif.test/id',
'profile': 'level0',
'preferredFormats': ['png', 'gif']
});
let options = iiifInfo.getTileSourceOptions();
expect(options.format).to.be('jpg');
iiifInfo.setImageInfo({
'@context': 'http://iiif.io/api/image/3/context.json',
'id': 'http://iiif.test/id',
'profile': 'level1',
'preferredFormats': ['png', 'gif']
});
options = iiifInfo.getTileSourceOptions();
expect(options.format).to.be('jpg');
iiifInfo.setImageInfo({
'@context': 'http://iiif.io/api/image/3/context.json',
'id': 'http://iiif.test/id',
'profile': 'level1',
'extraFormats': ['webp', 'gif'],
'preferredFormats': ['webp', 'png', 'gif']
});
options = iiifInfo.getTileSourceOptions();
expect(options.format).to.be('gif');
iiifInfo.setImageInfo({
'@context': 'http://iiif.io/api/image/3/context.json',
'id': 'http://iiif.test/id',
'profile': 'level2',
'preferredFormats': ['png', 'gif']
});
options = iiifInfo.getTileSourceOptions();
expect(options.format).to.be('png');
});
});