diff --git a/index.test.js b/index.test.js index f2f2f14..d62d4dd 100644 --- a/index.test.js +++ b/index.test.js @@ -1,17 +1,17 @@ const test = require('ava') const sinon = require('sinon') -const db = require('./lib/db') +const { UsersCollection } = require('./lib/db') const userRepository = require('./lib/user-repository') const emailService = require('./lib/email-service') const newsletter = require('.') test.beforeEach(async () => { - await db.get('users').remove({}) + await UsersCollection.remove({}) }) test('sends a newsletter to users that did not yet receive it', async t => { - await db.get('users').insert({ name: 'test', email: 'test@test.com', lastEmailSentAt: null }) + await UsersCollection.insert({ name: 'test', email: 'test@test.com', lastEmailSentAt: null }) sinon.spy(userRepository, 'findNotYetReceivedNewsletter') sinon.stub(emailService, 'sendTo') diff --git a/lib/db.js b/lib/db.js index d2d5f84..c61282d 100644 --- a/lib/db.js +++ b/lib/db.js @@ -1,4 +1,6 @@ const monk = require('monk') const db = monk(process.env.MONGO_URL) -module.exports = db +module.exports = { + UsersCollection: db.get('users') +} diff --git a/lib/user-repository.js b/lib/user-repository.js index 23d4663..e320ff9 100644 --- a/lib/user-repository.js +++ b/lib/user-repository.js @@ -1,8 +1,8 @@ -const db = require('./db') +const { UsersCollection } = require('./db') module.exports = { findNotYetReceivedNewsletter: () => { - return db.get('users').find({ + return UsersCollection.find({ lastEmailSentAt: null }) } diff --git a/lib/user-repository.test.js b/lib/user-repository.test.js index c1c5b2b..094b063 100644 --- a/lib/user-repository.test.js +++ b/lib/user-repository.test.js @@ -1,15 +1,21 @@ const test = require('ava') -const db = require('./db') +const sinon = require('sinon') const userRepository = require('./user-repository') +const { UsersCollection } = require('./db') test.beforeEach(async () => { - await db.get('users').remove({}) + await UsersCollection.remove({}) }) test('find users that did not yet receive the newsletter', async t => { - await db.get('users').insert({ name: 'test', email: 'test@test.com', lastEmailSentAt: null }) + await UsersCollection.insert({ name: 'test', email: 'test@test.com', lastEmailSentAt: null }) + + sinon.spy(UsersCollection, 'find') const users = await userRepository.findNotYetReceivedNewsletter() t.true(Array.isArray(users)) t.is(users.length, 1) + + t.true(UsersCollection.find.calledOnce) + t.true(UsersCollection.find.calledWith({ lastEmailSentAt: null })) })