Я пытаюсь понять, почему это не работает.Rails: Заводы и ассоциации в функциональных тестах
Предположим, вы три модели, Пользователь, Foo и Bar. Чтобы создать бар, пользователь должен сначала создать и проверить объект foo.
Class User #snip!
has_many :foos
has_many :bars
Class Foo #snip!
belongs_to :user
has_many :bars
Class Bar #snip!
belongs_to :user
belongs_to :foo
Я пытаюсь получить функциональный тест работает, где, если пользователь пытается сделать новую панель, не имея действительный Foo, они попадают на «новые» действия для Foo.
У меня не было проблем с сценарием перенаправления. Однако, когда я пытаюсь настроить пользователя с допустимым объектом Foo и попытаться получить «новое» действие для панели, он по-прежнему перенаправляется на «новое» действие контроллера Foo. Он по-прежнему не признает, что у пользователя есть Foo.
Вот мой контроллер:
class BarsControllerTest < ActionController::TestCase
setup :activate_authlogic
def setup
@request.env['HTTPS'] = nil
@user = Factory.build(:user)
@foo = Factory.build(:foo, :user => @user)
end
test "should get new when user has a valid foo" do
@request.env['HTTPS'] = 'on'
UserSession.create(@user)
get :new
assert_response :success
end
Это функция редирект у меня в контроллер приложения, который называется в моем контроллере бар:
def foo_required
if current_user && @current_user.foos.valid.empty? && @current_user.foos.empty?
flash[:notice] = "You must have a verified foo in order to create a Bar!"
redirect_to new_foo_path
elsif current_user && @current_user.foos.valid.empty?
flash[:notice] = "You must verify your foos in order to create a Bar!"
redirect_to foos_path
end
end
Вот Foo Factory:
Factory.define :foo do |f|
#attributes
f.valid true
f.association :user
end
Вместо этого я перенаправляюсь на «https://test.host:80/foos/new» Контроллер не является cknowledge, что у пользователя есть Foo ...
Сессия действительна, так что это похоже на заводскую проблему, но я не уверен, что это такое.
Конечно, должно быть что-то просто! * хиты головы * Большое спасибо jdl, вы спасли меня в день притягивания волос! –
Добро пожаловать. – jdl