test-file-handler.ts 1.02 KB
import { EventEmitter } from 'events';
import { FileHandler } from '../../src/api/file-handler';

export class TestFileHandler extends EventEmitter implements FileHandler {

    protected static errorRate:number = 0;

    static setErrorRate(rate:number) {        
        TestFileHandler.errorRate = rate;
    }

    cleanup() { return this; }

    download(source:string, target:string) {
        let random = Math.random();
        let error:boolean = random < TestFileHandler.errorRate;
        let counter = 1;

        if (error) { 
            setTimeout(() => {
                this.emit("error", "random error triggered");
            },200);
        } else {
            let interval = setInterval(() => {
                if (counter < 4) {
                    this.emit('progress', counter * 25);
                } else {
                    this.emit('complete');
                    clearInterval(interval);                    
                }

                ++counter;
            }, 10);
        }

        return this;
    }
}