g.test.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. const validateForm = require('./регистрация1.js');
  2. test('отсутствует имя', () => {
  3. const name = '';
  4. const phone = '+79092970715';
  5. const email = 'damir@example.com';
  6. const code = "123456";
  7. const password = 'password123';
  8. const result = validateForm(name, phone, email, code, password);
  9. expect(result).toBe(false);
  10. });
  11. test('неверный формат телефона', () => {
  12. const name = 'Газизов Дамир Рамилевич';
  13. const phone = '89092970715'; // Неверный формат
  14. const email = 'damir@example.com';
  15. const code = "123456";
  16. const password = 'password123';
  17. const result = validateForm(name, phone, email, code, password);
  18. expect(result).toBe(false);
  19. });
  20. test('неверный формат email', () => {
  21. const name = 'Газизов Дамир Рамилевич';
  22. const phone = '+79092970715';
  23. const email = 'damir@example'; // Неверный формат
  24. const code = "123456";
  25. const password = 'password123';
  26. const result = validateForm(name, phone, email, code, password);
  27. expect(result).toBe(false);
  28. });
  29. test('отсутствует код', () => {
  30. const name = 'Газизов Дамир Рамилевич';
  31. const phone = '+79092970715';
  32. const email = 'damir@example.com';
  33. const code = "";
  34. const password = 'password123';
  35. const result = validateForm(name, phone, email, code, password);
  36. expect(result).toBe(false);
  37. });
  38. const { toggleFAQSection, initFAQ } = require('./структура1.js');
  39. // Моки для DOM-элементов
  40. const mockSection = {
  41. querySelector: jest.fn((selector) => {
  42. switch (selector) {
  43. case '.faq-title':
  44. return {
  45. addEventListener: jest.fn((event, callback) => {
  46. if (event === 'click') {
  47. callback(); // Сразу вызываем callback при клике
  48. }
  49. }),
  50. };
  51. case '.faq-questions':
  52. return {
  53. style: { display: 'none' },
  54. };
  55. case '.fas':
  56. return {
  57. classList: {
  58. toggle: jest.fn((className) => {
  59. if (className === 'fa-minus') {
  60. this.currentClass = className;
  61. } else {
  62. this.currentClass = 'fa-plus'; // Имитация начального состояния
  63. }
  64. }),
  65. contains: jest.fn(() => {
  66. return this.currentClass === 'fa-minus';
  67. }),
  68. },
  69. };
  70. default:
  71. return null;
  72. }
  73. }),
  74. };
  75. describe('toggleFAQSection', () => {
  76. test('скрывает вопросы, если они были показаны', () => {
  77. mockSection.querySelector.mockReturnValueOnce({ style: { display: 'block' } });
  78. toggleFAQSection(mockSection);
  79. expect(mockSection.querySelector).toHaveBeenCalledWith('.faq-questions');
  80. expect(mockSection.querySelector('.faq-questions').style.display).toBe('none');
  81. });
  82. test('показывает вопросы, если они были скрыты', () => {
  83. mockSection.querySelector.mockReturnValueOnce({ style: { display: 'none' } });
  84. toggleFAQSection(mockSection);
  85. expect(mockSection.querySelector).toHaveBeenCalledWith('.faq-questions');
  86. });
  87. });
  88. // scroll.test.js
  89. const { scrollFunction, scrollToTop, initScroll } = require('./скроллинг1.js');
  90. // Моки для DOM-элементов
  91. const mockHomeSection = {
  92. // ... (могут быть добавлены свойства для проверки, если нужно)
  93. };
  94. const mockScrollTopBtn = {
  95. style: {
  96. display: ''
  97. }
  98. };
  99. const mockWindow = {
  100. pageYOffset: 0,
  101. scrollTo: jest.fn()
  102. };
  103. // Заменяем `window` и `document.getElementById` на наши моки
  104. global.window = mockWindow;
  105. global.document = {
  106. getElementById: jest.fn((id) => {
  107. if (id === 'home') {
  108. return mockHomeSection;
  109. } else if (id === 'scrollTopBtn') {
  110. return mockScrollTopBtn;
  111. }
  112. })
  113. };
  114. test('scrollFunction: отображает кнопку "Вверх", если прокрутка больше 200 пикселей', () => {
  115. mockWindow.pageYOffset = 201;
  116. scrollFunction(mockHomeSection, mockScrollTopBtn);
  117. expect(mockScrollTopBtn.style.display).toBe('block');
  118. });
  119. test('scrollFunction: скрывает кнопку "Вверх", если прокрутка меньше 200 пикселей', () => {
  120. mockWindow.pageYOffset = 199;
  121. scrollFunction(mockHomeSection, mockScrollTopBtn);
  122. expect(mockScrollTopBtn.style.display).toBe('none');
  123. });
  124. const { showPopup, closePopup } = require('./сотрудники1.js');
  125. // Моки для DOM-элементов
  126. const mockPopupElement = {
  127. style: {
  128. display: ''
  129. }
  130. };
  131. // Заменяем document.getElementById на наш мок
  132. global.document = {
  133. getElementById: jest.fn(() => mockPopupElement)
  134. };
  135. describe('showPopup', () => {
  136. test('устанавливает стиль отображения попапа на "block"', () => {
  137. showPopup('popupId');
  138. expect(document.getElementById).toHaveBeenCalledWith('popupId');
  139. expect(mockPopupElement.style.display).toBe('block');
  140. });
  141. test('корректно обрабатывает неверный ID попапа', () => {
  142. showPopup('nonexistentPopupId');
  143. expect(document.getElementById).toHaveBeenCalledWith('nonexistentPopupId');
  144. });
  145. });
  146. describe('closePopup', () => {
  147. test('устанавливает стиль отображения попапа на "none"', () => {
  148. closePopup('popupId');
  149. expect(document.getElementById).toHaveBeenCalledWith('popupId');
  150. expect(mockPopupElement.style.display).toBe('none');
  151. });
  152. test('корректно обрабатывает неверный ID попапа', () => {
  153. closePopup('nonexistentPopupId');
  154. expect(document.getElementById).toHaveBeenCalledWith('nonexistentPopupId');
  155. });
  156. });