Commit 271220c3179a7b2578695247db37c24cc2329249

Authored by Andrew Kane
1 parent d5e8b92d

Much better tests

Gemfile
... ... @@ -2,5 +2,3 @@ source 'https://rubygems.org'
2 2  
3 3 # Specify your gem's dependencies in groupdate.gemspec
4 4 gemspec
5   -
6   -gem "activerecord", github: "rails/rails"
... ...
lib/groupdate.rb
1 1 require "groupdate/version"
  2 +require "active_record"
2 3  
3 4 module Groupdate
4 5 extend ActiveSupport::Concern
... ...
test/groupdate_test.rb
  1 +require "bundler/setup"
  2 +Bundler.require(:default)
1 3 require "minitest/autorun"
2 4 require "minitest/pride"
3   -require "active_record"
4   -require "groupdate"
5 5 require "logger"
6 6  
7 7 # for debugging
... ... @@ -37,7 +37,10 @@ describe Groupdate do
37 37 ].each{|u| User.create!(u) }
38 38  
39 39 assert_equal(
40   - {Time.parse("2013-04-01 00:00:00 UTC") => 1, Time.parse("2013-04-02 00:00:00 UTC") => 1},
  40 + {
  41 + time_key("2013-04-01 00:00:00 UTC") => 1,
  42 + time_key("2013-04-02 00:00:00 UTC") => 1
  43 + },
41 44 User.where("score > 1").group_by_day(:created_at).count
42 45 )
43 46 end
... ... @@ -87,19 +90,19 @@ describe Groupdate do
87 90 end
88 91  
89 92 it "group_by_hour_of_day" do
90   - assert_group_number :hour_of_day, "2013-01-01 11:00:00 UTC", 11, adapter
  93 + assert_group_number :hour_of_day, "2013-01-01 11:00:00 UTC", 11
91 94 end
92 95  
93 96 it "group_by_hour_of_day with time zone" do
94   - assert_group_number_tz :hour_of_day, "2013-01-01 11:00:00 UTC", 3, adapter
  97 + assert_group_number_tz :hour_of_day, "2013-01-01 11:00:00 UTC", 3
95 98 end
96 99  
97 100 it "group_by_day_of_week" do
98   - assert_group_number :day_of_week, "2013-03-03 00:00:00 UTC", 0, adapter
  101 + assert_group_number :day_of_week, "2013-03-03 00:00:00 UTC", 0
99 102 end
100 103  
101 104 it "group_by_day_of_week with time zone" do
102   - assert_group_number_tz :day_of_week, "2013-03-03 00:00:00 UTC", 6, adapter
  105 + assert_group_number_tz :day_of_week, "2013-03-03 00:00:00 UTC", 6
103 106 end
104 107 end
105 108 end
... ... @@ -108,21 +111,28 @@ describe Groupdate do
108 111  
109 112 def assert_group(method, created_at, key, time_zone = nil)
110 113 create_user created_at
111   - assert_equal({Time.parse(key) => 1}, User.send(:"group_by_#{method}", :created_at, time_zone).count)
  114 + assert_equal({time_key(key) => 1}, User.send(:"group_by_#{method}", :created_at, time_zone).count)
112 115 end
113 116  
114 117 def assert_group_tz(method, created_at, key)
115 118 assert_group method, created_at, key, "Pacific Time (US & Canada)"
116 119 end
117 120  
118   - def assert_group_number(method, created_at, key, adapter, time_zone = nil)
  121 + def assert_group_number(method, created_at, key, time_zone = nil)
119 122 create_user created_at
120   - key = adapter == "postgresql" ? key.to_f : key
121   - assert_equal({key => 1}, User.send(:"group_by_#{method}", :created_at, time_zone).count)
  123 + assert_equal({number_key(key) => 1}, User.send(:"group_by_#{method}", :created_at, time_zone).count)
122 124 end
123 125  
124   - def assert_group_number_tz(method, created_at, key, adapter)
125   - assert_group_number method, created_at, key, adapter, "Pacific Time (US & Canada)"
  126 + def assert_group_number_tz(method, created_at, key)
  127 + assert_group_number method, created_at, key, "Pacific Time (US & Canada)"
  128 + end
  129 +
  130 + def time_key(key)
  131 + User.connection.adapter_name == "PostgreSQL" && ActiveRecord::VERSION::MAJOR == 3 ? Time.parse(key).strftime("%Y-%m-%d %H:%M:%S+00") : Time.parse(key)
  132 + end
  133 +
  134 + def number_key(key)
  135 + User.connection.adapter_name == "PostgreSQL" ? (ActiveRecord::VERSION::MAJOR == 3 ? key.to_s : key.to_f) : key
126 136 end
127 137  
128 138 def create_user(created_at)
... ...