test-file-handler.ts 1.03 KB
import { Observable, Subscriber } from 'rxjs';
import { FileHandler } from '../../src/api/file-handler';

export class TestFileHandler implements FileHandler {

    protected static errorRate:number = 0;

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

    download(source:string, target:string) : Observable<number> {
        return Observable.create((subscriber:Subscriber<number>) => {
            let random = Math.random();
            let error:boolean = random < TestFileHandler.errorRate;
            let counter = 1;

            if (error) { 
                subscriber.error("random error triggered");
                return;
            }

            let interval = setInterval(() => {
                if (counter < 4) {
                    subscriber.next(counter * 25);
                } else {
                    subscriber.complete();
                    clearInterval(interval);                    
                }

                ++counter;
            }, 10);
        });
    }
}