EditorRealTimeControllerTests.coffee 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. SandboxedModule = require('sandboxed-module')
  2. sinon = require('sinon')
  3. require('chai').should()
  4. modulePath = require('path').join __dirname, '../../../../app/js/Features/Editor/EditorRealTimeController'
  5. describe "EditorRealTimeController", ->
  6. beforeEach ->
  7. @EditorRealTimeController = SandboxedModule.require modulePath, requires:
  8. "redis-sharelatex":
  9. createClient: () ->
  10. auth:->
  11. "../../infrastructure/Server" : io: @io = {}
  12. "settings-sharelatex":{redis:{}}
  13. @EditorRealTimeController.rclientPub = publish: sinon.stub()
  14. @EditorRealTimeController.rclientSub =
  15. subscribe: sinon.stub()
  16. on: sinon.stub()
  17. @room_id = "room-id"
  18. @message = "message-to-editor"
  19. @payload = ["argument one", 42]
  20. describe "emitToRoom", ->
  21. beforeEach ->
  22. @EditorRealTimeController.emitToRoom(@room_id, @message, @payload...)
  23. it "should publish the message to redis", ->
  24. @EditorRealTimeController.rclientPub.publish
  25. .calledWith("editor-events", JSON.stringify(
  26. room_id: @room_id,
  27. message: @message
  28. payload: @payload
  29. ))
  30. .should.equal true
  31. describe "emitToAll", ->
  32. beforeEach ->
  33. @EditorRealTimeController.emitToRoom = sinon.stub()
  34. @EditorRealTimeController.emitToAll @message, @payload...
  35. it "should emit to the room 'all'", ->
  36. @EditorRealTimeController.emitToRoom
  37. .calledWith("all", @message, @payload...)
  38. .should.equal true