@raphaeldeveloper/whoiam.domain
Version:
Project with domain rules about user authentication.
72 lines (54 loc) • 2.78 kB
JavaScript
const test = require('tape');
const CreateUser = require('../../UserAccount/CreateUser');
const User = require('../../UserAccount/User');
const UserAccountRepositoryStub = require('./UserAccountRepositoryStub');
test('Should be possible to create user', (t) => {
let user = new User('userName', 'user@email.com', 'password');
let userAccountRepository = new UserAccountRepositoryStub();
let createUser = new CreateUser(userAccountRepository);
createUser.do(user);
t.assert(userAccountRepository.getByUserName(user.userName) !== null, 'User was created');
t.end();
});
test('Should not be possible to create user without userName', (t) => {
let user = new User();
let userAccountRepository = new UserAccountRepositoryStub();
let createUser = new CreateUser(userAccountRepository);
createUser.do(user);
t.assert(userAccountRepository.getAll().length === 0, 'User was not created');
t.end();
});
test('Should not be possible to create user without email', (t) => {
let user = new User('userName');
let userAccountRepository = new UserAccountRepositoryStub();
let createUser = new CreateUser(userAccountRepository);
createUser.do(user);
t.assert(userAccountRepository.getAll().length === 0, 'User was not created');
t.end();
});
test('Should not be possible to create user without password', (t) => {
let user = new User('userName', 'user@email.com');
let userAccountRepository = new UserAccountRepositoryStub();
let createUser = new CreateUser(userAccountRepository);
createUser.do(user);
t.assert(userAccountRepository.getAll().length === 0, 'User was not created');
t.end();
});
test('Should not be possible to create user if userName is already used', (t) => {
let user = new User('userName', 'user@email.com', 'password');
let userAccountRepository = new UserAccountRepositoryStub();
let createUser = new CreateUser(userAccountRepository);
userAccountRepository.insert(new User('userName', 'user@email.com', 'password'));
createUser.do(user);
t.assert(userAccountRepository.getAll().length === 1, 'User was not created');
t.end();
});
test('Should not be possible to create user if email is already used', (t) => {
let user = new User('userName', 'user@email.com', 'password');
let userAccountRepository = new UserAccountRepositoryStub();
let createUser = new CreateUser(userAccountRepository);
userAccountRepository.insert(new User('userName2', 'user@email.com', 'password'));
createUser.do(user);
t.assert(userAccountRepository.getAll().length === 1, 'User was not created');
t.end();
});