Юнит-тесты user_active_sessions

Issue #393 new
Oleg Sychev repo owner created an issue

Должны проверять работу при наличии и отсутствии активных сессий, наличии только подходящих, смеси подходящих и неподходящих и всех неподходящих сессий, а также приоритеты выдачи сообщений об ошибке при нескольких неподходящих сессиях в следующем порядке: а) нет ошибки (если хоть одна сессия подошла - error пустое) б) lessontypeerror (если нет подходящих, но хоть одна дала lessontypeerror то должен быть он - даже если она была в середине, а до и после нее были другие) в) iperror (если нет подходящих и lessontypeerror ) г) grouperror - только если все сессии дают grouperror и подходящих нет

При этом в рамках одной неподходящей сессии приоритеты строго противоположны - если не та группа сессия считается grouperror , iperror только если группа подходит, lessontypeerror только если группа и IP подходят.

Если это непонятно, подойдите в универе - объясню...

Comments (15)

  1. Анастасия Поцелуйко

    Я рассматривала типы ситуаций, в тестах я буду переборы делать со всеми типами. То есть, ошибки внутри одной сессии (от одной до трех), ошибки внутри двух сессий (от одной до трех), их комбинации и приоритеты.

  2. Oleg Sychev reporter

    Подход правильный с точки зрения системности - но и только с ней. а) помните что приоритеты ошибок внутри сессии прямо противоположны приоритетам между сессиями. Т.е. если в одной сессии неправильна и группа и тип занятия, то надо говорить про группу (ибо если группа не этого студента, то кого волнует что там за занятие??); с другой стороны если в одной сессии неправильна группа, а в другой сессии неправилен только тип занятия - тогда надо выдавать тип занятия, потому что это наиболее подходящая данному студенту сессия. Тип занятия собственно потому и настолько приоритетен между сессиями, что в рамках одной его достичь очень трудно. Судя по вашему файлу вы эту разницу не поняли. б) если присутствуют подходящие сессии, то на выходе error должен быть пустым - вы же сами писали этот код, посмотрите наше обсуждение в 392. А у вас на выходе сообщение... в) не вижу вариантов типа "сессий нет вообще" и "все сессии правильные"... Притом что вы в курсе что была ошибка именно в случае "сессий нет вообще" последний раз.

    Пожалуйста, подумайте внимательно. Такое впечатление что логика данного вопроса пока от вас ускользает....

  3. Анастасия Поцелуйко

    Исправила сообщения об ошибках в пределах одной сессии. На отсутствие активных сессий тоже добавила тест и на несколько безошибочных.

  4. Oleg Sychev reporter

    1) Вы называйте файлы хоть по разному если старый удалить нельзя, номер версии например 2) Так и не вижу в вашем репозитории своих коммитов....

  5. Oleg Sychev reporter

    По самим тестам - до 16-го нормально, только 16-й странный. Там еще бы добавить iperror/lessontyperror и сделать копии тестов с обратным порядком сессий.

    17-й (а также 18-й и 19-й) противоречит 4 и 5-му; по 4-му и 5-му внутри обоих сессий выиграют grouperror и между сессиями уже будет сравниваться именно он. Сравнение ведь происходит последовательно, сначала внутри каждой сессии - а потом уже между сессиями...

  6. Oleg Sychev reporter

    Вы ничего не путаете? По вашему коммиту эти тесты тестируют вывод таблицы логов, а иссью посвящено тестированию функции user_active_sessions, посмотрите свой же приложенный файл. Ее тестов я в коммите не вижу...

  7. Анастасия Поцелуйко

    У меня возник вопрос по ходу создания тестов.

    Есть такая ситуация - две активных сессии для студента с ошибками:

    первая сессия - ошибка ip-адреса и группы

    вторая сессия - ошибка ip-адреса и типа занятия

    В моих описанных тестовых ситуациях должна вернуться ошибка lessontypeerror, но функция возвращает grouperror. Верно ли это с точки зрения корректности отображаемых сообщений для пользователя?

  8. Oleg Sychev reporter

    Гм. По логике у меня выходит iperror - сообщение типа "ваша группа занимается в другом месте", тип занятий в этом случае уже вторичен. В первой сессии должно получится grouperror, во второй iperror и по логике сравнений между сессиями iperror выигрывает.

  9. Анастасия Поцелуйко

    А если в данной ситуации во второй сессии вместо ошибки типа занятий будет ошибка в группе, то в общем получится, что будет ошибка в группе, я правильно поняла?

  10. Oleg Sychev reporter

    Да, правильно. Тогда первая и вторая сессии идентичны получаться, а группа выигрывает у адреса в сессии - если у группы занятия нет, то не все ли равно,где другие группы занимаются?

  11. Анастасия Поцелуйко

    Я вытолкнула в репозиторий файл с тестами на проверку.

  12. Log in to comment