unitTests.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. const { describe, it, expect } = require('jasmine');
  2. describe("Регистрация нового пользователя", function() {
  3. it("должна зарегистрировать нового пользователя и перенаправить на страницу входа", function() {
  4. // Симуляция ввода данных пользователем
  5. document.getElementById('username').value = 'testUser';
  6. document.getElementById('email').value = 'test@example.com';
  7. document.getElementById('password').value = 'password123';
  8. document.getElementById('confirm-password').value = 'password123';
  9. // Шпион на window.location.href
  10. spyOn(window.location, 'href', 'set');
  11. // Триггер отправки формы
  12. document.getElementById('register-form').dispatchEvent(new Event('submit'));
  13. // Проверка, добавлен ли пользователь в localStorage
  14. const users = JSON.parse(localStorage.getItem('users'));
  15. const user = users.find(u => u.username === 'testUser');
  16. expect(user).toBeDefined();
  17. expect(user.email).toBe('test@example.com');
  18. // Проверка перенаправления
  19. expect(window.location.href).toBe('login.html');
  20. });
  21. });
  22. describe("Вход зарегистрированного пользователя", function() {
  23. it("должна аутентифицировать пользователя и перенаправить на страницу профиля", function() {
  24. // Добавление пользователя в localStorage
  25. const users = [{ username: 'testUser', email: 'test@example.com', password: 'password123' }];
  26. localStorage.setItem('users', JSON.stringify(users));
  27. // Симуляция ввода данных пользователем
  28. document.getElementById('username').value = 'testUser';
  29. document.getElementById('password').value = 'password123';
  30. // Шпион на window.location.href
  31. spyOn(window.location, 'href', 'set');
  32. // Триггер отправки формы
  33. document.getElementById('login-form').dispatchEvent(new Event('submit'));
  34. // Проверка, установлен ли currentUser в localStorage
  35. const currentUser = JSON.parse(localStorage.getItem('currentUser'));
  36. expect(currentUser).toBeDefined();
  37. expect(currentUser.username).toBe('testUser');
  38. // Проверка перенаправления
  39. expect(window.location.href).toBe('profile.html');
  40. });
  41. });
  42. describe("Просмотр профиля пользователя", function() {
  43. it("должен отображать информацию профиля пользователя", function() {
  44. // Добавление пользователя в localStorage
  45. const user = { username: 'testUser', email: 'test@example.com' };
  46. localStorage.setItem('currentUser', JSON.stringify(user));
  47. // Загрузка логики страницы профиля
  48. loadProfile();
  49. // Проверка отображаемой информации
  50. expect(document.getElementById('profile-username').textContent).toBe('testUser');
  51. expect(document.getElementById('profile-email').textContent).toBe('test@example.com');
  52. });
  53. });
  54. describe("Редактирование профиля пользователя", function() {
  55. it("должен обновлять информацию профиля пользователя", function() {
  56. // Добавление пользователя в localStorage
  57. const user = { username: 'testUser', email: 'test@example.com' };
  58. localStorage.setItem('currentUser', JSON.stringify(user));
  59. localStorage.setItem('users', JSON.stringify([user]));
  60. // Симуляция ввода данных пользователем
  61. document.getElementById('username').value = 'updatedUser';
  62. // Триггер отправки формы
  63. document.getElementById('profile-form').dispatchEvent(new Event('submit'));
  64. // Проверка, обновлены ли данные пользователя в localStorage
  65. const updatedUser = JSON.parse(localStorage.getItem('currentUser'));
  66. expect(updatedUser.username).toBe('updatedUser');
  67. });
  68. });
  69. describe("Выход из учетной записи", function() {
  70. it("должен завершить сеанс пользователя и перенаправить на страницу входа", function() {
  71. // Добавление пользователя в localStorage
  72. const user = { username: 'testUser', email: 'test@example.com' };
  73. localStorage.setItem('currentUser', JSON.stringify(user));
  74. // Шпион на window.location.href
  75. spyOn(window.location, 'href', 'set');
  76. // Триггер выхода
  77. document.getElementById('logout').dispatchEvent(new Event('click'));
  78. // Проверка, удален ли currentUser из localStorage
  79. expect(localStorage.getItem('currentUser')).toBeNull();
  80. // Проверка перенаправления
  81. expect(window.location.href).toBe('index.html');
  82. });
  83. });
  84. describe("Регистрация с неправильными данными", function() {
  85. it("должен отображать сообщение об ошибке и не регистрировать пользователя", function() {
  86. // Симуляция ввода данных пользователем
  87. document.getElementById('username').value = 'testUser';
  88. document.getElementById('email').value = 'invalid-email';
  89. document.getElementById('password').value = 'password123';
  90. document.getElementById('confirm-password').value = 'password123';
  91. // Триггер отправки формы
  92. document.getElementById('register-form').dispatchEvent(new Event('submit'));
  93. // Проверка сообщения об ошибке
  94. const message = document.getElementById('message');
  95. expect(message.textContent).toBe('Недопустимый адрес электронной почты!');
  96. // Проверка, не добавлен ли пользователь в localStorage
  97. const users = JSON.parse(localStorage.getItem('users'));
  98. const user = users ? users.find(u => u.username === 'testUser') : null;
  99. expect(user).toBeUndefined();
  100. });
  101. });