Имам приложение, което има потребителски модел и потребителите имат различни роли. Ролите се представят вътрешно като цели индекси, но се представят на потребителя като низове. Имам и помощна функция access_level
(в application_controller.rb
- това разумно място ли е за нея?), която взема или целочисления индекс, или низовото представяне и връща хеш от много информация за ролята (включително низовото представяне и индекса, така че това е удобен начин за конвертиране между тях). В случай, че има значение, access_level
зависи на свой ред от дефинициите на ролите, дефинирани във файл в config\initializers
.
Тъй като интерфейсът, представен на потребителя, зависи от ролята, моите тестове имат много неща като Given I have the role of administrator
и други подобни. Опитвам се да създам потребител с FactoryGirl.create(:user, role: access_level(role).index)
, но не мога да накарам Cucumber да види access_level
.
Повечето от съветите, които откривам чрез гугъл, гласят „не правете това“, защото извикването на функции зад кулисите нарушава принципа за поддържане на Cucumber на ниво потребителски интерфейс, но не виждам начин да тествам това потребителско поведение, без Cucumber да знае как да картографирате имена на роли към индекси. Бих могъл да дублирам access_level
в един от моите файлове за поддръжка на Cucumber, разбира се, но това нарушава DRY. И така, как трябва да структурирам това по такъв начин, че да мога да го тествам чисто в Cucumber?