Исключение валидации Rails с маршрутами - PullRequest
0 голосов
/ 31 августа 2011

Я хочу проверить, что пользователь недействителен, если имя пользователя равно одному из первых блоков маршрутизации.На данный момент я задаю его в rspec следующим образом:

it "is not valid with a excluded username" do
  `bundle exec rake routes`.scan(/\s\/(\w+)/).flatten.compact.uniq.each do |route|
    user.username = route
    user.should_not be_valid
  end
end

Дело в том, что это замедляет мои спецификации, есть ли лучший способ указать, исключен ли каждый первый элемент маршрута?

1 Ответ

3 голосов
/ 31 августа 2011

То, что замедляет ваши спецификации, это bundle exec rake routes, потому что это снова загружает рельсы. Чтобы предотвратить это, вы можете извлечь код, который отображает маршруты из фактического рейка (его можно найти в rails github repo ). С этими модификациями ваша спецификация может выглядеть так:

it "is not valid with a excluded username" do
  Rails.application.routes.routes.map(&:path).join("\n").scan(/\s\/(\w+)/).flatten.compact.uniq.each do |route|
    # blahblah
  end
end
...