Skip to content

Commit

Permalink
Setup Jest - unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Eliastik committed May 9, 2024
1 parent 17adc89 commit e2c9b59
Show file tree
Hide file tree
Showing 14 changed files with 4,521 additions and 1,238 deletions.
5 changes: 4 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
- master

jobs:
build:
build-and-test:
runs-on: ubuntu-latest

steps:
Expand All @@ -23,3 +23,6 @@ jobs:

- name: Build and Lint
run: npm run build

- name: Test
run: npm test
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,5 @@ dist/**/dts/**/*.d.ts

# service worker
.rollup.cache

coverage
2 changes: 1 addition & 1 deletion dist/cjs/SimpleSoundStudioLibrary.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/cjs/SimpleSoundStudioLibrary.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/esm/SimpleSoundStudioLibrary.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/esm/SimpleSoundStudioLibrary.js.map

Large diffs are not rendered by default.

58 changes: 57 additions & 1 deletion dist/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import FilterManagerInterface$1 from '@/audioEditor/interfaces/FilterManagerInte
import AudioEditorInterface$1 from '@/audioEditor/interfaces/AudioEditorInterface';
import { ConfigService as ConfigService$1 } from '@/services/interfaces/ConfigService';
import VoiceRecorderInterface$1 from '@/voiceRecorder/interfaces/VoiceRecorderInterface';
import AbstractAudioElement$1 from '@/filters/interfaces/AbstractAudioElement';

declare const audioEditorContainer: Container;

Expand Down Expand Up @@ -1157,4 +1158,59 @@ declare class SoundStudioFactory {
static getConfigServiceInstance(): ConfigService$1 | undefined;
}

export { AbstractAudioElement, AbstractAudioFilter, AbstractAudioFilterWorklet, AbstractAudioRenderer, AudioEditor, type AudioFilterEntrypointInterface, type AudioFilterNodes, BufferPlayer, type ConfigService, Constants, EventEmitter, type EventEmitterCallback, EventType, type FilterSettingValue, type FilterSettings, type FilterState, GenericConfigService, type GenericSettingValueAdditionalData, type RecorderSettings, type SaveBufferOptions, type SelectFormValue, SoundStudioFactory, utilFunctions as UtilFunctions, VoiceRecorder, audioEditorContainer };
interface LimiterSettings extends FilterSettings {
preGain: number;
postGain: number;
attackTime: number;
releaseTime: number;
threshold: number;
lookAheadTime: number;
}

declare class LimiterFilter extends AbstractAudioFilterWorklet<void> {
private preGain;
private postGain;
private attackTime;
private releaseTime;
private threshold;
private lookAheadTime;
constructor();
receiveEvent(message: MessageEvent<void>): void;
get workletPath(): string;
get workletName(): string;
get order(): number;
get id(): string;
getAddingTime(): number;
getSettings(): LimiterSettings;
setSetting(settingId: string, value: FilterSettingValue): Promise<void>;
}

declare class FilterManager extends AbstractAudioElement$1 implements FilterManagerInterface {
/** A list of filters */
private filters;
/** The entrypoint filter */
private _entryPointFilter;
/** The current connected nodes */
private _currentNodes;
constructor(filters: AbstractAudioFilter$1[], entryPointFilter: (AbstractAudioFilter$1 & AudioFilterEntrypointInterface$1) | null);
private setup;
addFilters(...filters: AbstractAudioFilter$1[]): void;
getFiltersState(): FilterState$1;
getFiltersSettings(): Map<string, FilterSettings$1>;
toggleFilter(filterId: string): void;
changeFilterSettings(filterId: string, settings: FilterSettings$1): Promise<void>;
resetFilterSettings(filterId: string): Promise<void>;
resetAllFiltersState(): void;
connectNodes(context: BaseAudioContext, buffer: AudioBuffer, keepCurrentInputOutput: boolean, isCompatibilityMode: boolean): Promise<void>;
disconnectOldNodes(keepCurrentOutput: boolean): void;
initializeWorklets(context: BaseAudioContext): Promise<void>;
getAddingTime(): number;
setupTotalSamples(durationAudio: number, currentContext: AudioContext | null): void;
resetFilterBuffers(): Promise<void>;
get entrypointFilter(): (AbstractAudioFilter$1 & AudioFilterEntrypointInterface$1) | null;
get currentNodes(): AudioFilterNodes$1 | null;
get order(): number;
get id(): string;
}

export { AbstractAudioElement, AbstractAudioFilter, AbstractAudioFilterWorklet, AbstractAudioRenderer, AudioEditor, type AudioFilterEntrypointInterface, type AudioFilterNodes, BufferPlayer, type ConfigService, Constants, EventEmitter, type EventEmitterCallback, EventType, FilterManager, type FilterSettingValue, type FilterSettings, type FilterState, GenericConfigService, type GenericSettingValueAdditionalData, LimiterFilter, type RecorderSettings, type SaveBufferOptions, type SelectFormValue, SoundStudioFactory, utilFunctions as UtilFunctions, VoiceRecorder, audioEditorContainer };
2 changes: 1 addition & 1 deletion dist/workers/RecorderWorker.js

Large diffs are not rendered by default.

23 changes: 23 additions & 0 deletions jest.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/**
* For a detailed explanation regarding each configuration property, visit:
* https://jestjs.io/docs/configuration
*/

import type { Config } from "jest";

const config: Config = {
clearMocks: true,
collectCoverage: false,
coverageDirectory: undefined,
coverageProvider: "v8",
moduleDirectories: [
"node_modules",
"lib"
],
moduleNameMapper: {
"@/(.*)": "<rootDir>/lib/$1"
},
preset: "ts-jest"
};

export default config;
6 changes: 5 additions & 1 deletion lib/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ import { EventEmitterCallback } from "./model/EventEmitterCallback";
import { ConfigService } from "./services/interfaces/ConfigService";
import SaveBufferOptions from "./model/SaveBufferOptions";
import SoundStudioFactory from "./utils/SoundStudioFactory";
import LimiterFilter from "./filters/LimiterFilter";
import FilterManager from "./audioEditor/FilterManager";

export {
audioEditorContainer,
Expand All @@ -48,5 +50,7 @@ export {
AbstractAudioRenderer,
type AudioFilterEntrypointInterface,
utilFunctions as UtilFunctions,
SoundStudioFactory
SoundStudioFactory,
FilterManager,
LimiterFilter
};
4 changes: 2 additions & 2 deletions lib/utils/Functions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -139,12 +139,12 @@ const utilFunctions = {
},
forceDownload(blob: Blob, filename: string) {
const link = window.document.createElement("a");
const url = (window.URL || window.webkitURL).createObjectURL(blob);
const url = URL.createObjectURL(blob);
window.document.body.appendChild(link);
link.href = url;
link.download = filename || "output.wav";
link.click();
window.URL.revokeObjectURL(url);
URL.revokeObjectURL(url);
}
};

Expand Down
Loading

0 comments on commit e2c9b59

Please sign in to comment.