From 0090c221a4ba3bd06fbdbe10f1dd542286abd486 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Tue, 25 Oct 2016 20:52:00 -0700 Subject: [PATCH] Raise ArgumentError when last option is not supported --- CHANGELOG.md | 1 + lib/groupdate/magic.rb | 4 +++- test/test_helper.rb | 11 +++++++++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cd6fdbd..950950f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ - Fixed `current: false` - Fixed `last` with `group_by_quarter` +- Raise `ArgumentError` when `last` option is not supported ## 3.1.0 diff --git a/lib/groupdate/magic.rb b/lib/groupdate/magic.rb index 3dbbabe..27d6542 100644 --- a/lib/groupdate/magic.rb +++ b/lib/groupdate/magic.rb @@ -184,8 +184,10 @@ module Groupdate elsif !time_range && options[:last] if field == :quarter step = 3.months + elsif 1.respond_to?(field) + step = 1.send(field) else - step = 1.send(field) if 1.respond_to?(field) + raise ArgumentError, "Cannot use last option with #{field}" end if step now = Time.now diff --git a/test/test_helper.rb b/test/test_helper.rb index cc0e17a..bc45c5b 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -225,6 +225,11 @@ module TestDatabase assert_equal expected, User.group_by_year(:created_at, last: 3).count end + def test_last_hour_of_day + error = assert_raises(ArgumentError) { User.group_by_hour_of_day(:created_at, last: 3).count } + assert_equal "Cannot use last option with hour_of_day", error.message + end + def test_current create_user "#{this_year - 3}-01-01" create_user "#{this_year - 1}-01-01" @@ -272,11 +277,13 @@ module TestDatabase # permit def test_permit - assert_raises(ArgumentError, "Unpermitted period") { User.group_by_period(:day, :created_at, permit: %w(week)).count } + error = assert_raises(ArgumentError) { User.group_by_period(:day, :created_at, permit: %w(week)).count } + assert_equal "Unpermitted period", error.message end def test_permit_bad_period - assert_raises(ArgumentError, "Unpermitted period") { User.group_by_period(:bad_period, :created_at).count } + error = assert_raises(ArgumentError) { User.group_by_period(:bad_period, :created_at).count } + assert_equal "Unpermitted period", error.message end def test_permit_symbol_symbols -- libgit2 0.21.0