mirror of
https://github.com/xuthus83/pigallery2.git
synced 2024-11-03 21:04:03 +08:00
b6b576ba2f
This enables to extract common string into a map and only reference their values. This is expected to bring a further 43% savings on search results. Altogether leading to a 50% reduction. #437
90 lines
3.3 KiB
TypeScript
90 lines
3.3 KiB
TypeScript
import {expect} from 'chai';
|
|
import {ContentWrapper} from '../../../src/common/entities/ConentWrapper';
|
|
import {TestHelper} from '../../TestHelper';
|
|
import {DirectoryPathDTO, ParentDirectoryDTO} from '../../../src/common/entities/DirectoryDTO';
|
|
import {SearchResultDTO} from '../../../src/common/entities/SearchResultDTO';
|
|
import {SearchQueryTypes, TextSearch} from '../../../src/common/entities/SearchQueryDTO';
|
|
import {Utils} from '../../../src/common/Utils';
|
|
import {MediaDTOUtils} from '../../../src/common/entities/MediaDTO';
|
|
import {VideoDTO} from '../../../src/common/entities/VideoDTO';
|
|
import {PhotoDTO} from '../../../src/common/entities/PhotoDTO';
|
|
|
|
|
|
describe('ContentWrapper', () => {
|
|
|
|
const cleanUpCW = (cw: ContentWrapper): ContentWrapper => {
|
|
if (typeof cw.notModified === 'undefined') {
|
|
delete cw.notModified;
|
|
}
|
|
|
|
const content = (cw.directory ? cw.directory : cw.searchResult);
|
|
for (let i = 0; i < content.media.length; ++i) {
|
|
const m = content.media[i];
|
|
if (MediaDTOUtils.isPhoto(m)) {
|
|
delete (m as VideoDTO).metadata.bitRate;
|
|
delete (m as VideoDTO).metadata.duration;
|
|
if (!(m as PhotoDTO).metadata.caption) {
|
|
delete (m as PhotoDTO).metadata.caption;
|
|
}
|
|
} else if (MediaDTOUtils.isVideo(m)) {
|
|
delete (m as PhotoDTO).metadata.rating;
|
|
delete (m as PhotoDTO).metadata.caption;
|
|
delete (m as PhotoDTO).metadata.cameraData;
|
|
delete (m as PhotoDTO).metadata.keywords;
|
|
delete (m as PhotoDTO).metadata.faces;
|
|
delete (m as PhotoDTO).metadata.positionData;
|
|
}
|
|
}
|
|
for (let i = 0; i < content.metaFile.length; ++i) {
|
|
delete content.metaFile[i].id;
|
|
}
|
|
return cw;
|
|
};
|
|
|
|
it('pack and unpack directory', () => {
|
|
const parent = TestHelper.getDirectoryEntry();
|
|
TestHelper.getPhotoEntry(parent);
|
|
TestHelper.getPhotoEntry1(parent);
|
|
TestHelper.getPhotoEntry2(parent);
|
|
TestHelper.getVideoEntry(parent);
|
|
TestHelper.getGPXEntry(parent);
|
|
const parentOrig = TestHelper.getDirectoryEntry();
|
|
TestHelper.getPhotoEntry(parentOrig);
|
|
TestHelper.getPhotoEntry1(parentOrig);
|
|
TestHelper.getPhotoEntry2(parentOrig);
|
|
TestHelper.getVideoEntry(parentOrig);
|
|
TestHelper.getGPXEntry(parentOrig);
|
|
const cwOrig = new ContentWrapper(parentOrig as ParentDirectoryDTO, null);
|
|
const cw = new ContentWrapper(parent as ParentDirectoryDTO, null);
|
|
expect(ContentWrapper.unpack(ContentWrapper.pack(cw))).to.deep.equals(cleanUpCW(cwOrig));
|
|
});
|
|
it('pack and unpack search result', () => {
|
|
|
|
const parent: DirectoryPathDTO = {
|
|
name: 'parent',
|
|
path: ''
|
|
};
|
|
|
|
const subDir: DirectoryPathDTO = {
|
|
name: 'subDir',
|
|
path: 'parent/'
|
|
};
|
|
|
|
const sr: SearchResultDTO = {
|
|
directories: [subDir as any],
|
|
media: [TestHelper.getPhotoEntry(parent),
|
|
TestHelper.getPhotoEntry1(parent),
|
|
TestHelper.getPhotoEntry2(subDir),
|
|
TestHelper.getVideoEntry(parent)
|
|
],
|
|
metaFile: [
|
|
TestHelper.getGPXEntry(parent)],
|
|
resultOverflow: false,
|
|
searchQuery: {type: SearchQueryTypes.any_text, text: ''} as TextSearch
|
|
};
|
|
|
|
const cw = new ContentWrapper(null, sr);
|
|
expect(ContentWrapper.unpack(ContentWrapper.pack(Utils.clone(cw)))).to.deep.equals(cleanUpCW(cw));
|
|
});
|
|
});
|