SubscriptionBackgroundTasksTests.coffee 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. sinon = require('sinon')
  2. require('chai').should()
  3. SandboxedModule = require('sandboxed-module')
  4. modulePath = require('path').join __dirname, '../../../../app/js/Features/Subscription/SubscriptionBackgroundTasks'
  5. describe "SubscriptionBackgroundTasks", ->
  6. beforeEach ->
  7. @SubscriptionLocator = {}
  8. @Settings = defaultPlanCode:
  9. collaborators: 13
  10. versioning: true
  11. @SubscriptionUpdater = {}
  12. @SubscriptionBackgroundTasks = SandboxedModule.require modulePath, requires:
  13. "./SubscriptionLocator" : @SubscriptionLocator
  14. "./SubscriptionUpdater" : @SubscriptionUpdater
  15. "settings-sharelatex" : @Settings
  16. "logger-sharelatex" : log:->
  17. describe 'downgradeExpiredFreeTrials', ->
  18. beforeEach ->
  19. @subscriptions = [
  20. { admin_id : 1 },
  21. { admin_id : 2 }
  22. ]
  23. @SubscriptionUpdater.downgradeFreeTrial = sinon.stub().callsArg(1)
  24. @SubscriptionLocator.expiredFreeTrials = sinon.stub().callsArgWith(0, null, @subscriptions)
  25. @callback = sinon.stub()
  26. @SubscriptionBackgroundTasks.downgradeExpiredFreeTrials(@callback)
  27. it "should downgrade each expired subscription", ->
  28. @SubscriptionUpdater.downgradeFreeTrial.callCount.should.equal @subscriptions.length
  29. for subscription in @subscriptions
  30. @SubscriptionUpdater.downgradeFreeTrial.calledWith(subscription).should.equal true
  31. it "should return the subscriptions in the callback", ->
  32. @callback.called.should.equal true
  33. @callback.args[0][1].should.deep.equal @subscriptions