Created
January 11, 2018 08:47
-
-
Save Archimidis/809f4cda705edc7533b02cb2714bf71f to your computer and use it in GitHub Desktop.
Revisions
-
Archimidis revised this gist
Jan 11, 2018 . No changes.There are no files selected for viewing
-
Archimidis created this gist
Jan 11, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,56 @@ // UserRepository.js ------------------------------------------------------------------------- // ... implementation module.exports = UserRepository; // UserService.js ------------------------------------------------------------------------- // ... implementation module.exports = UserService; // createNewUser.js ------------------------------------------------------------------------- const createNewUser = (userService) => (newUser) => { // ... implementation that uses userService } module.exports = createController; // app.js ------------------------------------------------------------------------- const express = require('express') const app = express() const UserRepository = require('./UserRepository'); const UserService = require('./UserService'); // initialize db and everything const userRepository = new UserRepository(); const userservice = new UserService(userRepository); const createNewUser = require('./createNewUser')(userservice); app.post('/register', (req, res) => { const newUser = req.body; // prepare other args as well createNewUser(newUser) .then(result => res.json({ /* ... */ }) .catch(error => res.json({ /* ... */ }); }); app.listen(3000, () => console.log('Example app listening on port 3000!')) // Test: createNewUser.spec.js ------------------------------------------------------------------------- describe('createNewUser', function() { it('will fail when insert new user', function() { const userServiceStub = { getByEmail() { return Promise.resolve('[email protected]'); }, insertUser(user) { return Promise.reject({ /* error props */ }); } }; const result = createNewUser(userservice))({ /* user data */ }) // assert on result ... }); });