mysticPrg/catch-light

View on GitHub
src/utils/fakeSocket.js

Summary

Maintainability
A
2 hrs
Test Coverage
import { light_create } from '~/actions/Light';
import LightModel from '~/models/LightModel';

function makeAsyncFunc(func, wait) {
    return (...args) => {
        return new Promise(resolve => {
            if ( wait <= 0 ) {
                resolve(func(...args));
            } else {
                window.setTimeout(() => {
                    resolve(func(...args));
                }, wait);
            }

        });
    };
}

export class Socket {
    constructor() {
        this.on = makeAsyncFunc(this.on);
    }

    on(event, callback) {
        switch( event ) {
            case 'msg': {
                for ( let i=0 ; i<10 ; i++ ) {
                    let model = new LightModel();
                    model.toRandomize(500, 500);
                    callback(light_create(model));
                }

                break;
            }

            default:
                break;
        }
    }
};

const fakeSocket = (wait = 300) => ({
    on: makeAsyncFunc((event, callback) => {
        switch ( event ) {
            case 'connection': {
                callback(new Socket());
                break;
            }

            default:
                break;
        }
    }, wait)
});

export default fakeSocket;