Тестирование приложений с помощью RSpec
Документация
- Официальный сайт библиотеки RSpec
- RSpec - краткое руководство
- Официальная страница библиотеки minitest
- Официальная страница библиотеки для оценки степени покрытия тестами simplecov
Задача
Реализуйте классы предметной логики и модульные тесты для решения следующей задачи.
Требуется написать приложение, позволяющее обрабатывать список школьников города. Инициализация данных происходит из файла, включающего следующие поля:
- Фамилия
- Имя
- Отчество
- Дата рождения в формате YYYY-MM-DD
- Пол мужской/женский
- Номер класса с буквой, гарантируется наличие буквы у всех классов (10 б, 10 а, 11 в)
- Наименование учебного заведения с номером (Гимназия 1, Школа 22, Лицей Волжский)
При запуске приложение должно выводить пользователю меню со следующими пунктами:
- Сформировать общий список студентов.
- Сформировать список типов учебных учреждений.
- Сформировать статистику по классам для выбранной школы.
- Сформировать статистику по всем классам выбранной параллели.
- Завершить работу.
Если пользователь выбрал пункт № 1, то приложение должно сформировать новый список студентов. В данном списке нужно вывести всех учеников, упорядоченных по школе, классу и дате рождения.
Если пользователь выбрал пункт № 2, то приложение должно сформировать список типов учебных учреждений. Под типом подразумевается первое слово в названии учебного учреждения.
Если пользователь выбрал пункт № 3, то приложение должно запросить у пользователя тип учебного заведения (Школа, Лицей или Гимназия) и его номер. Если выбранного учебного заведения с введённым номером не существует, вывести соответствующее сообщение и вернуться к меню. Для корректно указанного учебного заведения сформировать следующие данные:
- Для каждой параллели вывести номер класса с наибольшим количеством учеников.
- Для всех параллелей определить наиболее часто используемую букву класса.
Если пользователь выбрал пункт № 4, то приложение должно запросить номер параллели. Для выбранной параллели приложение должно вывести следующую информацию:
- Общее количество учеников среди всех школ для данной параллели.
- Соотношение между девушками и юношами для данной параллели.
- Список месяцев года, упорядоченный по количеству учеников, которые родились в данном месяце. Если в одном месяце родилось одинаковое количество учеников, то сортировать месяцы согласно их порядковому номеру.
Общие требования к реализации приложения:
- Любой запрос на ввод должен сопровождаться текстовым пояснением, какие именно данные и в каком формате ожидаются.
- После формирования требующихся файлов приложение должно сообщить пользователю, сколько файлов оно сформировало или перезаписало, и отобразить меню.
- Приложение должно обрабатывать данные за разумное время и завершать работу только в случае, когда пользователь выбрал пункт меню № 3.