validate required attributes in ReportCache - reportable - Fork of reportable required by WarVox, from hdm/reportable.
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
---
(DIR) commit 9a0e5ad1403a13890c482901cfbf6dc9c8ee1e09
(DIR) parent b026d0c5c59126e57f28e5405c04c9505671a955
(HTM) Author: Marco Otte-Witte <marco.otte-witte@simplabs.com>
Date: Wed, 24 Mar 2010 21:58:17 +0100
validate required attributes in ReportCache
Diffstat:
M lib/saulabs/reportable/report_cach… | 7 +++++++
M spec/classes/report_cache_spec.rb | 85 +++++++++++++++++++++++++++++++
2 files changed, 92 insertions(+), 0 deletions(-)
---
(DIR) diff --git a/lib/saulabs/reportable/report_cache.rb b/lib/saulabs/reportable/report_cache.rb
@@ -9,6 +9,13 @@ module Saulabs
set_table_name :reportable_cache
+ validates_presence_of :model_name
+ validates_presence_of :report_name
+ validates_presence_of :grouping
+ validates_presence_of :aggregation
+ validates_presence_of :value
+ validates_presence_of :reporting_period
+
self.skip_time_zone_conversion_for_attributes = [:reporting_period]
# Clears the cache for the specified +klass+ and +report+
(DIR) diff --git a/spec/classes/report_cache_spec.rb b/spec/classes/report_cache_spec.rb
@@ -6,6 +6,91 @@ describe Saulabs::Reportable::ReportCache do
@report = Saulabs::Reportable::Report.new(User, :registrations, :limit => 10)
end
+ describe 'validations' do
+
+ before do
+ @report_cache = Saulabs::Reportable::ReportCache.new(
+ :model_name => User.name,
+ :report_name => 'registrations',
+ :grouping => 'date',
+ :aggregation => 'count',
+ :value => 1.0,
+ :reporting_period => '2070/03/23'
+ )
+ end
+
+ it 'should succeed when all required attributes are set' do
+ @report_cache.should be_valid
+ end
+
+ it 'should not succeed when no model_name is set' do
+ @report_cache.model_name = nil
+
+ @report_cache.should_not be_valid
+ end
+
+ it 'should not succeed when a blank model_name is set' do
+ @report_cache.model_name = ''
+
+ @report_cache.should_not be_valid
+ end
+
+ it 'should not succeed when no report_name is set' do
+ @report_cache.report_name = nil
+
+ @report_cache.should_not be_valid
+ end
+
+ it 'should not succeed when a blank report_name is set' do
+ @report_cache.report_name = ''
+
+ @report_cache.should_not be_valid
+ end
+
+ it 'should not succeed when no grouping is set' do
+ @report_cache.grouping = nil
+
+ @report_cache.should_not be_valid
+ end
+
+ it 'should not succeed when a blank grouping is set' do
+ @report_cache.grouping = ''
+
+ @report_cache.should_not be_valid
+ end
+
+ it 'should not succeed when no aggregation is set' do
+ @report_cache.aggregation = nil
+
+ @report_cache.should_not be_valid
+ end
+
+ it 'should not succeed when a blank aggregation is set' do
+ @report_cache.aggregation = ''
+
+ @report_cache.should_not be_valid
+ end
+
+ it 'should not succeed when no value is set' do
+ @report_cache.value = nil
+
+ @report_cache.should_not be_valid
+ end
+
+ it 'should not succeed when no reporting_period is set' do
+ @report_cache.reporting_period = nil
+
+ @report_cache.should_not be_valid
+ end
+
+ it 'should not succeed when a blank reporting_period is set' do
+ @report_cache.reporting_period = ''
+
+ @report_cache.should_not be_valid
+ end
+
+ end
+
describe '.clear_for' do
it 'should delete all entries in the cache for the klass and report name' do