ソースを参照

Update LimitationsManager unit tests

James Allen 8 年 前
親
コミット
606419476f

+ 92 - 21
services/web/test/unit/coffee/Subscription/LimitationsManagerTests.coffee

@@ -31,6 +31,7 @@ describe "LimitationsManager", ->
 			'settings-sharelatex' : @Settings = {}
 			"../Collaborators/CollaboratorsHandler": @CollaboratorsHandler = {}
 			"../Collaborators/CollaboratorsInviteHandler": @CollaboratorsInviteHandler = {}
+			"./V1SubscriptionManager": @V1SubscriptionManager = {}
 			'logger-sharelatex':log:->
 
 	describe "allowedNumberOfCollaboratorsInProject", ->
@@ -183,33 +184,33 @@ describe "LimitationsManager", ->
 			it "should return false", ->
 				@callback.calledWith(null, false).should.equal true
 
-	describe "userHasSubscription", ->
+	describe "userHasV2Subscription", ->
 		beforeEach ->
 			@SubscriptionLocator.getUsersSubscription = sinon.stub()
 
 		it "should return true if the recurly token is set", (done)->
 			@SubscriptionLocator.getUsersSubscription.callsArgWith(1, null, recurlySubscription_id : "1234")
-			@LimitationsManager.userHasSubscription @user, (err, hasSubscription)->
+			@LimitationsManager.userHasV2Subscription @user, (err, hasSubscription)->
 				hasSubscription.should.equal true
 				done()
 
 		it "should return false if the recurly token is not set", (done)->
 			@SubscriptionLocator.getUsersSubscription.callsArgWith(1, null, {})
 			@subscription = {}
-			@LimitationsManager.userHasSubscription @user, (err, hasSubscription)->
+			@LimitationsManager.userHasV2Subscription @user, (err, hasSubscription)->
 				hasSubscription.should.equal false
 				done()
 
 		it "should return false if the subscription is undefined", (done)->
 			@SubscriptionLocator.getUsersSubscription.callsArgWith(1)
-			@LimitationsManager.userHasSubscription @user, (err, hasSubscription)->
+			@LimitationsManager.userHasV2Subscription @user, (err, hasSubscription)->
 				hasSubscription.should.equal false
 				done()
 
 		it "should return the subscription", (done)->
 			stubbedSubscription = {freeTrial:{}, token:""}
 			@SubscriptionLocator.getUsersSubscription.callsArgWith(1, null, stubbedSubscription)
-			@LimitationsManager.userHasSubscription @user, (err, hasSubOrIsGroupMember, subscription)->
+			@LimitationsManager.userHasV2Subscription @user, (err, hasSubOrIsGroupMember, subscription)->
 				subscription.should.deep.equal stubbedSubscription
 				done()
 
@@ -220,12 +221,12 @@ describe "LimitationsManager", ->
 				@SubscriptionLocator.getUsersSubscription.callsArgWith(1, null, @fakeSubscription)
 
 			it 'should return true', (done) ->
-				@LimitationsManager.userHasSubscription @user, (err, hasSubscription, subscription)->
+				@LimitationsManager.userHasV2Subscription @user, (err, hasSubscription, subscription)->
 					hasSubscription.should.equal true
 					done()
 
 			it 'should return the subscription', (done) ->
-				@LimitationsManager.userHasSubscription @user, (err, hasSubscription, subscription)=>
+				@LimitationsManager.userHasV2Subscription @user, (err, hasSubscription, subscription)=>
 					subscription.should.deep.equal @fakeSubscription
 					done()
 
@@ -248,37 +249,55 @@ describe "LimitationsManager", ->
 
 	describe "userHasSubscriptionOrIsGroupMember", ->
 		beforeEach ->
-			@LimitationsManager.userIsMemberOfGroupSubscription = sinon.stub()
-			@LimitationsManager.userHasSubscription = sinon.stub()
+			@LimitationsManager.userIsMemberOfGroupSubscription = sinon.stub().yields(null, false)
+			@LimitationsManager.userHasV2Subscription = sinon.stub().yields(null, false)
+			@LimitationsManager.userHasV1SubscriptionOrTeam = sinon.stub().yields(null, false)
 
-		it "should return true if both are true", (done)->
-			@LimitationsManager.userIsMemberOfGroupSubscription.callsArgWith(1, null, true)
-			@LimitationsManager.userHasSubscription.callsArgWith(1, null, true)
+		it "should return true if userIsMemberOfGroupSubscription", (done)->
+			@LimitationsManager.userIsMemberOfGroupSubscription = sinon.stub().yields(null, true)
 			@LimitationsManager.userHasSubscriptionOrIsGroupMember @user, (err, hasSubOrIsGroupMember)->
 				hasSubOrIsGroupMember.should.equal true
 				done()
 
-		it "should return true if one is true", (done)->
-			@LimitationsManager.userIsMemberOfGroupSubscription.callsArgWith(1, null, true)
-			@LimitationsManager.userHasSubscription.callsArgWith(1, null, false)
+		it "should return true if userHasV2Subscription", (done)->
+			@LimitationsManager.userHasV2Subscription = sinon.stub().yields(null, true)
 			@LimitationsManager.userHasSubscriptionOrIsGroupMember @user, (err, hasSubOrIsGroupMember)->
 				hasSubOrIsGroupMember.should.equal true
 				done()
 
-		it "should return true if other is true", (done)->
-			@LimitationsManager.userIsMemberOfGroupSubscription.callsArgWith(1, null, false)
-			@LimitationsManager.userHasSubscription.callsArgWith(1, null, true)
+		it "should return true if userHasV1SubscriptionOrTeam", (done)->
+			@LimitationsManager.userHasV1SubscriptionOrTeam = sinon.stub().yields(null, true)
 			@LimitationsManager.userHasSubscriptionOrIsGroupMember @user, (err, hasSubOrIsGroupMember)->
 				hasSubOrIsGroupMember.should.equal true
 				done()
 
-		it "should return false if both are false", (done)->
-			@LimitationsManager.userIsMemberOfGroupSubscription.callsArgWith(1, null, false)
-			@LimitationsManager.userHasSubscription.callsArgWith(1, null, false)
+		it "should return false if none are true", (done)->
 			@LimitationsManager.userHasSubscriptionOrIsGroupMember @user, (err, hasSubOrIsGroupMember)->
 				hasSubOrIsGroupMember.should.equal false
 				done()
 
+	describe "userHasV1OrV2Subscription", ->
+		beforeEach ->
+			@LimitationsManager.userHasV2Subscription = sinon.stub().yields(null, false)
+			@LimitationsManager.userHasV1Subscription = sinon.stub().yields(null, false)
+
+		it "should return true if userHasV2Subscription", (done)->
+			@LimitationsManager.userHasV2Subscription = sinon.stub().yields(null, true)
+			@LimitationsManager.userHasV1OrV2Subscription @user, (err, hasSub)->
+				hasSub.should.equal true
+				done()
+
+		it "should return true if userHasV1Subscription", (done)->
+			@LimitationsManager.userHasV1Subscription = sinon.stub().yields(null, true)
+			@LimitationsManager.userHasV1OrV2Subscription @user, (err, hasSub)->
+				hasSub.should.equal true
+				done()
+
+		it "should return false if none are true", (done)->
+			@LimitationsManager.userHasV1OrV2Subscription @user, (err, hasSub)->
+				hasSub.should.equal false
+				done()
+
 	describe "hasGroupMembersLimitReached", ->
 
 		beforeEach ->
@@ -309,3 +328,55 @@ describe "LimitationsManager", ->
 			@LimitationsManager.hasGroupMembersLimitReached @user_id, (err, limitReached)->
 				limitReached.should.equal true
 				done()
+
+	describe 'userHasV1Subscription', ->
+		it 'should return true if v1 returns has_subscription = true', (done) ->
+			@V1SubscriptionManager.getSubscriptionsFromV1 = sinon.stub().yields(null, { has_subscription: true })
+			@LimitationsManager.userHasV1Subscription @user, (error, result) =>
+				@V1SubscriptionManager.getSubscriptionsFromV1.calledWith(@user_id).should.equal true
+				result.should.equal true
+				done()
+
+		it 'should return false if v1 returns has_subscription = false', (done) ->
+			@V1SubscriptionManager.getSubscriptionsFromV1 = sinon.stub().yields(null, { has_subscription: false })
+			@LimitationsManager.userHasV1Subscription @user, (error, result) =>
+				@V1SubscriptionManager.getSubscriptionsFromV1.calledWith(@user_id).should.equal true
+				result.should.equal false
+				done()
+
+		it 'should return false if v1 returns nothing', (done) ->
+			@V1SubscriptionManager.getSubscriptionsFromV1 = sinon.stub().yields(null, null)
+			@LimitationsManager.userHasV1Subscription @user, (error, result) =>
+				@V1SubscriptionManager.getSubscriptionsFromV1.calledWith(@user_id).should.equal true
+				result.should.equal false
+				done()
+
+	describe 'userHasV1SubscriptionOrTeam', ->
+		it 'should return true if v1 returns has_subscription = true', (done) ->
+			@V1SubscriptionManager.getSubscriptionsFromV1 = sinon.stub().yields(null, { has_subscription: true })
+			@LimitationsManager.userHasV1SubscriptionOrTeam @user, (error, result) =>
+				@V1SubscriptionManager.getSubscriptionsFromV1.calledWith(@user_id).should.equal true
+				result.should.equal true
+				done()
+
+		it 'should return true if v1 returns some teams', (done) ->
+			@V1SubscriptionManager.getSubscriptionsFromV1 = sinon.stub().yields(null, { teams: ['mock-team'] })
+			@LimitationsManager.userHasV1SubscriptionOrTeam @user, (error, result) =>
+				@V1SubscriptionManager.getSubscriptionsFromV1.calledWith(@user_id).should.equal true
+				result.should.equal true
+				done()
+
+		it 'should return false if v1 returns has_subscription = false and no teams', (done) ->
+			@V1SubscriptionManager.getSubscriptionsFromV1 = sinon.stub().yields(null, { has_subscription: false, teams: [] })
+			@LimitationsManager.userHasV1SubscriptionOrTeam @user, (error, result) =>
+				@V1SubscriptionManager.getSubscriptionsFromV1.calledWith(@user_id).should.equal true
+				result.should.equal false
+				done()
+
+		it 'should return false if v1 returns nothing', (done) ->
+			@V1SubscriptionManager.getSubscriptionsFromV1 = sinon.stub().yields(null, null)
+			@LimitationsManager.userHasV1SubscriptionOrTeam @user, (error, result) =>
+				@V1SubscriptionManager.getSubscriptionsFromV1.calledWith(@user_id).should.equal true
+				result.should.equal false
+				done()
+