diff --git a/services/web/app/coffee/Features/Subscription/SubscriptionGroupHandler.coffee b/services/web/app/coffee/Features/Subscription/SubscriptionGroupHandler.coffee index 1effdf4504..ca7788fcc9 100644 --- a/services/web/app/coffee/Features/Subscription/SubscriptionGroupHandler.coffee +++ b/services/web/app/coffee/Features/Subscription/SubscriptionGroupHandler.coffee @@ -35,6 +35,10 @@ module.exports = SubscriptionGroupHandler = logger.log user_id:user_id, subscription_id:subscription_id, partOfGroup:partOfGroup, "checking if user is part of a group" callback(err, partOfGroup) + getTotalConfirmedUsersInGroup: (subscription_id, callback=(err, totalUsers)->)-> + SubscriptionLocator.getSubscription subscription_id, (err, subscription)-> + callback(err, subscription?.member_ids?.length) + replaceInArray = (model, property, oldValue, newValue, callback) -> logger.log "Replacing #{oldValue} with #{newValue} in #{property} of #{model}" diff --git a/services/web/test/unit/coffee/Subscription/SubscriptionGroupHandlerTests.coffee b/services/web/test/unit/coffee/Subscription/SubscriptionGroupHandlerTests.coffee index bfd87f2f5a..878e9b25ec 100644 --- a/services/web/test/unit/coffee/Subscription/SubscriptionGroupHandlerTests.coffee +++ b/services/web/test/unit/coffee/Subscription/SubscriptionGroupHandlerTests.coffee @@ -23,13 +23,14 @@ describe "SubscriptionGroupHandler", -> @SubscriptionLocator = getUsersSubscription: sinon.stub() getSubscriptionByMemberIdAndId: sinon.stub() - getSubscription: sinon.stub() + getSubscription: sinon.stub().callsArgWith(1, null, @subscription) @UserCreator = getUserOrCreateHoldingAccount: sinon.stub().callsArgWith(1, null, @user) @SubscriptionUpdater = removeUserFromGroup: sinon.stub().callsArgWith(2) + getSubscription: sinon.stub().callsArgWith(2) @TeamInvitesHandler = createInvite: sinon.stub().callsArgWith(2) @@ -50,6 +51,7 @@ describe "SubscriptionGroupHandler", -> @Subscription = update: sinon.stub().yields() + findOne: sinon.stub().yields() @settings = siteUrl:"http://www.sharelatex.com" @@ -135,3 +137,18 @@ describe "SubscriptionGroupHandler", -> @Handler.isUserPartOfGroup @user_id, @subscription_id, (err, partOfGroup)-> partOfGroup.should.equal false done() + + describe "getTotalConfirmedUsersInGroup", -> + describe "for existing subscriptions", -> + beforeEach -> + @subscription.member_ids = ["12321", "3121321"] + it "should call the subscription locator and return 2 users", (done)-> + @Handler.getTotalConfirmedUsersInGroup @subscription_id, (err, count)=> + @SubscriptionLocator.getSubscription.calledWith(@subscription_id).should.equal true + count.should.equal 2 + done() + describe "for nonexistent subscriptions", -> + it "should return undefined", (done)-> + @Handler.getTotalConfirmedUsersInGroup "fake-id", (err, count)=> + should.not.exist(count) + done()