UserFeaturesUpdaterTests.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. const SandboxedModule = require('sandboxed-module')
  2. const { expect } = require('chai')
  3. const sinon = require('sinon')
  4. const modulePath =
  5. '../../../../app/src/Features/Subscription/UserFeaturesUpdater'
  6. describe('UserFeaturesUpdater', function () {
  7. beforeEach(function () {
  8. this.User = { updateOne: sinon.stub().callsArgWith(2) }
  9. this.UserFeaturesUpdater = SandboxedModule.require(modulePath, {
  10. requires: {
  11. '../../models/User': {
  12. User: this.User,
  13. },
  14. },
  15. })
  16. })
  17. describe('updateFeatures', function () {
  18. it('should send the users features', function (done) {
  19. const userId = '5208dd34438842e2db000005'
  20. this.features = { versioning: true, collaborators: 10 }
  21. this.UserFeaturesUpdater.updateFeatures(
  22. userId,
  23. this.features,
  24. (err, features) => {
  25. const update = {
  26. 'features.versioning': true,
  27. 'features.collaborators': 10,
  28. }
  29. const updateArgs = this.User.updateOne.lastCall.args
  30. expect(updateArgs[0]).to.deep.equal({ _id: userId })
  31. expect(Object.keys(updateArgs[1]).length).to.equal(3)
  32. expect(updateArgs[1]['features.versioning']).to.equal(
  33. update['features.versioning']
  34. )
  35. expect(updateArgs[1]['features.collaborators']).to.equal(
  36. update['features.collaborators']
  37. )
  38. expect(updateArgs[1].featuresUpdatedAt instanceof Date).to.be.true
  39. features.should.deep.equal(this.features)
  40. done()
  41. }
  42. )
  43. })
  44. })
  45. describe('overrideFeatures', function () {
  46. it('should send the users features', function (done) {
  47. const userId = '5208dd34438842e2db000005'
  48. this.features = { versioning: true, collaborators: 10 }
  49. this.UserFeaturesUpdater.updateFeatures(
  50. userId,
  51. this.features,
  52. (err, features) => {
  53. const update = {
  54. 'features.versioning': true,
  55. 'features.collaborators': 10,
  56. }
  57. const updateArgs = this.User.updateOne.lastCall.args
  58. expect(updateArgs[0]).to.deep.equal({ _id: userId })
  59. expect(Object.keys(updateArgs[1]).length).to.equal(3)
  60. expect(updateArgs[1]['features.versioning']).to.equal(
  61. update['features.versioning']
  62. )
  63. expect(updateArgs[1]['features.collaborators']).to.equal(
  64. update['features.collaborators']
  65. )
  66. expect(updateArgs[1].featuresUpdatedAt instanceof Date).to.be.true
  67. features.should.deep.equal(this.features)
  68. done()
  69. }
  70. )
  71. })
  72. })
  73. })