Files
GitLab CI/CD 63c6a83e88
Quote Bot CI/CD Pipeline / check (push) Waiting to run
Quote Bot CI/CD Pipeline / Security Scan (push) Waiting to run
Quote Bot CI/CD Pipeline / Build and push to Docker Hub (push) Blocked by required conditions
Quote Bot CI/CD Pipeline / Deploy to VPS via Ansible (push) Blocked by required conditions
Showcase update - f20be312
2026-09-13 10:32:45 +00:00

68 lines
2.2 KiB
Python

import unittest
from pathlib import Path
from unittest.mock import patch
import tempfile
import os
# Подменяем DATA_FILE на временный файл перед импортом модуля
class TestQuotes(unittest.TestCase):
def setUp(self):
"""Создаем временный файл для каждого теста."""
self.tmp = tempfile.NamedTemporaryFile(mode="w",
suffix=".txt",
delete=False,
encoding="utf-8")
self.tmp.close()
# Патчим путь к файлу в модуле quotes
self.patcher = patch("src.quotes.DATA_FILE", Path(self.tmp.name))
self.patcher.start()
def tearDown(self):
"""Удаляем временный файл после каждого теста."""
self.patcher.stop()
os.unlink(self.tmp.name)
def test_empty_file_returns_none(self):
from src.quotes import get_random_quote
self.assertIsNone(get_random_quote())
def test_empty_file_count_is_zero(self):
from src.quotes import count_quotes
self.assertEqual(count_quotes(), 0)
def test_add_and_count(self):
from src.quotes import add_quote, count_quotes
add_quote("Первая цитата")
add_quote("Вторая цитата")
self.assertEqual(count_quotes(), 2)
def test_add_returns_true_for_new_quote(self):
from src.quotes import add_quote
result = add_quote("Новая цитата")
self.assertTrue(result)
def test_add_returns_false_for_duplicate(self):
from src.quotes import add_quote
add_quote("Дубликат")
result = add_quote("Дубликат")
self.assertFalse(result)
def test_get_random_returns_string(self):
from src.quotes import add_quote, get_random_quote
add_quote("Тестовая цитата")
quote = get_random_quote()
self.assertIsInstance(quote, str)
self.assertEqual(quote, "Тестовая цитата")
if __name__ == "__main__":
unittest.main()