From 20fef1f1fa2755f5495e4c8728869175bfce2660 Mon Sep 17 00:00:00 2001 From: baarkerlounger <5101747+baarkerlounger@users.noreply.github.com> Date: Mon, 13 Jun 2022 09:04:45 +0100 Subject: [PATCH] Log whenever a user encounters a validation error message to Logit (#654) --- app/controllers/form_controller.rb | 1 + spec/requests/form_controller_spec.rb | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb index 9fbb6fc63..5117ca6e2 100644 --- a/app/controllers/form_controller.rb +++ b/app/controllers/form_controller.rb @@ -13,6 +13,7 @@ class FormController < ApplicationController else redirect_path = "case_log_#{@page.id}_path" session[:errors] = @case_log.errors.to_json + Rails.logger.info "User triggered validation(s) on: #{@case_log.errors.map(&:attribute).join(', ')}" redirect_to(send(redirect_path, @case_log)) end else diff --git a/spec/requests/form_controller_spec.rb b/spec/requests/form_controller_spec.rb index 33c95a9e9..c5e50beba 100644 --- a/spec/requests/form_controller_spec.rb +++ b/spec/requests/form_controller_spec.rb @@ -174,26 +174,33 @@ RSpec.describe FormController, type: :request do } end - before do - post "/logs/#{case_log.id}/form", params: - end - context "with invalid answers" do let(:page) { Capybara::Node::Simple.new(response.body) } let(:answer) { 2000 } let(:valid_answer) { 20 } + before do + allow(Rails.logger).to receive(:info) + end + it "re-renders the same page with errors if validation fails" do + post "/logs/#{case_log.id}/form", params: params expect(response).to redirect_to("/logs/#{case_log.id}/#{page_id.dasherize}") follow_redirect! expect(page).to have_content("There is a problem") end it "resets errors when fixed" do + post "/logs/#{case_log.id}/form", params: params post "/logs/#{case_log.id}/form", params: valid_params get "/logs/#{case_log.id}/#{page_id.dasherize}" expect(page).not_to have_content("There is a problem") end + + it "logs that validation was triggered" do + expect(Rails.logger).to receive(:info).with("User triggered validation(s) on: age1").once + post "/logs/#{case_log.id}/form", params: params + end end context "with valid answers" do @@ -209,6 +216,10 @@ RSpec.describe FormController, type: :request do } end + before do + post "/logs/#{case_log.id}/form", params: + end + it "re-renders the same page with errors if validation fails" do expect(response).to have_http_status(:redirect) end