UNPKG

@lxdhub/api

Version:

Display, search and copy LXD-images using a web interface.

95 lines (80 loc) 2.96 kB
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'); }); });