const { expect } = require('chai') const async = require('async') const User = require('./helpers/User') const Subscription = require('./helpers/Subscription') describe('Subscriptions', function() { describe('features', function() { describe('individual subscriptions', function() { beforeEach(function(done) { this.adminUser = new User() async.series( [ cb => this.adminUser.ensureUserExists(cb), cb => { this.subscription = new Subscription({ adminId: this.adminUser._id, groupPlan: false, planCode: 'professional' }) this.subscription.ensureExists(cb) }, cb => this.subscription.refreshUsersFeatures(cb) ], done ) }) it('should give features to admin', function(done) { this.adminUser.getFeatures((error, features) => { expect(features.collaborators).to.equal(-1) done(error) }) }) }) describe('group subscriptions', function() { beforeEach(function(done) { this.adminUser = new User() this.memberUser = new User() async.series( [ cb => this.adminUser.ensureUserExists(cb), cb => this.memberUser.ensureUserExists(cb), cb => { this.subscription = new Subscription({ adminId: this.adminUser._id, memberIds: [this.memberUser._id], groupPlan: true, planCode: 'professional' }) this.subscription.ensureExists(cb) }, cb => this.subscription.refreshUsersFeatures(cb) ], done ) }) it('should give features to member', function(done) { this.memberUser.getFeatures((error, features) => { expect(features.collaborators).to.equal(-1) done(error) }) }) it('should not give features to admin', function(done) { this.adminUser.getFeatures((error, features) => { expect(features.collaborators).to.equal(1) done(error) }) }) }) }) })