я лично, предпочитаю фабрики иметь простыми, а сложную подготовку сьютов делать через шареные контексты, либо хэлперметоды в локальных контекстах делать, которые используют фабрики
Шареные контексты обычно лучше с семантической точки зрения, они определяют окружение их сложнее притащить туда, где их не должно быть. У fabricate(:something, :with_something) гораздо меньше ответственности.
Это вообще стандартная история, когда разработчик пишет новый спек и ищет по существующим, как же ему сгенерить этот :something, в итоге находит вызов фабрики с 10-ю прицепами копипастит и оставляет, т.к. тест проходит и ладно.
В результате раздутые фабрики с трейтами на разные случаи жизни, которые часто используются не по назначению и избыточным образом и спеки поторые выполняются сутки:)