From 2c9f1a29175694af84f0a54444cf280b5857a851 Mon Sep 17 00:00:00 2001 From: Maximilian Grundke Date: Wed, 15 Aug 2018 14:40:59 +0200 Subject: [PATCH] Add tests for events controller --- app/controllers/events_controller.rb | 4 +-- spec/controllers/events_controller_spec.rb | 33 ++++++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 spec/controllers/events_controller_spec.rb diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index 38e57cd5..3a3b02a4 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -20,8 +20,8 @@ class EventsController < ApplicationController end def event_params - params[:event].permit(:category, :data, :exercise_id, :file_id) - .merge(user_id: current_user&.id, user_type: current_user&.class.name) + params[:event]&.permit(:category, :data, :exercise_id, :file_id) + &.merge(user_id: current_user&.id, user_type: current_user&.class.name) end private :event_params diff --git a/spec/controllers/events_controller_spec.rb b/spec/controllers/events_controller_spec.rb new file mode 100644 index 00000000..bd9e11a8 --- /dev/null +++ b/spec/controllers/events_controller_spec.rb @@ -0,0 +1,33 @@ +require 'rails_helper' + +describe EventsController do + let(:user) { FactoryBot.create(:admin) } + let(:exercise) {FactoryBot.create(:fibonacci)} + before(:each) { allow(controller).to receive(:current_user).and_return(user) } + + describe 'POST #create' do + context 'with a valid event' do + let(:request) { proc { post :create, event: {category: 'foo', data: 'bar', exercise_id: exercise.id, file_id: exercise.files[0].id} } } + before(:each) { request.call } + + expect_assigns(event: Event) + + it 'creates the Event' do + expect { request.call }.to change(Event, :count).by(1) + end + + expect_status(201) + end + + context 'with an invalid event' do + before(:each) { post :create, event: {exercise_id: 847482} } + expect_assigns(event: Event) + expect_status(422) + end + + context 'with no event' do + before(:each) { post :create } + expect_status(422) + end + end +end