diff --git a/tests.py b/tests.py index 2d32bd5..b8a1fd9 100644 --- a/tests.py +++ b/tests.py @@ -35,7 +35,21 @@ 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" @@ -43,14 +57,14 @@ def test_add_new_book_duplicate_not_added(self): 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("Мастер и Маргарита") @@ -58,32 +72,6 @@ def test_get_book_genre_returns_correct_genre(self): 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() @@ -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("Любимая книга") @@ -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("Книга для удаления") @@ -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 \ No newline at end of file + collector.delete_book_from_favorites("Книга для удаления") \ No newline at end of file