diff --git a/app/controllers/api/v1/admin/measures_controller.rb b/app/controllers/api/v1/admin/measures_controller.rb index d879cca926b..e90e50f999b 100644 --- a/app/controllers/api/v1/admin/measures_controller.rb +++ b/app/controllers/api/v1/admin/measures_controller.rb @@ -18,8 +18,8 @@ class Api::V1::Admin::MeasuresController < Api::BaseController def set_measures @measures = Admin::Metrics::Measure.retrieve( params.require(:keys), - params.require(:start_at), - params.require(:end_at), + params[:start_at], + params[:end_at], params ) end diff --git a/app/lib/admin/metrics/dimension/base_dimension.rb b/app/lib/admin/metrics/dimension/base_dimension.rb index 348d3cfc62f..ae42515bcd9 100644 --- a/app/lib/admin/metrics/dimension/base_dimension.rb +++ b/app/lib/admin/metrics/dimension/base_dimension.rb @@ -18,7 +18,12 @@ class Admin::Metrics::Dimension::BaseDimension @params = params @loaded = false - @start_at = [@start_at, @end_at - 2.years].max if @start_at.present? && @end_at.present? + if @start_at.present? && @end_at.present? + @start_at = [@start_at, @end_at - 2.years].max + else + @start_at = nil + @end_at = nil + end end def key diff --git a/app/lib/admin/metrics/measure/base_measure.rb b/app/lib/admin/metrics/measure/base_measure.rb index 68714f6e2d3..5e7056f1627 100644 --- a/app/lib/admin/metrics/measure/base_measure.rb +++ b/app/lib/admin/metrics/measure/base_measure.rb @@ -12,12 +12,17 @@ class Admin::Metrics::Measure::BaseMeasure alias loaded? loaded def initialize(start_at, end_at, params) - @start_at = start_at.to_datetime - @end_at = end_at.to_datetime + @start_at = start_at&.to_datetime + @end_at = end_at&.to_datetime @params = params @loaded = false - @start_at = [@start_at, @end_at - 2.years].max + if @start_at.present? && @end_at.present? + @start_at = [@start_at, @end_at - 2.years].max + else + @start_at = nil + @end_at = nil + end end def cache_key diff --git a/spec/requests/api/v1/admin/measures_spec.rb b/spec/requests/api/v1/admin/measures_spec.rb index 021c4510fe1..5cfb85762d4 100644 --- a/spec/requests/api/v1/admin/measures_spec.rb +++ b/spec/requests/api/v1/admin/measures_spec.rb @@ -53,6 +53,20 @@ RSpec.describe 'Admin Measures' do expect(response.parsed_body) .to be_an(Array) end + + context 'without start_at and end_at' do + it 'returns http success and status json' do + post '/api/v1/admin/measures', params: params.merge({ start_at: nil, end_at: nil }), headers: headers + + expect(response) + .to have_http_status(200) + expect(response.content_type) + .to start_with('application/json') + + expect(response.parsed_body) + .to be_an(Array) + end + end end end end