
import { DyFM_getPasswordErrors } from './password-regex.util';

describe('| DyFM_getPasswordErrors', () => {

  it('| should return an empty array for a valid password', () => {
    const password = 'Valid1!';
    const result = DyFM_getPasswordErrors(password);
    expect(result).toEqual([]);
  });

  it('| should return an error for missing lowercase letter', () => {
    const password = 'INVALID1!';
    const result = DyFM_getPasswordErrors(password);
    expect(result).toContain('Password must include at least one lowercase letter.');
  });

  it('| should return an error for missing uppercase letter', () => {
    const password = 'invalid1!';
    const result = DyFM_getPasswordErrors(password);
    expect(result).toContain('Password must include at least one uppercase letter.');
  });

  it('| should return an error for missing digit', () => {
    const password = 'Invalid!';
    const result = DyFM_getPasswordErrors(password);
    expect(result).toContain('Password must include at least one digit.');
  });

  it('| should return an error for missing special character', () => {
    const password = 'Invalid1';
    const result = DyFM_getPasswordErrors(password);
    expect(result).toContain('Password must include at least one of the !@#$%^&* characters.');
  });

  it('| should return an error for password length less than 6', () => {
    const password = 'Inv1!';
    const result = DyFM_getPasswordErrors(password);
    expect(result).toContain('Password must be at least 6 characters long.');
  });

  it('| should return multiple errors for a completely invalid password', () => {
    const password = 'inv';
    const result = DyFM_getPasswordErrors(password);
    expect(result).toContain('Password must include at least one uppercase letter.');
    expect(result).toContain('Password must include at least one digit.');
    expect(result).toContain('Password must include at least one of the !@#$%^&* characters.');
    expect(result).toContain('Password must be at least 6 characters long.');
  });

});
