| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- /* eslint-disable
- max-len,
- no-return-assign,
- */
- // TODO: This file was created by bulk-decaffeinate.
- // Fix any style issues and re-enable lint.
- /*
- * decaffeinate suggestions:
- * DS101: Remove unnecessary use of Array.from
- * DS102: Remove unnecessary code created because of implicit returns
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
- */
- const SandboxedModule = require('sandboxed-module')
- const sinon = require('sinon')
- require('chai').should()
- const modulePath = require('path').join(
- __dirname,
- '../../../../app/src/Features/Editor/EditorRealTimeController'
- )
- describe('EditorRealTimeController', function() {
- beforeEach(function() {
- this.rclient = { publish: sinon.stub() }
- this.Metrics = { summary: sinon.stub() }
- this.EditorRealTimeController = SandboxedModule.require(modulePath, {
- globals: {
- console: console
- },
- requires: {
- '../../infrastructure/RedisWrapper': {
- client: () => this.rclient
- },
- '../../infrastructure/Server': {
- io: (this.io = {})
- },
- 'settings-sharelatex': { redis: {} },
- 'metrics-sharelatex': this.Metrics,
- crypto: (this.crypto = {
- randomBytes: sinon
- .stub()
- .withArgs(4)
- .returns(Buffer.from([0x1, 0x2, 0x3, 0x4]))
- }),
- os: (this.os = { hostname: sinon.stub().returns('somehost') })
- }
- })
- this.room_id = 'room-id'
- this.message = 'message-to-editor'
- return (this.payload = ['argument one', 42])
- })
- describe('emitToRoom', function() {
- beforeEach(function() {
- this.message_id = 'web:somehost:01020304-0'
- return this.EditorRealTimeController.emitToRoom(
- this.room_id,
- this.message,
- ...Array.from(this.payload)
- )
- })
- it('should publish the message to redis', function() {
- return this.rclient.publish
- .calledWith(
- 'editor-events',
- JSON.stringify({
- room_id: this.room_id,
- message: this.message,
- payload: this.payload,
- _id: this.message_id
- })
- )
- .should.equal(true)
- })
- it('should track the payload size', function() {
- this.Metrics.summary
- .calledWith(
- 'redis.publish.editor-events',
- JSON.stringify({
- room_id: this.room_id,
- message: this.message,
- payload: this.payload,
- _id: this.message_id
- }).length
- )
- .should.equal(true)
- })
- })
- describe('emitToAll', function() {
- beforeEach(function() {
- this.EditorRealTimeController.emitToRoom = sinon.stub()
- return this.EditorRealTimeController.emitToAll(
- this.message,
- ...Array.from(this.payload)
- )
- })
- it("should emit to the room 'all'", function() {
- return this.EditorRealTimeController.emitToRoom
- .calledWith('all', this.message, ...Array.from(this.payload))
- .should.equal(true)
- })
- })
- })
|