events_controller_spec.rb 2.5KB

    require 'rails_helper' describe EventsController do before do expect(Event.where(:user_id => users(:bob).id).count).to be > 0 expect(Event.where(:user_id => users(:jane).id).count).to be > 0 end describe "GET index" do it "only returns Events created by Agents of the current user" do sign_in users(:bob) get :index expect(assigns(:events).all? {|i| expect(i.user).to eq(users(:bob)) }).to be_truthy end it "can filter by Agent" do sign_in users(:bob) get :index, params: {:agent_id => agents(:bob_website_agent)} expect(assigns(:events).length).to eq(agents(:bob_website_agent).events.length) expect(assigns(:events).all? {|i| expect(i.agent).to eq(agents(:bob_website_agent)) }).to be_truthy expect { get :index, params: {:agent_id => agents(:jane_website_agent)} }.to raise_error(ActiveRecord::RecordNotFound) end end describe "GET show" do it "only shows Events for the current user" do sign_in users(:bob) get :show, params: {:id => events(:bob_website_agent_event).to_param} expect(assigns(:event)).to eq(events(:bob_website_agent_event)) expect { get :show, params: {:id => events(:jane_website_agent_event).to_param} }.to raise_error(ActiveRecord::RecordNotFound) end end describe "POST reemit" do before do request.env["HTTP_REFERER"] = "/events" sign_in users(:bob) end it "clones and re-emits events" do expect { post :reemit, params: {:id => events(:bob_website_agent_event).to_param} }.to change { Event.count }.by(1) expect(Event.last.payload).to eq(events(:bob_website_agent_event).payload) expect(Event.last.agent).to eq(events(:bob_website_agent_event).agent) expect(Event.last.created_at.to_i).to be_within(2).of(Time.now.to_i) end it "can only re-emit Events for the current user" do expect { post :reemit, params: {:id => events(:jane_website_agent_event).to_param} }.to raise_error(ActiveRecord::RecordNotFound) end end describe "DELETE destroy" do it "only deletes events for the current user" do sign_in users(:bob) expect { delete :destroy, params: {:id => events(:bob_website_agent_event).to_param} }.to change { Event.count }.by(-1) expect { delete :destroy, params: {:id => events(:jane_website_agent_event).to_param} }.to raise_error(ActiveRecord::RecordNotFound) end end end