InstitutionsFeaturesTests.coffee 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. SandboxedModule = require('sandboxed-module')
  2. assert = require('assert')
  3. require('chai').should()
  4. expect = require('chai').expect
  5. sinon = require('sinon')
  6. modulePath = require('path').join __dirname, '../../../../app/js/Features/Institutions/InstitutionsFeatures.js'
  7. describe 'InstitutionsFeatures', ->
  8. beforeEach ->
  9. @InstitutionsGetter = getConfirmedInstitutions: sinon.stub()
  10. @PlansLocator = findLocalPlanInSettings: sinon.stub()
  11. @institutionPlanCode = 'institution_plan_code'
  12. @InstitutionsFeatures = SandboxedModule.require modulePath, requires:
  13. './InstitutionsGetter': @InstitutionsGetter
  14. '../Subscription/PlansLocator': @PlansLocator
  15. 'settings-sharelatex': institutionPlanCode: @institutionPlanCode
  16. 'logger-sharelatex':
  17. log:->
  18. err:->
  19. @userId = '12345abcde'
  20. describe "hasLicence", ->
  21. it 'should handle error', (done)->
  22. @InstitutionsGetter.getConfirmedInstitutions.yields(new Error('Nope'))
  23. @InstitutionsFeatures.hasLicence @userId, (error, hasLicence) ->
  24. expect(error).to.exist
  25. done()
  26. it 'should return false if user has no confirmed affiliations', (done) ->
  27. institutions = []
  28. @InstitutionsGetter.getConfirmedInstitutions.yields(null, institutions)
  29. @InstitutionsFeatures.hasLicence @userId, (error, hasLicence) ->
  30. expect(error).to.not.exist
  31. expect(hasLicence).to.be.false
  32. done()
  33. it 'should return false if user has no paid affiliations', (done) ->
  34. institutions = [
  35. { licence: 'free' }
  36. ]
  37. @InstitutionsGetter.getConfirmedInstitutions.yields(null, institutions)
  38. @InstitutionsFeatures.hasLicence @userId, (error, hasLicence) ->
  39. expect(error).to.not.exist
  40. expect(hasLicence).to.be.false
  41. done()
  42. it 'should return true if user has confirmed paid affiliation', (done)->
  43. institutions = [
  44. { licence: 'pro_plus' }
  45. { licence: 'free' }
  46. { licence: 'pro' }
  47. { licence: null }
  48. ]
  49. @InstitutionsGetter.getConfirmedInstitutions.yields(null, institutions)
  50. @InstitutionsFeatures.hasLicence @userId, (error, hasLicence) ->
  51. expect(error).to.not.exist
  52. expect(hasLicence).to.be.true
  53. done()
  54. describe "getInstitutionsFeatures", ->
  55. beforeEach ->
  56. @InstitutionsFeatures.getInstitutionsPlan = sinon.stub()
  57. @testFeatures = features: { institution: 'all' }
  58. @PlansLocator.findLocalPlanInSettings.withArgs(@institutionPlanCode).returns(@testFeatures)
  59. it 'should handle error', (done)->
  60. @InstitutionsFeatures.getInstitutionsPlan.yields(new Error('Nope'))
  61. @InstitutionsFeatures.getInstitutionsFeatures @userId, (error, features) ->
  62. expect(error).to.exist
  63. done()
  64. it 'should return no feaures if user has no plan code', (done) ->
  65. @InstitutionsFeatures.getInstitutionsPlan.yields(null, null)
  66. @InstitutionsFeatures.getInstitutionsFeatures @userId, (error, features) ->
  67. expect(error).to.not.exist
  68. expect(features).to.deep.equal {}
  69. done()
  70. it 'should return feaures if user has affiliations plan code', (done) ->
  71. @InstitutionsFeatures.getInstitutionsPlan.yields(null, @institutionPlanCode)
  72. @InstitutionsFeatures.getInstitutionsFeatures @userId, (error, features) =>
  73. expect(error).to.not.exist
  74. expect(features).to.deep.equal @testFeatures.features
  75. done()
  76. describe "getInstitutionsPlan", ->
  77. beforeEach ->
  78. @InstitutionsFeatures.hasLicence = sinon.stub()
  79. it 'should handle error', (done)->
  80. @InstitutionsFeatures.hasLicence.yields(new Error('Nope'))
  81. @InstitutionsFeatures.getInstitutionsPlan @userId, (error) ->
  82. expect(error).to.exist
  83. done()
  84. it 'should return no plan if user has no licence', (done) ->
  85. @InstitutionsFeatures.hasLicence.yields(null, false)
  86. @InstitutionsFeatures.getInstitutionsPlan @userId, (error, plan) ->
  87. expect(error).to.not.exist
  88. expect(plan).to.equal null
  89. done()
  90. it 'should return plan if user has licence', (done) ->
  91. @InstitutionsFeatures.hasLicence.yields(null, true)
  92. @InstitutionsFeatures.getInstitutionsPlan @userId, (error, plan) =>
  93. expect(error).to.not.exist
  94. expect(plan).to.equal @institutionPlanCode
  95. done()