Skip to content

Commit

Permalink
Merge branch 'feature/APPEALS-22218' into kshiflett/APPEALS-26109-test
Browse files Browse the repository at this point in the history
  • Loading branch information
mikefinneran committed Aug 25, 2023
2 parents 1c18106 + d0bbb67 commit d0f57ee
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 44 deletions.
13 changes: 12 additions & 1 deletion app/controllers/metrics/v2/logs_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,21 @@ class Metrics::V2::LogsController < ApplicationController

def create
metric = Metric.create_metric_from_rest(self, allowed_params, current_user)

failed_metric_info = metric&.errors.inspect || allowed_params[:message]
Rails.logger.info("Failed to create metric #{failed_metric_info}") unless metric&.valid?

if (metric.metric_type === 'error')
error_info = {
name: metric.metric_name,
class: metric.metric_class,
attrs: metric.metric_attributes,
created_at: metric.created_at,
uuid: metric.uuid,
}
error = StandardError.new(error_info)
Raven.capture_exception(error)
end

head :ok
end

Expand Down
48 changes: 26 additions & 22 deletions spec/controllers/metrics/v2/logs_controller_spec.rb
Original file line number Diff line number Diff line change
@@ -1,40 +1,44 @@
# frozen_string_literal: true

describe Metrics::V2::LogsController, type: :controller do

let(:request_params_javascript) do
let(:current_user) { create(:user) }
let(:request_params) do
{
metric: {
uuid: SecureRandom.uuid,
method: "123456789",
uuid: "PAT123456^CFL200^A",
url: '',
message: '',
isError: false,
isPerformance: false,
source: 'javascript'
}
name: 'log',
group: 'service',
message: 'This is a test',
type: 'performance',
product: 'reader',
}
}
end

let(:request_params_min) do
{
metric: {
message: 'min'
}
}
before do
@raven_called = false
end

before { User.authenticate!(user: current_user) }

context "with good request" do
it "returns 200 for javascript source" do
expect(Metric).to receive(:create_javascript_metric).and_return(nil)
post :create, params: request_params_javascript
it "returns 200 for request params" do
post :create, params: request_params
expect(@raven_called).to eq(false)
expect(response.status).to eq(200)
end
end

it "returns 200 for min params" do
post :create, params: request_params_min
expect(response.status).to eq(200)
context "With error type record to sentry" do
it "Records to Sentry" do
capture_raven_log
request_params[:metric][:type] = 'error'
post :create, params: request_params
expect(@raven_called).to eq(true)
end
end

def capture_raven_log
allow(Raven).to receive(:capture_exception) { @raven_called = true }
end
end
42 changes: 21 additions & 21 deletions spec/models/metric_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,46 +3,46 @@
describe Metric do
let(:user) { create(:user) }

describe "create_javascript_metric" do
before { User.authenticate!(user: user) }

describe "create_metric" do
let!(:params) do
{
uuid: SecureRandom.uuid,
method: "123456789",
uuid: "PAT123456^CFL200^A",
url: '',
message: '',
isError: false,
isPerformance: false,
source: 'javascript'
name: 'log',
group: 'service',
message: 'This is a test',
type: 'performance',
product: 'reader',
}
end

it "creates a javascript metric for log" do
options = {is_error: false, performance: false}
metric = Metric.create_javascript_metric(params, user, options)
it "creates a javascript metric for performance" do
metric = Metric.create_metric(self, params, user)

expect(metric.valid?).to be true
expect(metric.metric_type).to eq(Metric::METRIC_TYPES[:log])
expect(metric.metric_type).to eq(Metric::METRIC_TYPES[:performance])
end

it "creates a javascript metric for error" do
options = {is_error: true, performance: false}
metric = Metric.create_javascript_metric(params, user, options)
it "creates a javascript metric for log" do
params[:type] = 'log'
metric = Metric.create_metric(self, params, user)

expect(metric.valid?).to be true
expect(metric.metric_type).to eq(Metric::METRIC_TYPES[:error])
expect(metric.metric_type).to eq(Metric::METRIC_TYPES[:log])
end

it "creates a javascript metric for performance" do
options = {is_error: false, performance: true}
metric = Metric.create_javascript_metric(params, user, options)
it "creates a javascript metric for error" do
params[:type] = 'error'
metric = Metric.create_metric(self, params, user)

expect(metric.valid?).to be true
expect(metric.metric_type).to eq(Metric::METRIC_TYPES[:performance])
expect(metric.metric_type).to eq(Metric::METRIC_TYPES[:error])
end

it "creates a javascript metric with invalid sent_to" do
options = {is_error: false, performance: false}
metric = Metric.create_javascript_metric(params.merge({sent_to: 'fake'}), user, options)
metric = Metric.create_metric(self, params.merge({sent_to: 'fake'}), user)

expect(metric.valid?).to be false
end
Expand Down

0 comments on commit d0f57ee

Please sign in to comment.