Выполненное задание прикрепите ссылкой на ваши GitHub-проекты в личном кабинете студента на сайте netology.ru.
Важно: ознакомьтесь со ссылками на главной странице репозитория с домашними заданиями.
Если у вас что-то не получилось, оформлите Issue. Шаблон для оформления.
Нужно сделать все задачи в одном репозитории.
- Создайте на вашем компьютере Gradle-проект.
- Инициализируйте в нём пустой Git-репозиторий.
- Добавьте в него готовый файл .gitignore.
- Добавьте в этот же каталог остальные необходимые файлы.
- Сделайте коммиты.
- Создайте публичный репозиторий на GitHub и свяжите свой локальный репозиторий с удалённым.
- Сделайте пуш и удостоверьтесь, что ваш код появился на GitHub.
- Ссылку на ваш проект прикрепите в личном кабинете на сайте netology.ru.
- В этом задании есть необязательные задачи. Их можно не сдавать. Это не повлияет на зачёт.
Давайте разберёмся, как внедрить в сервис с постами возможность комментирования.
Нужно добавить метод createComment
в WallService
:
class WallService {
private var posts = emptyArray<Post>()
private var comments = emptyArray<Comment>()
fun createComment(postId: Int, comment: Comment): Comment {
TODO()
}
}
Функция сначала должна проверить, существует ли в массиве posts
пост с ID равным postId
. Если существует, то добавить комментарий в массив comments
и вернуть только что добавленный комментарий.
Если не существует, выкинуть исключение PostNotFoundException
.
Спроектировать класс для комментариев вам нужно самостоятельно на базе описания типа Comment. Есть сохранённая копия.
Итог: у вас должен быть репозиторий на GitHub, в котором расположен ваш Gradle-проект.
Напишите два теста на созданную функцию:
- Функция отрабатывает правильно, если добавляется комментарий к правильному посту.
- Функция выкидывает исключение, если была попытка добавить комментарий к несуществующему посту.
Вот как протестировать, что какой-то код выкидывает исключение:
@Test(expected = PostNotFoundException::class)
fun shouldThrow() {
// здесь код с вызовом функции, которая должна выкинуть PostNotFoundException
}
При этом assert в конце теста не нужен. Достаточно сделать вызов функции, которая должна выкинуть исключение.
Важно: после ваших обновлений WallService
должна оставаться функциональной, т. е. автотесты должны проходить.
Итог: у вас должен быть репозиторий на GitHub, в котором расположен ваш Gradle-проект. Автотесты также должны храниться в репозитории.
Важно: это не обязательная задача. Её выполнение не влияет на зачёт по ДЗ.
Внедрите функцию для уведомления о негативных комментариях. Есть сохранённая копия.
Что нужно сделать:
- Реализовать саму функцию (для простоты храните эти репорты в отдельном массиве).
- Подумать, в каких случаях и какие нужно выкидывать исключения*.
- Написать автотесты.
Подсказка*
Обратите внимание, что неверным может быть не только ID комментария, но и причина.
Важно: после ваших обновлений WallService
должна оставаться функциональной, т.е. автотесты должны проходить.
Итог: у вас должен быть репозиторий на GitHub, в котором расположен ваш Gradle-проект. Автотесты также должны храниться в репозитории.