Newer
Older
pixi.js / packages / ticker / test / TickerPlugin.js
@Matt Karl Matt Karl on 10 Jun 2018 2 KB Application plugin structure (#4933)
const { TickerPlugin, UPDATE_PRIORITY, Ticker } = require('../');

describe('PIXI.TickerPlugin', function ()
{
    it('should not start application before calling start method if options.autoStart is false', function (done)
    {
        const app = {};

        TickerPlugin.init.call(app, { autoStart: false });

        expect(app.ticker).to.be.instanceof(Ticker);
        expect(app.ticker.started).to.be.false;

        app.start();

        app.ticker.addOnce(() =>
        {
            TickerPlugin.destroy.call(app);
            done();
        });
    });

    describe('set ticker', function ()
    {
        before(function ()
        {
            this.app = {
                render()
                {
                    // do nothing
                },
            };
            TickerPlugin.init.call(this.app);
            /* remove default listener to prevent uncaught exception */
            this.app._ticker.remove(this.app.render, this.app);
        });

        after(function ()
        {
            TickerPlugin.destroy.call(this.app);
        });

        it('should assign ticker object', function ()
        {
            const ticker = { add: sinon.spy() };
            const _ticker = { remove: sinon.spy() };

            this.app._ticker = _ticker;
            this.app.ticker = ticker;

            expect(_ticker.remove).to.be.calledOnce;
            expect(_ticker.remove.args[0][0]).to.be.equal(this.app.render);
            expect(_ticker.remove.args[0][1]).to.be.equal(this.app);

            expect(this.app._ticker).to.be.equal(ticker);
            expect(ticker.add).to.be.calledOnce;
            expect(ticker.add.args[0][0]).to.be.equal(this.app.render);
            expect(ticker.add.args[0][1]).to.be.equal(this.app);
            expect(ticker.add.args[0][2]).to.be.equal(UPDATE_PRIORITY.LOW);
        });

        it('should assign ticker if no ticker', function ()
        {
            const ticker = { add: sinon.spy() };

            this.app._ticker = null;
            this.app.ticker = ticker;

            expect(this.app._ticker).to.be.equal(ticker);
            expect(ticker.add).to.be.calledOnce;
            expect(ticker.add.args[0][0]).to.be.equal(this.app.render);
            expect(ticker.add.args[0][1]).to.be.equal(this.app);
            expect(ticker.add.args[0][2]).to.be.equal(UPDATE_PRIORITY.LOW);
        });

        it('should assign null ticker', function ()
        {
            const _ticker = { remove: sinon.spy() };

            this.app._ticker = _ticker;
            this.app.ticker = null;

            expect(_ticker.remove).to.be.calledOnce;
            expect(_ticker.remove.args[0][0]).to.be.equal(this.app.render);
            expect(_ticker.remove.args[0][1]).to.be.equal(this.app);

            expect(this.app._ticker).to.be.null;
        });
    });
});