Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 93 additions & 11 deletions src/validateRegisterForm.test.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,112 @@
'use strict';
"use strict";

describe(`Function 'validateRegisterForm':`, () => {
const validateRegisterForm = require('./validateRegisterForm');
const validateRegisterForm = require("./validateRegisterForm");

it(`should be declared`, () => {
expect(validateRegisterForm).toBeInstanceOf(Function);
});

it(`should return object`, () => {
expect(typeof validateRegisterForm('test@mail.com', 'P@ssword1!'))
.toBe('object');
expect(typeof validateRegisterForm("test@mail.com", "P@ssword1!")).toBe(
"object"
);
});

it(`should return success message for the valid input`, () => {
const isValid = validateRegisterForm('test@mail.com', 'P@ssword1!');
it(`success message for the valid input`, () => {
const isValid = validateRegisterForm("test@mail.com", "P@ssword1!");

expect(isValid.code).toBe(200);
expect(isValid.message).toBe('Email and password are valid.');
expect(isValid.message).toBe("Email and password are valid.");
});

it(`should return error for valid email and password without number`, () => {
const invalidPassword = validateRegisterForm('test@mail.com', 'P@ssword');
it(`email error for email with no english letters`, () => {
const isValid = validateRegisterForm("test@maєil.com", "P@ssword1!");

expect(isValid.code).toBe(422);
expect(isValid.message).toBe("Email is invalid.");
});

it(`success message for email with digits and characters`, () => {
const isValid = validateRegisterForm(
"Tf4st@m5hgil.co!^&%$5m.cj",
"P@ssword1!"
);

expect(isValid.code).toBe(200);
expect(isValid.message).toBe("Email and password are valid.");
});

it(`email error for email without @`, () => {
const isValid = validateRegisterForm("testmail.com", "P@ssword1!");

expect(isValid.code).toBe(422);
expect(isValid.message).toBe("Email is invalid.");
});

it(`email error for email with . at start`, () => {
const isValid = validateRegisterForm(".test@mail.com", "P@ssword1!");

expect(isValid.code).toBe(422);
expect(isValid.message).toBe("Email is invalid.");
});

it(`email error for email with double dots`, () => {
const isValid = validateRegisterForm("te..st@mail.com", "P@ssword1!");

expect(isValid.code).toBe(422);
expect(isValid.message).toBe("Email is invalid.");
});

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excellent tests for invalid dot usage in emails. To make the coverage complete, please also add tests for two other scenarios mentioned in the requirements:

  1. An email that ends with a dot (e.g., 'test@mail.com.').
  2. A top-level domain that starts with a dot (e.g., 'test@.mail.com').


it(`password error for valid email and password without number`, () => {
const invalidPassword = validateRegisterForm("test@mail.com", "P@ssword");

expect(invalidPassword.code).toBe(422);
expect(invalidPassword.message).toBe('Password is invalid.');
expect(invalidPassword.message).toBe("Password is invalid.");
});

// write more tests here
it(`password error for valid email and password without character`, () => {
const invalidPassword = validateRegisterForm("test@mail.com", "Password1");

expect(invalidPassword.code).toBe(422);
expect(invalidPassword.message).toBe("Password is invalid.");
});

it(`password error for valid email and password without uppercase letter.`, () => {

Check failure on line 75 in src/validateRegisterForm.test.js

View workflow job for this annotation

GitHub Actions / build (12.x)

Line 75 exceeds the maximum line length of 80
const invalidPassword = validateRegisterForm("test@mail.com", "p@assword1");

expect(invalidPassword.code).toBe(422);
expect(invalidPassword.message).toBe("Password is invalid.");
});

it(`invalid password.length > 16`, () => {
const invalidPassword = validateRegisterForm(
"test@mail.com",
"P@sswordhjkkh2###"
);

expect(invalidPassword.code).toBe(422);
expect(invalidPassword.message).toBe("Password is invalid.");
});

it(`invalid password.length < 8`, () => {
const invalidPassword = validateRegisterForm("test@mail.com", "P@s2###");

expect(invalidPassword.code).toBe(422);
expect(invalidPassword.message).toBe("Password is invalid.");
});

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good coverage of invalid password cases. One requirement is missing a test: that passwords can include Cyrillic letters (Aa-Яя). Please add a test case for a valid password that contains Cyrillic characters to ensure full compliance.


it(`email error for email without dot in domain`, () => {
const isValid = validateRegisterForm("test@mailcom", "P@ssword1!");

expect(isValid.code).toBe(422);
expect(isValid.message).toBe("Email is invalid.");
});

it(`error message if password and email are invalid`, () => {
const isValid = validateRegisterForm("test@mailcom", "p@ssword1!");

expect(isValid.code).toBe(500);
expect(isValid.message).toBe("Password and email are invalid.");
});
});
Loading