segunolalive/helloBooks

View on GitHub
client/__tests__/utils/validtation/auth.spec.js

Summary

Maintainability
A
0 mins
Test Coverage
import { isEmpty, validateSignUp, validateLogin, validateForgotPassword }
  from '../../../utils/validation/auth';

describe('auth', () => {
  describe('isEmpty', () => {
    it('returns true if passed an empty array or object', () => {
      expect(isEmpty([])).toBe(true);
      expect(isEmpty({})).toBe(true);
    });

    it('returns false if passed a non-empty array or object', () => {
      expect(isEmpty([1, 2])).toBe(false);
      expect(isEmpty({ a: 'a' })).toBe(false);
    });

    it('throws a Type Error if argument is not of type, object', () => {
      expect(() => isEmpty('sring')).toThrow();
    });
  });


  describe('validateSignup', () => {
    const userData = {
      email: 'smh@to',
      password: 'asdf',
      confirmPassword: 'asdnjhjgh',
      username: ' seni'
    };
    it('it validates user email', () => {
      expect(validateSignUp(userData).errors.email).toBe('Invalid email');
    });
    it('it checks if user email is empty', () => {
      const emptyEmail = { ...userData, email: '' };
      expect(validateSignUp(emptyEmail).errors.email).toBe('Email is required');
    });
    it('it checks if user password is empty', () => {
      const emptyPassword = { ...userData, password: '' };
      expect(validateSignUp(emptyPassword).errors.password)
        .toBe('Password is required');
    });
    it('checks if passwords confirmation was provided', () => {
      const noConfirmation = { ...userData, confirmPassword: '' };
      expect(validateSignUp(noConfirmation).errors.confirmPassword)
        .toBe('Password confirmation is required');
    });
    it('checks if passwords match', () => {
      expect(validateSignUp(userData).errors.confirmPassword)
        .toBe('Passwords do not match');
    });
    it('checks for leading spaces in username', () => {
      expect(validateSignUp(userData).errors.username)
        .toBe('Username cannot begin with space characters');
    });
    it('checks for trailing spaces in username', () => {
      const trailingSpace = { ...userData, username: 'seni   ' };
      expect(validateSignUp(trailingSpace).errors.username)
        .toBe('Username cannot end with space characters');
    });
    it('checks if username was provided', () => {
      const noUsername = { ...userData, username: '' };
      expect(validateSignUp(noUsername).errors.username)
        .toBe('Username is required');
    });
  });

  describe('validateLogin', () => {
    const userData = {
      password: '',
      username: ''
    };
    it('checks if login credentials were  provided', () => {
      expect(validateLogin(userData).errors.username)
        .toBe('Username is required');
      expect(validateLogin(userData).errors.password)
        .toBe('Password is required');
    });
  });

  describe('validateForgotPassword', () => {
    it('checks if email  provided is valid', () => {
      const state = { email: '123@i.u' };
      expect(validateForgotPassword(state).errors.email)
        .toBe('Invalid email');
    });
  });
});