const { describe, it, expect } = require('jasmine'); describe("Регистрация нового пользователя", function() { it("должна зарегистрировать нового пользователя и перенаправить на страницу входа", function() { // Симуляция ввода данных пользователем document.getElementById('username').value = 'testUser'; document.getElementById('email').value = 'test@example.com'; document.getElementById('password').value = 'password123'; document.getElementById('confirm-password').value = 'password123'; // Шпион на window.location.href spyOn(window.location, 'href', 'set'); // Триггер отправки формы document.getElementById('register-form').dispatchEvent(new Event('submit')); // Проверка, добавлен ли пользователь в localStorage const users = JSON.parse(localStorage.getItem('users')); const user = users.find(u => u.username === 'testUser'); expect(user).toBeDefined(); expect(user.email).toBe('test@example.com'); // Проверка перенаправления expect(window.location.href).toBe('login.html'); }); }); describe("Вход зарегистрированного пользователя", function() { it("должна аутентифицировать пользователя и перенаправить на страницу профиля", function() { // Добавление пользователя в localStorage const users = [{ username: 'testUser', email: 'test@example.com', password: 'password123' }]; localStorage.setItem('users', JSON.stringify(users)); // Симуляция ввода данных пользователем document.getElementById('username').value = 'testUser'; document.getElementById('password').value = 'password123'; // Шпион на window.location.href spyOn(window.location, 'href', 'set'); // Триггер отправки формы document.getElementById('login-form').dispatchEvent(new Event('submit')); // Проверка, установлен ли currentUser в localStorage const currentUser = JSON.parse(localStorage.getItem('currentUser')); expect(currentUser).toBeDefined(); expect(currentUser.username).toBe('testUser'); // Проверка перенаправления expect(window.location.href).toBe('profile.html'); }); }); describe("Просмотр профиля пользователя", function() { it("должен отображать информацию профиля пользователя", function() { // Добавление пользователя в localStorage const user = { username: 'testUser', email: 'test@example.com' }; localStorage.setItem('currentUser', JSON.stringify(user)); // Загрузка логики страницы профиля loadProfile(); // Проверка отображаемой информации expect(document.getElementById('profile-username').textContent).toBe('testUser'); expect(document.getElementById('profile-email').textContent).toBe('test@example.com'); }); }); describe("Редактирование профиля пользователя", function() { it("должен обновлять информацию профиля пользователя", function() { // Добавление пользователя в localStorage const user = { username: 'testUser', email: 'test@example.com' }; localStorage.setItem('currentUser', JSON.stringify(user)); localStorage.setItem('users', JSON.stringify([user])); // Симуляция ввода данных пользователем document.getElementById('username').value = 'updatedUser'; // Триггер отправки формы document.getElementById('profile-form').dispatchEvent(new Event('submit')); // Проверка, обновлены ли данные пользователя в localStorage const updatedUser = JSON.parse(localStorage.getItem('currentUser')); expect(updatedUser.username).toBe('updatedUser'); }); }); describe("Выход из учетной записи", function() { it("должен завершить сеанс пользователя и перенаправить на страницу входа", function() { // Добавление пользователя в localStorage const user = { username: 'testUser', email: 'test@example.com' }; localStorage.setItem('currentUser', JSON.stringify(user)); // Шпион на window.location.href spyOn(window.location, 'href', 'set'); // Триггер выхода document.getElementById('logout').dispatchEvent(new Event('click')); // Проверка, удален ли currentUser из localStorage expect(localStorage.getItem('currentUser')).toBeNull(); // Проверка перенаправления expect(window.location.href).toBe('index.html'); }); }); describe("Регистрация с неправильными данными", function() { it("должен отображать сообщение об ошибке и не регистрировать пользователя", function() { // Симуляция ввода данных пользователем document.getElementById('username').value = 'testUser'; document.getElementById('email').value = 'invalid-email'; document.getElementById('password').value = 'password123'; document.getElementById('confirm-password').value = 'password123'; // Триггер отправки формы document.getElementById('register-form').dispatchEvent(new Event('submit')); // Проверка сообщения об ошибке const message = document.getElementById('message'); expect(message.textContent).toBe('Недопустимый адрес электронной почты!'); // Проверка, не добавлен ли пользователь в localStorage const users = JSON.parse(localStorage.getItem('users')); const user = users ? users.find(u => u.username === 'testUser') : null; expect(user).toBeUndefined(); }); });