warran / api /src /tests /user-business.test.ts
Jessedbrown's picture
refactor: change error class and tests
1f2ec65
Raw History Blame Contribute Delete
1.97 kB
import { UserBusiness } from "../business";
import { UserDatabase } from "../data";
import { InvalidParameterError } from "../error";
import { UserInputDTO } from "../model";
const makeUserBusiness = () => {
const userDatabase = new UserDatabase();
return new UserBusiness(userDatabase)
}
describe('createUser()', () => {
test('It should return 400 if there is no email provided ', async () => {
try {
const userBusiness = makeUserBusiness()
const user: UserInputDTO = {
password: '123456',
name: 'name',
email: ''
}
await userBusiness.createUser(user)
} catch (error) {
expect(error.message).toEqual("Invalid param: email")
}
});
test('It should return 400 if there is no password provided ', async () => {
try {
const userBusiness = makeUserBusiness()
const user: UserInputDTO = {
password: '',
name: 'name',
email: 'email@mail.com'
}
await userBusiness.createUser(user)
} catch (error) {
expect(error).toEqual(new Error('users validation failed: password: Password required'))
}
});
test('It should return 400 if there is no name provided ', async () => {
try {
const userBusiness = makeUserBusiness()
const user: UserInputDTO = {
password: '123456',
name: '',
email: 'email@mail.com'
}
await userBusiness.createUser(user)
} catch (error) {
expect(error).toEqual(new Error('users validation failed: name: Name required'))
}
});
test('It should call the userDatabase with the correct email ', async () => {
const userBusiness = makeUserBusiness()
const createUserSpy = jest.spyOn(userBusiness, 'createUser')
const user: UserInputDTO = {
password: '123456',
name: 'tester',
email: 'email@mail.com'
}
await userBusiness.createUser(user)
expect(createUserSpy).toHaveBeenCalledWith(user)
});
});