Skip to content

Commit

Permalink
chore: extract test drivers and fix createlumberjack tests
Browse files Browse the repository at this point in the history
  • Loading branch information
NachoVazquez committed May 21, 2023
1 parent 96b1c2e commit edf418e
Show file tree
Hide file tree
Showing 41 changed files with 1,071 additions and 238 deletions.
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@
"scripts": {
"postinstall": "node ./decorate-angular-cli.js",
"build": "nx run-many --target=build --all",
"ci": "yarn lint && yarn test && yarn build && yarn e2e",
"ci": "yarn format:check && yarn lint && yarn test && yarn build && yarn e2e",
"clean": "rimraf dist coverage reports",
"configure-sonar-report-paths": "node tools/scripts/configure-sonar-report-paths.mjs",
"delete-path-alias": "node tools/scripts/delete-path-alias.mjs",
"e2e": "nx run-many --target=e2e --all --parallel=1",
"format": "yarn nx format:write",
"format:check": "yarn nx format:check",
"lint": "nx run-many --target=lint --all --max-warnings=0",
"ng": "nx",
"nx": "nx",
Expand Down
9 changes: 0 additions & 9 deletions packages/internal/angular/test-util/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,12 @@ export * from './lib/angular/expect-ng-module-to-be-guarded-against-direct-impor
export * from './lib/angular/expect-ng-module-to-be-guarded-against-duplicate-registration';

// Error-throwing driver
export * from './lib/error-throwing-driver/error-throwing-driver.config';
export * from './lib/error-throwing-driver/error-throwing-driver.module';
export * from './lib/error-throwing-driver/error-throwing-driver.options';
export * from './lib/error-throwing-driver/error-throwing-driver-root.module';
export * from './lib/error-throwing-driver/error-throwing.driver';

// Functions
export * from './lib/functions/repeat-side-effect';

// No-op driver
export * from './lib/noop-driver/noop-driver.module';
export * from './lib/noop-driver/noop-driver-root.module';
export * from './lib/noop-driver/noop.driver';

// Spy driver
export * from './lib/spy-driver/spy-driver.module';
Expand All @@ -28,9 +21,7 @@ export * from './lib/spy-driver/spy-driver-root.module';
// Object driver
export * from './lib/object-driver/object-driver.module';
export * from './lib/object-driver/object-driver-root.module';
export * from './lib/object-driver/object.driver';
export * from './lib/object-driver/object.service';
export * from './lib/object-driver/object.payload';

// Time
export * from './lib/time/fake-time.service';
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { InjectionToken } from '@angular/core';

import { ErrorThrowingDriverConfig } from './error-throwing-driver.config';
import { ErrorThrowingDriverConfig } from '@internal/core/test-util';

export const errorThrowingDriverConfigToken = new InjectionToken<ErrorThrowingDriverConfig>(
'__ERROR_THROWING_DRIVER_CONFIG__'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
import { inject, NgModule } from '@angular/core';

import { createErrorThrowingDriver } from '@internal/core/test-util';
import { lumberjackLogDriverToken } from '@ngworker/lumberjack';

import { ErrorThrowingDriver } from './error-throwing.driver';
import { errorThrowingDriverConfigToken } from './error-throwing-driver-config.token';

@NgModule({
providers: [
{
provide: lumberjackLogDriverToken,
useClass: ErrorThrowingDriver,
useFactory: createErrorThrowingDriver,
multi: true,
deps: [errorThrowingDriverConfigToken],
},
],
})
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
import { ModuleWithProviders, NgModule } from '@angular/core';

import {
defaultErrorThrowingDriverConfig,
defaultErrorThrowingDriverOptions,
ErrorThrowingDriverConfig,
ErrorThrowingDriverOptions,
} from '@internal/core/test-util';
import { lumberjackLogDriverConfigToken } from '@ngworker/lumberjack';
import { LumberjackLogDriverConfig } from '@webworker/lumberjack';

import { defaultErrorThrowingDriverConfig } from './default-error-throwing-driver-config';
import { defaultErrorThrowingDriverOptions } from './default-error-throwing-driver-options';
import { errorThrowingDriverConfigToken } from './error-throwing-driver-config.token';
import { ErrorThrowingDriverRootModule } from './error-throwing-driver-root.module';
import { ErrorThrowingDriverConfig } from './error-throwing-driver.config';
import { ErrorThrowingDriverOptions } from './error-throwing-driver.options';

/**
* Service module for `ErrorThrowingDriver`.
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
import { inject, NgModule } from '@angular/core';

import { createNoopDriver, NoopDriverConfig } from '@internal/core/test-util';
import { lumberjackLogDriverToken } from '@ngworker/lumberjack';

import { NoopDriver } from './noop.driver';
import { noopDriverConfigToken } from './noop-driver-config.token';

@NgModule({
providers: [
{
provide: lumberjackLogDriverToken,
useClass: NoopDriver,
useFactory: (config: NoopDriverConfig) => createNoopDriver(config),
multi: true,
deps: [noopDriverConfigToken],
},
],
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@ import { ModuleWithProviders, NgModule } from '@angular/core';

import { LumberjackLogDriverConfig } from '@webworker/lumberjack';
import { lumberjackLogDriverConfigToken } from '@ngworker/lumberjack';
import { NoopDriverConfig, noopDriverIdentifier } from '@internal/core/test-util';

import { noopDriverConfigToken } from './noop-driver-config.token';
import { NoopDriverRootModule } from './noop-driver-root.module';
import { NoopDriverConfig } from './noop-driver.config';
import { NoopDriver } from './noop.driver';

/**
* Service module for `NoopDriver`.
Expand All @@ -22,7 +21,7 @@ export class NoopDriverModule {
provide: noopDriverConfigToken,
useFactory: (logDriverConfig: LumberjackLogDriverConfig): NoopDriverConfig => ({
...logDriverConfig,
identifier: NoopDriver.driverIdentifier,
identifier: noopDriverIdentifier,
...config,
}),
deps: [lumberjackLogDriverConfigToken],
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import { inject, NgModule } from '@angular/core';

import { lumberjackLogDriverToken } from '@ngworker/lumberjack';
import { SpyDriverConfig, spyDriverFactory } from '@internal/core/test-util';
import { createSpyDriver, SpyDriverConfig } from '@internal/core/test-util';

import { spyDriverConfigToken } from './spy-driver-config.token';

@NgModule({
providers: [
{
provide: lumberjackLogDriverToken,
useFactory: (config: SpyDriverConfig) => spyDriverFactory(config),
useFactory: (config: SpyDriverConfig) => createSpyDriver(config),
multi: true,
deps: [spyDriverConfigToken],
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import { Injectable } from '@angular/core';

import { LumberjackTimeService } from '@ngworker/lumberjack';

@Injectable()
export class FakeTimeService extends LumberjackTimeService {
private now = new Date();

Expand Down
15 changes: 15 additions & 0 deletions packages/internal/core/test-util/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,22 @@
export * from './lib/spy-driver/create-spy-driver';
export * from './lib/spy-driver/spy-driver.config';

// Noop driver
export * from './lib/noop-driver/create-noop-driver';
export * from './lib/noop-driver/noop-driver.config';

// Object driver
export * from './lib/object-driver/object-logger';
export * from './lib/object-driver/create-object-driver';
export * from './lib/object-driver/object-driver.config';
export * from './lib/object-driver/object.payload';

// Error Throwing Driver
export * from './lib/error-throwing-driver/error-throwing-driver.config';
export * from './lib/error-throwing-driver/error-throwing-driver.options';
export * from './lib/error-throwing-driver/default-error-throwing-driver-config';
export * from './lib/error-throwing-driver/default-error-throwing-driver-options';
export * from './lib/error-throwing-driver/create-error-throwing-driver';

// Type checking
export * from './lib/type-checking/is-class';
Expand All @@ -17,3 +29,6 @@ export * from './lib/time/create-fake-time';

// Logs
export * from './lib/logs';

// Functions
export * from './lib/functions/repeat-side-effect';
Original file line number Diff line number Diff line change
@@ -1,31 +1,25 @@
import { TestBed } from '@angular/core/testing';

import { lumberjackLogDriverToken, LumberjackModule } from '@ngworker/lumberjack';
import {
LumberjackLevel,
LumberjackLogDriver,
LumberjackLogDriverLog,
LumberjackLogLevel,
} from '@webworker/lumberjack';
import { createDriverLog, createFakeTime } from '@internal/core/test-util';

import { createDriverLog } from '../logs';
import { createFakeTime } from '../time/create-fake-time';
import { repeatSideEffect } from '../functions/repeat-side-effect';

import { ErrorThrowingDriverModule } from './error-throwing-driver.module';
import { ErrorThrowingDriver } from './error-throwing.driver';
import { createErrorThrowingDriver, errorThrowingDriverIdentifier } from './create-error-throwing-driver';
import { defaultErrorThrowingDriverOptions } from './default-error-throwing-driver-options';

describe(ErrorThrowingDriver.name, () => {
describe(createErrorThrowingDriver.name, () => {
function setup(logsBeforeThrowing?: number) {
TestBed.configureTestingModule({
imports: [
LumberjackModule.forRoot(),
logsBeforeThrowing
? ErrorThrowingDriverModule.withOptions({ logsBeforeThrowing })
: ErrorThrowingDriverModule.forRoot(),
],
const driver = createErrorThrowingDriver({
logsBeforeThrowing: logsBeforeThrowing ?? defaultErrorThrowingDriverOptions.logsBeforeThrowing,
levels: [LumberjackLevel.Verbose],
identifier: errorThrowingDriverIdentifier,
});

const [driver] = TestBed.inject(lumberjackLogDriverToken) as unknown as LumberjackLogDriver[];
const fakeTime = createFakeTime();

return {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import { LumberjackLogDriver, LumberjackLogDriverLog } from '@webworker/lumberjack';

import { ErrorThrowingDriverConfig } from './error-throwing-driver.config';

export type ErrorThrowingDriver = ReturnType<typeof createErrorThrowingDriver>;

export const errorThrowingDriverIdentifier = 'ErrorThrowingDriver';

/**
* Error-throwing log driver.
*
* Every logging method throws an error after the configured number of logs.
*/
export function createErrorThrowingDriver(config: ErrorThrowingDriverConfig): LumberjackLogDriver {
let logCount = 0;

function logCritical({ formattedLog }: LumberjackLogDriverLog): void {
log(formattedLog);
}

function logDebug({ formattedLog }: LumberjackLogDriverLog): void {
log(formattedLog);
}

function logError({ formattedLog }: LumberjackLogDriverLog): void {
log(formattedLog);
}

function logInfo({ formattedLog }: LumberjackLogDriverLog): void {
log(formattedLog);
}

function logTrace({ formattedLog }: LumberjackLogDriverLog): void {
log(formattedLog);
}

function logWarning({ formattedLog }: LumberjackLogDriverLog): void {
log(formattedLog);
}

function log(formattedLog: string): void | never {
if (logCount < config.logsBeforeThrowing) {
logCount += 1;
} else {
throw new Error(`${config.identifier}: Failed to log "${formattedLog}"`);
}
}

return {
config,
logCritical,
logDebug,
logError,
logInfo,
logTrace,
logWarning,
};
}
Loading

0 comments on commit edf418e

Please sign in to comment.