SubscriptionBackgroundTasksTests.coffee 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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. @AnalyticsManager = {}
  12. @SubscriptionUpdater = {}
  13. @SubscriptionBackgroundTasks = SandboxedModule.require modulePath, requires:
  14. "./SubscriptionLocator" : @SubscriptionLocator
  15. "./SubscriptionUpdater" : @SubscriptionUpdater
  16. "settings-sharelatex" : @Settings
  17. "../Analytics/AnalyticsManager" : @AnalyticsManager
  18. "logger-sharelatex" : log:->
  19. describe 'downgradeExpiredFreeTrials', ->
  20. beforeEach ->
  21. @subscriptions = [
  22. { admin_id : 1 },
  23. { admin_id : 2 }
  24. ]
  25. @SubscriptionUpdater.downgradeFreeTrial = sinon.stub().callsArg(1)
  26. @SubscriptionLocator.expiredFreeTrials = sinon.stub().callsArgWith(0, null, @subscriptions)
  27. @AnalyticsManager.trackFreeTrialExpired = sinon.stub()
  28. @callback = sinon.stub()
  29. @SubscriptionBackgroundTasks.downgradeExpiredFreeTrials(@callback)
  30. it "should downgrade each expired subscription", ->
  31. @SubscriptionUpdater.downgradeFreeTrial.callCount.should.equal @subscriptions.length
  32. for subscription in @subscriptions
  33. @SubscriptionUpdater.downgradeFreeTrial.calledWith(subscription).should.equal true
  34. it "should track each downgrade", ->
  35. @AnalyticsManager.trackFreeTrialExpired.callCount.should.equal @subscriptions.length
  36. for subscription in @subscriptions
  37. @AnalyticsManager.trackFreeTrialExpired.calledWith(subscription.admin_id).should.equal true
  38. it "should return the subscriptions in the callback", ->
  39. @callback.called.should.equal true
  40. @callback.args[0][1].should.deep.equal @subscriptions