Skip to content

Instantly share code, notes, and snippets.

@deskoh
Created April 8, 2021 06:33
Show Gist options
  • Save deskoh/8e2bac4bff88544488d375473ad4014a to your computer and use it in GitHub Desktop.
Save deskoh/8e2bac4bff88544488d375473ad4014a to your computer and use it in GitHub Desktop.
FeathersJS Recipes

FeathersJS Recipes

const feathers = require('@feathersjs/feathers');
const socketio = require('@feathersjs/socketio');
const { socket: commons } = require('@feathersjs/transport-commons');
const assert = require('assert');
const { EventEmitter } = require('events');

const messages = require('../src/messages');

describe('\'messages\' service', () => {
  let conn = { testing: true };
  let socket = new EventEmitter();
  let app;

  before(() => {
    app = feathers();
    app.configure(socketio());

    conn = { testing: true };
    options = {
      emit: 'emit',
      done: Promise.resolve(new EventEmitter()),
      socketMap: new WeakMap(),
      getParams: () => conn,
    };
    app.configure(commons(options));
    app.channel('admins').join(conn);
    options.socketMap.set(conn, socket)

    app.configure(messages);
  });

  it('receive `create` event on `admin` channel', (done) => {
    app.channel('admins').join(conn);

    const payload = { text: 'Hello again' };
    socket.once('messages created', (data) => {
      try {
        assert.strictEqual(data.text, payload.text);
        done();
      } catch (error) {
        done(error)
      }
    });
    app.service('messages').create(payload);
  });
});
const feathers = require('@feathersjs/feathers');
const socketio = require('@feathersjs/socketio');
const assert = require('assert');

const messages = require('../src/messages');

describe('\'messages\' service', () => {
  let app;

  before(() => {
    app = feathers();
    app.configure(socketio());

    app.configure(messages);
    app.channel('admins').join({ testing: true });
  });

  it('receive `create` event on `admin` channel', (done) => {
    const channel = app.channel('admins');

    const payload = { text: 'Hello again' };
    // Ref: packages\transport-commons\src\socket\utils.ts
    app.once('publish', (event, combinedChannel, context, data) => {
      try {
        if (context.path === 'messages' && event === 'created') {
          assert(combinedChannel.children.includes(channel));
          assert.strictEqual(context.result.text, payload.text);
          done();
        }
      } catch (error) {
        done(error);
      }
    });

    app.service('messages').create(payload);
  });
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment