const validateForm  = require('./регистрация1.js');

test('отсутствует имя', () => {
    const name = '';
    const phone = '+79092970715';
    const email = 'damir@example.com';
    const code = "123456";
    const password = 'password123';
  
    const result = validateForm(name, phone, email, code, password);
    expect(result).toBe(false);
  });

test('неверный формат телефона', () => {
    const name = 'Газизов Дамир Рамилевич';
    const phone = '89092970715'; // Неверный формат
    const email = 'damir@example.com';
    const code = "123456";
    const password = 'password123';
  
    const result = validateForm(name, phone, email, code, password);
    expect(result).toBe(false);
  });

test('неверный формат email', () => {
    const name = 'Газизов Дамир Рамилевич';
    const phone = '+79092970715';
    const email = 'damir@example'; // Неверный формат
    const code = "123456";
    const password = 'password123';
  
    const result = validateForm(name, phone, email, code, password);
    expect(result).toBe(false);
  });

test('отсутствует код', () => {
    const name = 'Газизов Дамир Рамилевич';
    const phone = '+79092970715';
    const email = 'damir@example.com';
    const code = ""; 
    const password = 'password123';
  
    const result = validateForm(name, phone, email, code, password);
    expect(result).toBe(false);
  });

  const { toggleFAQSection, initFAQ } = require('./структура1.js');

  // Моки для DOM-элементов
  const mockSection = {
    querySelector: jest.fn((selector) => {
      switch (selector) {
        case '.faq-title':
          return {
            addEventListener: jest.fn((event, callback) => {
              if (event === 'click') {
                callback(); // Сразу вызываем callback при клике
              }
            }),
          };
        case '.faq-questions':
          return {
            style: { display: 'none' },
          };
        case '.fas':
          return {
            classList: {
              toggle: jest.fn((className) => {
                if (className === 'fa-minus') {
                  this.currentClass = className;
                } else {
                  this.currentClass = 'fa-plus'; // Имитация начального состояния
                }
              }),
              contains: jest.fn(() => {
                return this.currentClass === 'fa-minus';
              }),
            },
          };
        default:
          return null;
      }
    }),
  };
  
  describe('toggleFAQSection', () => {
    test('скрывает вопросы, если они были показаны', () => {
      mockSection.querySelector.mockReturnValueOnce({ style: { display: 'block' } });
      toggleFAQSection(mockSection);
      expect(mockSection.querySelector).toHaveBeenCalledWith('.faq-questions');
      expect(mockSection.querySelector('.faq-questions').style.display).toBe('none');
    });
  
    test('показывает вопросы, если они были скрыты', () => {
      mockSection.querySelector.mockReturnValueOnce({ style: { display: 'none' } });
      toggleFAQSection(mockSection);
      expect(mockSection.querySelector).toHaveBeenCalledWith('.faq-questions');
    });
  });
// scroll.test.js
const { scrollFunction, scrollToTop, initScroll } = require('./скроллинг1.js');

// Моки для DOM-элементов
const mockHomeSection = {
  // ... (могут быть добавлены свойства для проверки, если нужно)
};
const mockScrollTopBtn = {
  style: {
    display: ''
  }
};

const mockWindow = {
  pageYOffset: 0,
  scrollTo: jest.fn() 
};

// Заменяем `window` и `document.getElementById` на наши моки
global.window = mockWindow;
global.document = {
  getElementById: jest.fn((id) => {
    if (id === 'home') {
      return mockHomeSection;
    } else if (id === 'scrollTopBtn') {
      return mockScrollTopBtn;
    }
  })
};

test('scrollFunction: отображает кнопку "Вверх", если прокрутка больше 200 пикселей', () => {
  mockWindow.pageYOffset = 201; 
  scrollFunction(mockHomeSection, mockScrollTopBtn);
  expect(mockScrollTopBtn.style.display).toBe('block');
});

test('scrollFunction: скрывает кнопку "Вверх", если прокрутка меньше 200 пикселей', () => {
  mockWindow.pageYOffset = 199; 
  scrollFunction(mockHomeSection, mockScrollTopBtn);
  expect(mockScrollTopBtn.style.display).toBe('none');
});


const { showPopup, closePopup } = require('./сотрудники1.js');

// Моки для DOM-элементов
const mockPopupElement = {
  style: {
    display: ''
  }
};

// Заменяем document.getElementById на наш мок
global.document = {
  getElementById: jest.fn(() => mockPopupElement)
};

describe('showPopup', () => {
  test('устанавливает стиль отображения попапа на "block"', () => {
    showPopup('popupId');
    expect(document.getElementById).toHaveBeenCalledWith('popupId');
    expect(mockPopupElement.style.display).toBe('block');
  });

  test('корректно обрабатывает неверный ID попапа', () => {
    showPopup('nonexistentPopupId');
    expect(document.getElementById).toHaveBeenCalledWith('nonexistentPopupId');
  });
});

describe('closePopup', () => {
  test('устанавливает стиль отображения попапа на "none"', () => {
    closePopup('popupId');
    expect(document.getElementById).toHaveBeenCalledWith('popupId');
    expect(mockPopupElement.style.display).toBe('none');
  });

  test('корректно обрабатывает неверный ID попапа', () => {
    closePopup('nonexistentPopupId');
    expect(document.getElementById).toHaveBeenCalledWith('nonexistentPopupId');
  });
});



