SubscriptionLocatorTests.coffee 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. SandboxedModule = require('sandboxed-module')
  2. should = require('chai').should()
  3. sinon = require 'sinon'
  4. modulePath = "../../../../app/js/Features/Subscription/SubscriptionLocator"
  5. assert = require("chai").assert
  6. ObjectId = require('mongoose').Types.ObjectId
  7. describe "Subscription Locator Tests", ->
  8. beforeEach ->
  9. @user =
  10. _id: "5208dd34438842e2db333333"
  11. @subscription = {hello:"world"}
  12. @Subscription =
  13. findOne: sinon.stub()
  14. @SubscriptionLocator = SandboxedModule.require modulePath, requires:
  15. '../../models/Subscription': Subscription:@Subscription
  16. "logger-sharelatex": log:->
  17. describe "finding users subscription", ->
  18. it "should send the users features", (done)->
  19. @Subscription.findOne.callsArgWith(1, null, @subscription)
  20. @SubscriptionLocator.getUsersSubscription @user, (err, subscription)=>
  21. @Subscription.findOne.calledWith({"admin_id":@user._id}).should.equal true
  22. subscription.should.equal @subscription
  23. done()
  24. it "should error if not found", (done)->
  25. @Subscription.findOne.callsArgWith(1, "not found")
  26. @SubscriptionLocator.getUsersSubscription @user, (err, subscription)=>
  27. err.should.exist
  28. done()
  29. it "should take a user id rather than the user object", (done)->
  30. @Subscription.findOne.callsArgWith(1, null, @subscription)
  31. @SubscriptionLocator.getUsersSubscription @user._id, (err, subscription)=>
  32. @Subscription.findOne.calledWith({"admin_id":@user._id}).should.equal true
  33. subscription.should.equal @subscription
  34. done()
  35. describe "expiredFreeTrials", ->
  36. beforeEach ->
  37. @subscriptions = [ _id : 1, freeTrial:{} ]
  38. @Subscription.find = sinon.stub().callsArgWith(1, null, @subscriptions)
  39. it "should look for subscriptions with an expired free trial that haven't been downgraded", (done)->
  40. @SubscriptionLocator.expiredFreeTrials =>
  41. @Subscription.find.called.should.equal true
  42. query = @Subscription.find.args[0][0]
  43. assert.isDefined(query["freeTrial.expiresAt"].$lt)
  44. assert.deepEqual(query["freeTrial.downgraded"],"$ne": true)
  45. done()
  46. it "should return the subscriptions in a callback", (done)->
  47. @SubscriptionLocator.expiredFreeTrials (err, subscriptions)=>
  48. subscriptions.should.deep.equal @subscriptions
  49. done()