fixed bug in handling of weeks returned from MySQL - reportable - Fork of reportable required by WarVox, from hdm/reportable.
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
---
(DIR) commit bea3592f63f6bd00be2b31f57f56ffe4103e55df
(DIR) parent d6274d2beb37b45305b19063f194f48ebe6fb766
(HTM) Author: Marco Otte-Witte <marco.otte-witte@simplabs.com>
Date: Thu, 15 Jan 2009 01:34:20 +0800
fixed bug in handling of weeks returned from MySQL
Signed-off-by: Marco Otte-Witte <marco.otte-witte@simplabs.com>
Diffstat:
M lib/kvlr/reports_as_sparkline/grou… | 5 ++++-
M lib/kvlr/reports_as_sparkline/repo… | 2 +-
M spec/classes/grouping_spec.rb | 8 ++++----
3 files changed, 9 insertions(+), 6 deletions(-)
---
(DIR) diff --git a/lib/kvlr/reports_as_sparkline/grouping.rb b/lib/kvlr/reports_as_sparkline/grouping.rb
@@ -34,7 +34,10 @@ module Kvlr #:nodoc:
else
parts = db_string.split('/').map(&:to_i)
return parts if ActiveRecord::Base.connection.class.to_s == 'ActiveRecord::ConnectionAdapters::MysqlAdapter'
- parts[1] += 1 if @identifier == :week
+ if @identifier == :week && parts[1] > 52
+ parts[0] += 1
+ parts[1] = 1
+ end
parts
end
end
(DIR) diff --git a/lib/kvlr/reports_as_sparkline/reporting_period.rb b/lib/kvlr/reports_as_sparkline/reporting_period.rb
@@ -43,7 +43,7 @@ module Kvlr #:nodoc:
when :day
self.new(grouping, Date.new(parts[0], parts[1], parts[2]))
when :week
- self.new(grouping, Date.commercial(parts[0], parts[1]))
+ self.new(grouping, Date.commercial(parts[0], parts[1], 1))
when :month
self.new(grouping, Date.new(parts[0], parts[1], 1))
end
(DIR) diff --git a/spec/classes/grouping_spec.rb b/spec/classes/grouping_spec.rb
@@ -86,7 +86,7 @@ describe Kvlr::ReportsAsSparkline::Grouping do
ActiveRecord::Base.connection.stub!(:class).and_return(ActiveRecord::ConnectionAdapters::SQLite3Adapter)
end
- for grouping in [[:hour, '2008/12/31/12'], [:day, '2008/12/31'], [:month, '2008/12']] do
+ for grouping in [[:hour, '2008/12/31/12'], [:day, '2008/12/31'], [:month, '2008/12'], [:week, '2008/2']] do
it "should split the string with '/' for grouping :#{grouping[0].to_s}" do
Kvlr::ReportsAsSparkline::Grouping.new(grouping[0]).date_parts_from_db_string(grouping[1]).should == grouping[1].split('/').map(&:to_i)
@@ -94,9 +94,9 @@ describe Kvlr::ReportsAsSparkline::Grouping do
end
- it 'should split the string with "/" and increment the week by 1 for grouping :week' do
- db_string = '2008/2'
- expected = [2008, 3]
+ it 'should split the string with "/", set the week to 1 and increment the year by 1 if the week is above 52' do
+ db_string = '2008/53'
+ expected = [2009, 1]
Kvlr::ReportsAsSparkline::Grouping.new(:week).date_parts_from_db_string(db_string).should == expected
end