| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- const chai = require('chai')
- const expect = chai.expect
- const chaiAsPromised = require('chai-as-promised')
- chai.use(chaiAsPromised)
- const { User } = require('../../../app/src/models/User')
- const { Subscription } = require('../../../app/src/models/Subscription')
- describe('mongoose', function() {
- describe('User', function() {
- const email = 'wombat@potato.net'
- it('allows the creation of a user', async function() {
- await expect(User.create({ email: email })).to.be.fulfilled
- await expect(User.findOne({ email: email })).to.eventually.exist
- })
- it('does not allow the creation of multiple users with the same email', async function() {
- await expect(User.create({ email: email })).to.be.fulfilled
- await expect(User.create({ email: email })).to.be.rejected
- await expect(User.count({ email: email })).to.eventually.equal(1)
- })
- })
- describe('Subsription', function() {
- let user, otherUser
- beforeEach(async function() {
- user = await User.create({ email: 'wombat@potato.net' })
- otherUser = await User.create({ email: 'giraffe@turnip.org' })
- })
- it('allows the creation of a subscription', async function() {
- await expect(
- Subscription.create({ admin_id: user._id, manager_ids: [user._id] })
- ).to.be.fulfilled
- await expect(Subscription.findOne({ admin_id: user._id })).to.eventually
- .exist
- })
- it('does not allow the creation of a subscription without a manager', async function() {
- await expect(Subscription.create({ admin_id: user._id })).to.be.rejected
- })
- it('does not allow a user to manage more than one group', async function() {
- await expect(
- Subscription.create({ admin_id: user._id, manager_ids: [user._id] })
- ).to.be.fulfilled
- await expect(
- Subscription.create({
- admin_id: otherUser._id,
- manager_ids: [otherUser._id]
- })
- ).to.be.fulfilled
- await expect(
- Subscription.update(
- { admin_id: user._id },
- { $push: { manager_ids: otherUser._id } }
- )
- ).to.be.rejected
- })
- })
- })
|