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