InstitutionsFeaturesTests.coffee 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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.hasLicence = sinon.stub()
  57. @testFeatures = features: { institution: 'all' }
  58. @PlansLocator.findLocalPlanInSettings.withArgs(@institutionPlanCode).returns(@testFeatures)
  59. it 'should handle error', (done)->
  60. @InstitutionsFeatures.hasLicence.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.hasLicence.yields(null, false)
  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.hasLicence.yields(null, true)
  72. @InstitutionsFeatures.getInstitutionsFeatures @userId, (error, features) =>
  73. expect(error).to.not.exist
  74. expect(features).to.deep.equal @testFeatures.features
  75. done()