2

我有这种设置的应用程序:Right Rails如何编写RPSEC来测试URL路由?

User (id) 
Room (id, private (boolean) 
RoomMember(user_id, room_id, banned (boolean) 

这些都是使用情况下,我想要写一个测试:

  1. 如果房间没有私人用户可以加入并重定向到达正确的网址
  2. 如果房间是私有的,用户重定向到输入密码页面
  3. 如果用户已被取缔,他们重定向到“/”

什么是正确的rails rspec方式来测试这些用户故事?

感谢

回答

1

下应该可以(与你的修改):

describe "User Permissions" do 

    it "should allow users to join public rooms" do 
    user = User.new 
    room = Room.new(private: false) 

    get "[your_action]" 
    response.should render_template("path/to/room/show/template") 
    end 

    it "should honor privacy" do 
    user = User.new 
    room = Room.new(private: true) 

    get "[your_action]" 
    response.should redirect_to(action: '[enter_password_action]') 
    end 

    it "shouldn't allow banned users to enter rooms" do 
    user = User.new(banned: true) 
    room = Room.new 

    get "[your_action]" 
    response.should redirect_to("/") 
    end 

end 

更多关于写Rspec的Rails的控制器测试可以发现here

+0

谢谢,所以这被认为是一个控制器测试,而不是路由测试? – AnApprentice

+0

另外,这会把canCan考虑为ability.rb权限吗? – AnApprentice

+0

此外,考虑到用户权限模型不存在应该存在哪个文件? – AnApprentice