Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 31 additions & 55 deletions tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,55 +35,43 @@ def test_add_new_book_valid_name_adds_book_without_genre(self):
assert book_name in collector.books_genre
assert collector.books_genre[book_name] == '' # У добавленной книги нет жанра

# 2. Тест на невозможность добавления дубликата (метод add_new_book)
# 2. Тест на граничное значение: можно добавить книгу с названием длиной 40 символов
def test_add_new_book_40_chars_name_adds_successfully(self):
collector = BooksCollector()
book_name = "A" * 40 # Ровно 40 символов
collector.add_new_book(book_name)
assert book_name in collector.books_genre

# 3. Тест на граничное значение: нельзя добавить книгу с названием длиной 41 символ
def test_add_new_book_41_chars_name_not_added(self):
collector = BooksCollector()
book_name = "A" * 41 # 41 символ - уже недопустимо
collector.add_new_book(book_name)
assert book_name not in collector.books_genre

# 4. Тест на невозможность добавления дубликата (метод add_new_book)
def test_add_new_book_duplicate_not_added(self):
collector = BooksCollector()
book_name = "1984"
collector.add_new_book(book_name)
collector.add_new_book(book_name) # Пытаемся добавить второй раз
assert len(collector.books_genre) == 1 # Только одна книга

# 3. Тест на установку жанра (метод set_book_genre)
# 5. Тест на установку жанра (метод set_book_genre)
def test_set_book_genre_valid_book_and_genre_sets_genre(self):
collector = BooksCollector()
collector.add_new_book("Преступление и наказание")
collector.set_book_genre("Преступление и наказание", "Детективы")
assert collector.get_book_genre("Преступление и наказание") == "Детективы"

# 4. Тест на получение жанра книги (метод get_book_genre)
# 6. Тест на получение жанра книги (метод get_book_genre)
def test_get_book_genre_returns_correct_genre(self):
collector = BooksCollector()
collector.add_new_book("Мастер и Маргарита")
collector.set_book_genre("Мастер и Маргарита", "Фантастика")
genre = collector.get_book_genre("Мастер и Маргарита")
assert genre == "Фантастика"

# 5. Параметризованный тест на получение книг по жанру (метод get_books_with_specific_genre)
@pytest.mark.parametrize("book_name,genre", [
("Книга 1", "Фантастика"),
("Книга 2", "Ужасы"),
("Книга 3", "Комедии"),
])
def test_get_books_with_specific_genre_returns_correct_books(self, book_name, genre):
collector = BooksCollector()
collector.add_new_book(book_name)
collector.set_book_genre(book_name, genre)

books = collector.get_books_with_specific_genre(genre)
assert book_name in books
assert len(books) == 1

# 6. Тест на получение всех книг (метод get_books_genre)
def test_get_books_genre_returns_all_books(self):
collector = BooksCollector()
collector.add_new_book("Книга 1")
collector.add_new_book("Книга 2")

all_books = collector.get_books_genre()
assert len(all_books) == 2
assert "Книга 1" in all_books
assert "Книга 2" in all_books

# 7. Тест на получение книг для детей (метод get_books_for_children)
def test_get_books_for_children_excludes_age_rated_genres(self):
collector = BooksCollector()
Expand All @@ -100,7 +88,18 @@ def test_get_books_for_children_excludes_age_rated_genres(self):
# Только "Веселая книга" должна быть в списке
assert children_books == ["Веселая книга"]

# 8. Тест на добавление в избранное (метод add_book_in_favorites)
# 8. Тест на добавление в избранное книги, которой нет в коллекции (метод add_book_in_favorites)
def test_add_book_in_favorites_book_not_in_collection_not_added(self):
collector = BooksCollector()
# Пытаемся добавить в избранное книгу, которой нет в коллекции
collector.add_book_in_favorites("Несуществующая книга")

favorites = collector.get_list_of_favorites_books()
# Книга не должна быть добавлена в избранное
assert "Несуществующая книга" not in favorites
assert len(favorites) == 0

# 9. Тест на добавление в избранное (метод add_book_in_favorites)
def test_add_book_in_favorites_adds_book_to_favorites(self):
collector = BooksCollector()
collector.add_new_book("Любимая книга")
Expand All @@ -110,7 +109,7 @@ def test_add_book_in_favorites_adds_book_to_favorites(self):
assert "Любимая книга" in favorites
assert len(favorites) == 1

# 9. Тест на удаление из избранного (метод delete_book_from_favorites)
# 10. Тест на удаление из избранного (метод delete_book_from_favorites)
def test_delete_book_from_favorites_removes_book(self):
collector = BooksCollector()
collector.add_new_book("Книга для удаления")
Expand All @@ -120,27 +119,4 @@ def test_delete_book_from_favorites_removes_book(self):
assert "Книга для удаления" in collector.get_list_of_favorites_books()

# Удаляем
collector.delete_book_from_favorites("Книга для удаления")

# Проверяем, что книга удалена
assert "Книга для удаления" not in collector.get_list_of_favorites_books()
assert len(collector.get_list_of_favorites_books()) == 0

# 10. Тест на получение списка избранного (метод get_list_of_favorites_books)
def test_get_list_of_favorites_books_returns_correct_list(self):
collector = BooksCollector()

# Добавляем несколько книг
collector.add_new_book("Книга 1")
collector.add_new_book("Книга 2")
collector.add_new_book("Книга 3")

# Добавляем в избранное только некоторые
collector.add_book_in_favorites("Книга 1")
collector.add_book_in_favorites("Книга 3")

favorites = collector.get_list_of_favorites_books()
assert len(favorites) == 2
assert "Книга 1" in favorites
assert "Книга 2" not in favorites
assert "Книга 3" in favorites
collector.delete_book_from_favorites("Книга для удаления")