| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- SandboxedModule = require('sandboxed-module')
- assert = require('assert')
- require('chai').should()
- expect = require('chai').expect
- sinon = require('sinon')
- modulePath = require('path').join __dirname, '../../../../app/js/Features/Institutions/InstitutionsFeatures.js'
- describe 'InstitutionsFeatures', ->
- beforeEach ->
- @InstitutionsGetter = getConfirmedInstitutions: sinon.stub()
- @PlansLocator = findLocalPlanInSettings: sinon.stub()
- @institutionPlanCode = 'institution_plan_code'
- @InstitutionsFeatures = SandboxedModule.require modulePath, requires:
- './InstitutionsGetter': @InstitutionsGetter
- '../Subscription/PlansLocator': @PlansLocator
- 'settings-sharelatex': institutionPlanCode: @institutionPlanCode
- 'logger-sharelatex':
- log:->
- err:->
- @userId = '12345abcde'
- describe "hasLicence", ->
- it 'should handle error', (done)->
- @InstitutionsGetter.getConfirmedInstitutions.yields(new Error('Nope'))
- @InstitutionsFeatures.hasLicence @userId, (error, hasLicence) ->
- expect(error).to.exist
- done()
- it 'should return false if user has no confirmed affiliations', (done) ->
- institutions = []
- @InstitutionsGetter.getConfirmedInstitutions.yields(null, institutions)
- @InstitutionsFeatures.hasLicence @userId, (error, hasLicence) ->
- expect(error).to.not.exist
- expect(hasLicence).to.be.false
- done()
- it 'should return false if user has no paid affiliations', (done) ->
- institutions = [
- { licence: 'free' }
- ]
- @InstitutionsGetter.getConfirmedInstitutions.yields(null, institutions)
- @InstitutionsFeatures.hasLicence @userId, (error, hasLicence) ->
- expect(error).to.not.exist
- expect(hasLicence).to.be.false
- done()
- it 'should return true if user has confirmed paid affiliation', (done)->
- institutions = [
- { licence: 'pro_plus' }
- { licence: 'free' }
- { licence: 'pro' }
- { licence: null }
- ]
- @InstitutionsGetter.getConfirmedInstitutions.yields(null, institutions)
- @InstitutionsFeatures.hasLicence @userId, (error, hasLicence) ->
- expect(error).to.not.exist
- expect(hasLicence).to.be.true
- done()
- describe "getInstitutionsFeatures", ->
- beforeEach ->
- @InstitutionsFeatures.hasLicence = sinon.stub()
- @testFeatures = features: { institution: 'all' }
- @PlansLocator.findLocalPlanInSettings.withArgs(@institutionPlanCode).returns(@testFeatures)
- it 'should handle error', (done)->
- @InstitutionsFeatures.hasLicence.yields(new Error('Nope'))
- @InstitutionsFeatures.getInstitutionsFeatures @userId, (error, features) ->
- expect(error).to.exist
- done()
- it 'should return no feaures if user has no plan code', (done) ->
- @InstitutionsFeatures.hasLicence.yields(null, false)
- @InstitutionsFeatures.getInstitutionsFeatures @userId, (error, features) ->
- expect(error).to.not.exist
- expect(features).to.deep.equal {}
- done()
- it 'should return feaures if user has affiliations plan code', (done) ->
- @InstitutionsFeatures.hasLicence.yields(null, true)
- @InstitutionsFeatures.getInstitutionsFeatures @userId, (error, features) =>
- expect(error).to.not.exist
- expect(features).to.deep.equal @testFeatures.features
- done()
|