fix(ci): Update CI workflows, build scripts, and export configuration
This commit is contained in:
96
test/test.destination-local.node.ts
Normal file
96
test/test.destination-local.node.ts
Normal file
@ -0,0 +1,96 @@
|
||||
import { expect, tap } from '@push.rocks/tapbundle';
|
||||
import { DestinationLocal } from '../ts_destination_local/index.js';
|
||||
import * as smartlogInterfaces from '../ts_interfaces/index.js';
|
||||
|
||||
let testDestination: DestinationLocal;
|
||||
|
||||
// Mock log package
|
||||
const createMockLogPackage = (level: smartlogInterfaces.TLogLevel, message: string): smartlogInterfaces.ILogPackage => {
|
||||
return {
|
||||
timestamp: Date.now(),
|
||||
type: 'log',
|
||||
level,
|
||||
message,
|
||||
context: {
|
||||
environment: 'test',
|
||||
runtime: 'node'
|
||||
},
|
||||
correlation: {
|
||||
id: '123',
|
||||
type: 'none'
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
// Tests
|
||||
tap.test('should create a local destination instance', async () => {
|
||||
testDestination = new DestinationLocal();
|
||||
expect(testDestination).toBeTruthy();
|
||||
});
|
||||
|
||||
tap.test('should handle logs with different levels', async () => {
|
||||
// Testing with a spy would be ideal, but since we don't have a mocking framework,
|
||||
// we'll just verify the method runs without errors for different log levels
|
||||
|
||||
// Test info level
|
||||
const logPackageInfo = createMockLogPackage('info', 'Info message');
|
||||
await testDestination.handleLog(logPackageInfo);
|
||||
|
||||
// Test error level
|
||||
const logPackageError = createMockLogPackage('error', 'Error message');
|
||||
await testDestination.handleLog(logPackageError);
|
||||
|
||||
// Test warn level
|
||||
const logPackageWarn = createMockLogPackage('warn', 'Warning message');
|
||||
await testDestination.handleLog(logPackageWarn);
|
||||
|
||||
// Test silly level
|
||||
const logPackageSilly = createMockLogPackage('silly', 'Silly message');
|
||||
await testDestination.handleLog(logPackageSilly);
|
||||
});
|
||||
|
||||
tap.test('should handle reduced logging', async () => {
|
||||
testDestination = new DestinationLocal();
|
||||
|
||||
// Note: In a real test environment with a mocking framework,
|
||||
// we would capture console output and verify it's only written
|
||||
// according to the expected behavior. Here we just ensure
|
||||
// the methods execute without errors.
|
||||
|
||||
// First call with message
|
||||
testDestination.logReduced('Test message');
|
||||
|
||||
// Same message immediately after
|
||||
testDestination.logReduced('Test message');
|
||||
|
||||
// Different message
|
||||
testDestination.logReduced('Different message');
|
||||
});
|
||||
|
||||
tap.test('should handle repeated logging with repeatEveryTimesArg', async () => {
|
||||
testDestination = new DestinationLocal();
|
||||
|
||||
// First call with message
|
||||
testDestination.logReduced('Repeated with count', 3);
|
||||
|
||||
// Second call
|
||||
testDestination.logReduced('Repeated with count', 3);
|
||||
|
||||
// Third call
|
||||
testDestination.logReduced('Repeated with count', 3);
|
||||
|
||||
// Fourth call (3rd repetition)
|
||||
testDestination.logReduced('Repeated with count', 3);
|
||||
});
|
||||
|
||||
tap.test('should create new line(s)', async () => {
|
||||
testDestination = new DestinationLocal();
|
||||
|
||||
// Default 1 line
|
||||
testDestination.newLine();
|
||||
|
||||
// Multiple lines
|
||||
testDestination.newLine(3);
|
||||
});
|
||||
|
||||
export default tap.start();
|
Reference in New Issue
Block a user