97 lines
3.1 KiB
TypeScript
97 lines
3.1 KiB
TypeScript
![]() |
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
||
|
import * as smartpdf from '../ts/index.js';
|
||
|
|
||
|
tap.test('should create multiple SmartPdf instances with automatic port allocation', async () => {
|
||
|
const instance1 = new smartpdf.SmartPdf();
|
||
|
const instance2 = new smartpdf.SmartPdf();
|
||
|
const instance3 = new smartpdf.SmartPdf();
|
||
|
|
||
|
// Start all instances
|
||
|
await instance1.start();
|
||
|
await instance2.start();
|
||
|
await instance3.start();
|
||
|
|
||
|
// Verify all instances have different ports
|
||
|
expect(instance1.serverPort).toBeGreaterThanOrEqual(20000);
|
||
|
expect(instance1.serverPort).toBeLessThanOrEqual(30000);
|
||
|
expect(instance2.serverPort).toBeGreaterThanOrEqual(20000);
|
||
|
expect(instance2.serverPort).toBeLessThanOrEqual(30000);
|
||
|
expect(instance3.serverPort).toBeGreaterThanOrEqual(20000);
|
||
|
expect(instance3.serverPort).toBeLessThanOrEqual(30000);
|
||
|
|
||
|
// Ensure all ports are different
|
||
|
expect(instance1.serverPort).not.toEqual(instance2.serverPort);
|
||
|
expect(instance1.serverPort).not.toEqual(instance3.serverPort);
|
||
|
expect(instance2.serverPort).not.toEqual(instance3.serverPort);
|
||
|
|
||
|
console.log(`Instance 1 port: ${instance1.serverPort}`);
|
||
|
console.log(`Instance 2 port: ${instance2.serverPort}`);
|
||
|
console.log(`Instance 3 port: ${instance3.serverPort}`);
|
||
|
|
||
|
// Test that all instances work correctly
|
||
|
const pdf1 = await instance1.getA4PdfResultForHtmlString('<h1>Instance 1</h1>');
|
||
|
const pdf2 = await instance2.getA4PdfResultForHtmlString('<h1>Instance 2</h1>');
|
||
|
const pdf3 = await instance3.getA4PdfResultForHtmlString('<h1>Instance 3</h1>');
|
||
|
|
||
|
expect(pdf1.buffer).toBeInstanceOf(Buffer);
|
||
|
expect(pdf2.buffer).toBeInstanceOf(Buffer);
|
||
|
expect(pdf3.buffer).toBeInstanceOf(Buffer);
|
||
|
|
||
|
// Clean up
|
||
|
await instance1.stop();
|
||
|
await instance2.stop();
|
||
|
await instance3.stop();
|
||
|
});
|
||
|
|
||
|
tap.test('should create SmartPdf instance with custom port range', async () => {
|
||
|
const customInstance = new smartpdf.SmartPdf({
|
||
|
portRangeStart: 25000,
|
||
|
portRangeEnd: 26000
|
||
|
});
|
||
|
|
||
|
await customInstance.start();
|
||
|
|
||
|
expect(customInstance.serverPort).toBeGreaterThanOrEqual(25000);
|
||
|
expect(customInstance.serverPort).toBeLessThanOrEqual(26000);
|
||
|
|
||
|
console.log(`Custom range instance port: ${customInstance.serverPort}`);
|
||
|
|
||
|
await customInstance.stop();
|
||
|
});
|
||
|
|
||
|
tap.test('should create SmartPdf instance with specific port', async () => {
|
||
|
const specificPortInstance = new smartpdf.SmartPdf({
|
||
|
port: 28888
|
||
|
});
|
||
|
|
||
|
await specificPortInstance.start();
|
||
|
|
||
|
expect(specificPortInstance.serverPort).toEqual(28888);
|
||
|
|
||
|
console.log(`Specific port instance: ${specificPortInstance.serverPort}`);
|
||
|
|
||
|
await specificPortInstance.stop();
|
||
|
});
|
||
|
|
||
|
tap.test('should throw error when specific port is already in use', async () => {
|
||
|
const instance1 = new smartpdf.SmartPdf({ port: 29999 });
|
||
|
await instance1.start();
|
||
|
|
||
|
const instance2 = new smartpdf.SmartPdf({ port: 29999 });
|
||
|
|
||
|
let errorThrown = false;
|
||
|
try {
|
||
|
await instance2.start();
|
||
|
} catch (error) {
|
||
|
errorThrown = true;
|
||
|
expect(error.message).toInclude('already in use');
|
||
|
}
|
||
|
|
||
|
expect(errorThrown).toBeTrue();
|
||
|
|
||
|
await instance1.stop();
|
||
|
});
|
||
|
|
||
|
|
||
|
|
||
|
export default tap.start();
|