@lxdhub/api
Version:
Display, search and copy LXD-images using a web interface.
95 lines (80 loc) • 2.96 kB
text/typescript
import {
Alias,
Architecture,
Image,
ImageAvailability,
OperatingSystem,
OperatingSystemArchitecture,
Remote,
} from '@lxdhub/db';
import { Test } from '@nestjs/testing';
import { SourceImageFactory } from './source-image-dto.factory';
/**
* Test cases for the ImageDetailFactory
*/
describe('SourceImageFactory', () => {
let sourceImageFactory: SourceImageFactory;
const date1 = new Date();
const image1 = new Image();
const alias = new Alias();
const architecture = new Architecture();
const operatingSystem = new OperatingSystem();
const osArch = new OperatingSystemArchitecture();
const imageAvailability = new ImageAvailability();
const remote = new Remote();
let sourceRemote: Remote;
let destinationRemote: Remote;
beforeEach(async () => {
// Mock Image Module
const module = await Test.createTestingModule({
providers: [
SourceImageFactory
]
}).compile();
// Get the image detail factory
sourceImageFactory = module.get<SourceImageFactory>(SourceImageFactory);
});
beforeEach(() => {
remote.id = 1;
remote.name = 'remotename';
remote.public = true;
remote.readonly = true;
imageAvailability.remote = remote;
imageAvailability.available = true;
architecture.humanName = 'amd64';
architecture.processorName = 'amd64';
operatingSystem.distribution = 'ubuntu';
operatingSystem.release = 'xenial';
operatingSystem.version = '16.04';
osArch.operatingSystem = operatingSystem;
osArch.architecture = architecture;
alias.image = image1;
alias.name = 'alias1';
alias.id = 1;
alias.description = 'desc1';
image1.fingerprint = 'fingerprint1';
image1.uploadedAt = date1;
image1.description = 'desc1';
image1.id = 1;
image1.expiresAt = new Date();
image1.autoUpdate = true;
image1.createdAt = date1;
image1.aliases = [alias];
image1.osArchitecture = osArch;
image1.createdAt = date1;
image1.expiresAt = date1;
image1.size = '13 b';
image1.public = true;
image1.imageAvailabilities = [imageAvailability];
sourceRemote = { id: 1, serverUrl: 'https://source.ch' } as Remote;
destinationRemote = { id: 1, serverUrl: 'https://destination.ch', public: false } as Remote;
});
it('should transform to the correct dto', () => {
const sourceImage = sourceImageFactory.entityToDto(image1, sourceRemote, destinationRemote);
expect(sourceImage.public).toBe(false);
expect(sourceImage.source.server).toBe(sourceRemote.serverUrl);
expect(sourceImage.source.mode).toBe('pull');
expect(sourceImage.source.protocol).toBe('lxd');
expect(sourceImage.source.type).toBe('image');
});
});