require 'rails_helper' describe NotificationsController do login_member def valid_attributes { "recipient_id" => subject.current_member.id, "sender_id" => FactoryBot.create(:member).id, "subject" => 'test' } end describe "GET index" do it "assigns all notifications as @notifications" do notification = FactoryBot.create(:notification, recipient_id: subject.current_member.id) get :index, params: {} assigns(:notifications).should eq([notification]) end end describe "GET show" do it "assigns the requested notification as @notification" do notification = FactoryBot.create(:notification, recipient_id: subject.current_member.id) get :show, params: { id: notification.to_param } assigns(:notification).should eq(notification) end it "assigns the reply link for a post comment" do notification = FactoryBot.create(:notification, recipient_id: subject.current_member.id) get :show, params: { id: notification.to_param } assigns(:reply_link).should_not be_nil assigns(:reply_link).should eq new_comment_url( post_id: notification.post.id ) end it "marks notifications as read" do notification = FactoryBot.create(:notification, recipient_id: subject.current_member.id) get :show, params: { id: notification.to_param } # we need to fetch it from the db again, can't test against the old one n = Notification.find(notification.id) n.read.should eq true end end describe "GET reply" do it "marks notifications as read" do notification = FactoryBot.create(:notification, recipient_id: subject.current_member.id) get :reply, params: { notification_id: notification.to_param } # we need to fetch it from the db again, can't test against the old one n = Notification.find(notification.id) n.read.should eq true end end describe "GET new" do it "assigns a recipient" do @recipient = FactoryBot.create(:member) get :new, params: { recipient_id: @recipient.id } expect(assigns(:recipient)).to be_an_instance_of(Member) end end describe "POST create" do describe "with valid params" do it "redirects to the recipient's profile" do @recipient = FactoryBot.create(:member) post :create, params: { notification: { recipient_id: @recipient.id, subject: 'foo' } } response.should redirect_to(notifications_path) end end end end