Browse Source

10 модульных тестов

Anastasia 5 months ago
parent
commit
1cbc5ab45b

+ 22 - 0
AlterAuto/assets/json/1checkForm.js

@@ -0,0 +1,22 @@
+function checkForm(oldPassword, newPassword, repeatPassword) {
+    let isValid = false;
+  
+    // Проверка на новый пароль не менее 8 символов
+    if (newPassword.length < 8) {
+      throw new Error('Новый пароль должен быть не менее 8 символов!');
+    }
+  
+    // Проверка на совпадение нового пароля и повторного пароля
+    if (newPassword !== repeatPassword) {
+      throw new Error('Новый пароль и повторный пароль не совпадают!');
+    }
+  
+    isValid = true; // Если проверки пройдены, isValid становится true
+  
+    if (isValid) {
+     
+      return true; 
+    }
+  }
+  
+  module.exports = checkForm;

+ 12 - 0
AlterAuto/assets/json/1checkdata.js

@@ -0,0 +1,12 @@
+function checkDate(inputDate) {
+    const today = new Date();
+    const selectedDate = new Date(inputDate);
+  
+    if (selectedDate < today) {
+      throw new Error("Дата должна быть больше или равна сегодняшней дате");
+    }
+  
+    return today.toISOString().slice(0, 10); // Возвращаем сегодняшнюю дату в формате YYYY-MM-DD
+  }
+  
+  module.exports = checkDate;

+ 9 - 0
AlterAuto/assets/json/1generetion.js

@@ -0,0 +1,9 @@
+function generateRandomCode(length = 6) {
+    let code = "";
+    for (let i = 0; i < length; i++) {
+      code += Math.floor(Math.random() * 10);
+    }
+    return code;
+  }
+  
+  module.exports = generateRandomCode;

+ 23 - 0
AlterAuto/assets/json/1kredit.js

@@ -0,0 +1,23 @@
+function calculateCredit(vehiclePrice, loanTerm) {
+    let interestRate;
+    if (loanTerm >= 3 && loanTerm <= 6) {
+        interestRate = 0.09;
+    } else if (loanTerm >= 6 && loanTerm <= 9) {
+        interestRate = 0.13;
+    } else {
+        interestRate = 0.15;
+    }
+
+    const monthlyInterestRate = interestRate / 12; 
+    const monthlyPayment = (vehiclePrice * monthlyInterestRate + vehiclePrice / loanTerm).toFixed(2);
+    const totalInterest = (monthlyPayment * loanTerm - vehiclePrice).toFixed(2);
+    const totalPayment = (vehiclePrice + parseFloat(totalInterest));
+
+    return { // Вернуть объект с результатами
+        monthlyPayment,
+        totalInterest,
+        totalPayment
+    };
+}
+
+module.exports = calculateCredit;

+ 17 - 0
AlterAuto/assets/json/1sendForm.js

@@ -0,0 +1,17 @@
+function sendForm(name, phone, date) {
+    // Проверяем номер телефона:
+    const phoneRegex = /^(\+7|8)\d{10}$/; // Регулярное выражение для проверки формата
+    if (!phoneRegex.test(phone)) {
+      throw new Error("Номер телефона должен быть в формате 89290390339 или +79290390339.");
+    }
+  
+    if (!name || !phone || !date) {
+      throw new Error("Все поля должны быть заполнены");
+    } else {
+      // Здесь можно добавить код для сохранения данных (saveData) или отправки формы
+      console.log("Форма отправлена!");
+      return { name, phone, date }; // Возвращаем объект с данными
+    }
+  }
+  
+  module.exports = sendForm;

+ 16 - 0
AlterAuto/assets/json/1testdrive.js

@@ -0,0 +1,16 @@
+function validateForm(name, surname, phone, email, password) {
+   
+    if (name.trim() === "" || surname.trim() === "" || phone.trim() === "" || email.trim() === "" || password.trim() === "") {
+      throw new Error("Все поля должны быть заполнены.");
+    }
+  
+    const emailRegex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
+    if (!emailRegex.test(email)) {
+      throw new Error("Введите корректный email.");
+    }
+  
+    return true; 
+  }
+  
+  module.exports = validateForm;
+  

+ 95 - 0
AlterAuto/assets/json/g.test.js

@@ -0,0 +1,95 @@
+const calculateCredit = require('./1kredit.js');
+
+  test('Цена: 2000000, Месяцев: 5', () => {
+    const vehiclePrice = 2000000;
+    const loanTerm = 5;
+    const expectedResult = {
+      monthlyPayment: '415000.00', 
+      totalInterest: '75000.00',
+      totalPayment: 2075000.00
+    };
+    const result = calculateCredit(vehiclePrice, loanTerm);
+    expect(result.monthlyPayment).toBe(expectedResult.monthlyPayment);
+    expect(result.totalInterest).toBe(expectedResult.totalInterest);
+    expect(result.totalPayment).toBe(expectedResult.totalPayment);
+  });
+
+  test('возвращает правильные значения для срока кредита в 6 месяцев', () => {
+    const vehiclePrice = 1000000;
+    const loanTerm = 6;
+  
+    const result = calculateCredit(vehiclePrice, loanTerm);
+  
+    expect(result.monthlyPayment).toBe('174166.67');
+    expect(result.totalInterest).toBe('45000.02');
+    expect(result.totalPayment).toBe(1045000.02);
+  });
+
+
+  const sendForm  = require('./1sendForm.js');
+
+  test('возвращает объект данных', () => {
+    const name = 'Иван Иванов';
+    const phone = '+79290390339';
+    const date = '2024-03-15';
+    
+    const result = sendForm(name, phone, date);
+    expect(result).toEqual({ name, phone, date });
+  });
+  
+
+  const validateForm  = require('./1testdrive.js');
+test('все поля заполнены правильно', () => {
+    const name = 'Иван';
+    const surname = 'Иванов';
+    const phone = '89290390339';
+    const email = 'ivan.ivanov@example.com';
+    const password = 'password123';
+  
+    const result = validateForm(name, surname, phone, email, password);
+    expect(result).toBe(true);
+  });
+
+  test('email введен некорректно', () => {
+    expect(() => validateForm('Иван', 'Иванов', '89290390339', 'invalidemail', 'password123')).toThrowError("Введите корректный email.");
+  });
+
+
+  const generateRandomCode = require('./1generetion.js'); 
+
+  test('возвращает код длиной 6 по умолчанию', () => {
+    const code = generateRandomCode();
+    expect(code).toHaveLength(6);
+  });
+
+  test('возвращает код заданной длины', () => {
+    const code = generateRandomCode(4);
+    expect(code).toHaveLength(4);
+  });
+
+  const checkForm = require('./1checkForm.js'); // Путь к вашему файлу checkForm.js
+
+  test('все поля пароля заполнены правильно', () => {
+    const oldPassword = 'oldpassword';
+    const newPassword = 'newpassword123';
+    const repeatPassword = 'newpassword123';
+  
+    const result = checkForm(oldPassword, newPassword, repeatPassword);
+    expect(result).toBe(true);
+  });
+
+  test('новый и старый пароль не совпадают', () => {
+    const oldPassword = 'oldpassword';
+    const newPassword = 'newpassword123';
+    const repeatPassword = 'wrongpassword';
+  
+    expect(() => checkForm(oldPassword, newPassword, repeatPassword)).toThrowError('Новый пароль и повторный пароль не совпадают!');
+  });
+
+  const checkDate = require('./1checkdata.js'); 
+
+  test('введенная дата находится в прошлом', () => {
+    const inputDate = '2023-12-31'; // Прошлое
+  
+    expect(() => checkDate(inputDate)).toThrowError("Дата должна быть больше или равна сегодняшней дате");
+  });

+ 0 - 0
AlterAuto/package-lock.json → AlterAuto/assets/json/package-lock.json


+ 9 - 0
AlterAuto/assets/json/package.json

@@ -0,0 +1,9 @@
+{
+  "devDependencies": {
+    "jest": "^29.7.0",
+    "jest-mock": "^29.7.0"
+  },
+  "scripts": {
+    "test": "jest"
+  }
+}

+ 0 - 5
AlterAuto/package.json

@@ -1,5 +0,0 @@
-{
-    "scripts": {
-      "test": "jest"
-    }
-}