player.spec.ts 1.49 KB
import {Player} from '../src/player';
import {Util} from '../src/util';
import {DummyProgramRepository} from './dummy-program-repository';

describe('Player', () => {

    let player = new Player();

    it('should trigger function after milliseconds', (done) => {
        player.state = 'start';
        player.trigger(() => { expect(true).toBe(true); done(); }, 10);
    });

});

describe('Player repository triggers', () => {

    let player = new Player();
    let dummyProgramRepository = new DummyProgramRepository();

    beforeEach(() => {
        spyOn(player, "trigger").and.returnValue(null);        
        player.programRepository = dummyProgramRepository;
    });

    it('should trigger program item retrieval', (done) => {
        spyOn(dummyProgramRepository, "replicate").and.callFake(() => {
            return new Promise<any> ((resolve, reject) => {
                resolve();
            });            
        });

        player.triggerReplication().then(() => {
            expect(player.trigger).toHaveBeenCalled();
            done();
        });
    });

    it('should trigger replication', (done) => {
        spyOn(dummyProgramRepository, "replicate").and.callFake(() => {
            return new Promise<any> ((resolve, reject) => {                
                reject();
            });            
        });

        player.once('error', () => {
            expect(player.trigger).toHaveBeenCalled();
            done();
        });

        player.triggerReplication();
    });

});