diff --git a/tests.py b/tests.py index 383385e..dc76051 100644 --- a/tests.py +++ b/tests.py @@ -1,5 +1,6 @@ from main import BooksCollector +import pytest # класс TestBooksCollector объединяет набор тестов, которыми мы покрываем наше приложение BooksCollector # обязательно указывать префикс Test class TestBooksCollector: @@ -21,4 +22,99 @@ def test_add_new_book_add_two_books(self): assert len(collector.get_books_rating()) == 2 # напиши свои тесты ниже - # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() \ No newline at end of file + # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() + + @pytest.mark.parametrize('name', ['А', 'А' *40]) + def test_add_new_book_valid_len_name_added(self, name): + collector = BooksCollector() + collector.add_new_book(name) + assert name in collector.get_books_genre() + + @pytest.mark.parametrize('name', ['', 'А' *41]) + def test_add_new_book_invalid_len_name_not_added(self, name): + collector = BooksCollector() + collector.add_new_book(name) + assert name not in collector.get_books_genre() + + def test_add_new_book_re_add_same_book_not_added(self): + collector = BooksCollector() + name = 'Астрал' + collector.add_new_book(name) + collector.add_new_book(name) + assert len(collector.get_books_genre()) == 1 + + def test_set_book_genre_valid_genre_set(self): + collector = BooksCollector() + collector.add_new_book('Астрал') + collector.set_book_genre('Астрал', 'Ужасы') + assert collector.get_book_genre('Астрал') == 'Ужасы' + + def test_set_book_genre_invalid_genre_not_set(self): + collector = BooksCollector() + collector.add_new_book('Астрал') + collector.set_book_genre('Астрал', 'Мультик') + assert collector.get_book_genre('Астрал') == '' + + def test_get_book_genre_return_correct_genre(self): + collector = BooksCollector() + name = 'Астрал' + genre = 'Ужасы' + collector.add_new_book(name) + collector.set_book_genre(genre) + assert collector.get_book_genre(name) == genre + + def test_get_books_with_specific_genre_return_list_of_books(self): + collector = BooksCollector() + collector.add_new_book('Астрал') + collector.set_book_genre('Астрал', 'Ужасы') + collector.add_new_book('Интерстеллар') + collector.set_book_genre('Интерстеллар', 'Фантастика') + collector.add_new_book('Назад в будущее') + collector.set_book_genre('Назад в будущее', 'Фантастика') + assert collector.get_books_with_specific_genre('Фантастика') == ['Интерстеллар', 'Назад в будущее'] + + def test_get_books_genre_return_all_books_with_genre(self): + collector = BooksCollector() + collector.add_new_book('Астрал') + collector.set_book_genre('Астрал', 'Ужасы') + collector.add_new_book('Интерстеллар') + collector.set_book_genre('Интерстеллар', 'Фантастика') + all = { + 'Астрал': 'Ужасы', + 'Интерстеллар': 'Фантастика' + } + assert collector.get_book_genre() == all + + def test_get_books_for_children_returns_only_child_genres(self): + collector = BooksCollector() + collector.add_new_book('Астрал') + collector.set_book_genre('Ужасы') + collector.add_new_book('Назад в будущее') + collector.set_book_genre('Фантастика') + assert collector.get_books_for_children() == ['Назад в будущее'] + + def test_add_book_in_favorites_successful(self): + collector = BooksCollector() + collector.add_new_book('Астрал') + collector.add_book_in_favorites('Астрал') + assert 'Астрал' in collector.favorites + + def test_add_book_in_favorites_not_added_to_collection_not_added(self): + collector = BooksCollector() + collector.add_book_in_favorites('Назад в будущее') + assert len(collector.get_list_of_favorites_books()) == 0 + + def test_delete_book_from_favorites_successful(self): + collector = BooksCollector() + collector.add_new_book('Астрал') + collector.add_book_in_favorites('Астрал') + collector.delete_book_from_favorites('Астрал') + assert 'Астрал' not in collector.favorites + + def test_get_list_of_favorites_books_return_all_list_favorites(self): + collector = BooksCollector() + collector.add_new_book('Интерстеллар') + collector.add_new_book('Астрал') + collector.add_book_in_favorites('Интерстеллар') + collector.add_book_in_favorites('Астрал') + assert collector.get_list_of_favorites_books() == ['Интерстеллар', 'Астрал']