Commit ca5a01d8e9969565da5036a73c3e912fecc66f40
1 parent
dbd9727a
Exists in
date
Return dates for day, week, month, and year
Showing
3 changed files
with
49 additions
and
33 deletions
Show diff stats
lib/groupdate/magic.rb
test/enumerable_test.rb
... | ... | @@ -7,9 +7,9 @@ class TestEnumerable < Minitest::Test |
7 | 7 | user_a = User.new(created_at: utc.parse("2014-01-21")) |
8 | 8 | user_b = User.new(created_at: utc.parse("2014-03-14")) |
9 | 9 | expected = { |
10 | - utc.parse("2014-01-01") => [user_a], | |
11 | - utc.parse("2014-02-01") => [], | |
12 | - utc.parse("2014-03-01") => [user_b] | |
10 | + Date.parse("2014-01-01") => [user_a], | |
11 | + Date.parse("2014-02-01") => [], | |
12 | + Date.parse("2014-03-01") => [user_b] | |
13 | 13 | } |
14 | 14 | assert_equal expected, [user_a, user_b].group_by_month(&:created_at) |
15 | 15 | end | ... | ... |
test/test_helper.rb
... | ... | @@ -512,7 +512,7 @@ module TestGroupdate |
512 | 512 | def test_zeros_excludes_end |
513 | 513 | create_user "2013-05-02 00:00:00 UTC" |
514 | 514 | expected = { |
515 | - utc.parse("2013-05-01 00:00:00 UTC") => 0 | |
515 | + Date.parse("2013-05-01") => 0 | |
516 | 516 | } |
517 | 517 | assert_equal expected, call_method(:day, :created_at, range: Time.parse("2013-05-01 00:00:00 UTC")...Time.parse("2013-05-02 00:00:00 UTC")) |
518 | 518 | end |
... | ... | @@ -520,7 +520,7 @@ module TestGroupdate |
520 | 520 | def test_zeros_previous_scope |
521 | 521 | create_user "2013-05-01 00:00:00 UTC" |
522 | 522 | expected = { |
523 | - utc.parse("2013-05-01 00:00:00 UTC") => 0 | |
523 | + Date.parse("2013-05-01") => 0 | |
524 | 524 | } |
525 | 525 | assert_equal expected, User.where("id = 0").group_by_day(:created_at, range: Time.parse("2013-05-01 00:00:00 UTC")..Time.parse("2013-05-01 23:59:59 UTC")).count |
526 | 526 | end |
... | ... | @@ -528,7 +528,7 @@ module TestGroupdate |
528 | 528 | def test_zeros_datetime |
529 | 529 | create_user "2013-05-01 00:00:00 UTC" |
530 | 530 | expected = { |
531 | - utc.parse("2013-05-01 00:00:00 UTC") => 1 | |
531 | + Date.parse("2013-05-01") => 1 | |
532 | 532 | } |
533 | 533 | assert_equal expected, call_method(:day, :created_at, range: DateTime.parse("2013-05-01 00:00:00 UTC")..DateTime.parse("2013-05-01 00:00:00 UTC")) |
534 | 534 | end |
... | ... | @@ -543,9 +543,9 @@ module TestGroupdate |
543 | 543 | create_user "2013-05-01 00:00:00 UTC" |
544 | 544 | create_user "2013-05-03 00:00:00 UTC" |
545 | 545 | expected = { |
546 | - utc.parse("2013-05-01 00:00:00 UTC") => 1, | |
547 | - utc.parse("2013-05-02 00:00:00 UTC") => 0, | |
548 | - utc.parse("2013-05-03 00:00:00 UTC") => 1 | |
546 | + Date.parse("2013-05-01") => 1, | |
547 | + Date.parse("2013-05-02") => 0, | |
548 | + Date.parse("2013-05-03") => 1 | |
549 | 549 | } |
550 | 550 | assert_equal expected, call_method(:day, :created_at, range: true) |
551 | 551 | end |
... | ... | @@ -596,13 +596,13 @@ module TestGroupdate |
596 | 596 | def test_time_zone |
597 | 597 | create_user "2013-05-01 00:00:00 UTC" |
598 | 598 | time_zone = "Pacific Time (US & Canada)" |
599 | - assert_equal time_zone, call_method(:day, :created_at, time_zone: time_zone).keys.first.time_zone.name | |
599 | + assert_equal time_zone, call_method(:hour, :created_at, time_zone: time_zone).keys.first.time_zone.name | |
600 | 600 | end |
601 | 601 | |
602 | 602 | def test_where_after |
603 | 603 | create_user "2013-05-01 00:00:00 UTC" |
604 | 604 | create_user "2013-05-02 00:00:00 UTC" |
605 | - expected = {utc.parse("2013-05-02 00:00:00 UTC") => 1} | |
605 | + expected = {Date.parse("2013-05-02") => 1} | |
606 | 606 | assert_equal expected, User.group_by_day(:created_at).where("created_at > ?", "2013-05-01 00:00:00 UTC").count |
607 | 607 | end |
608 | 608 | |
... | ... | @@ -611,12 +611,12 @@ module TestGroupdate |
611 | 611 | create_user "2013-05-02 00:00:00 UTC", 2 |
612 | 612 | create_user "2013-05-03 00:00:00 UTC", 2 |
613 | 613 | expected = { |
614 | - [1, utc.parse("2013-05-01 00:00:00 UTC")] => 1, | |
615 | - [1, utc.parse("2013-05-02 00:00:00 UTC")] => 0, | |
616 | - [1, utc.parse("2013-05-03 00:00:00 UTC")] => 0, | |
617 | - [2, utc.parse("2013-05-01 00:00:00 UTC")] => 0, | |
618 | - [2, utc.parse("2013-05-02 00:00:00 UTC")] => 1, | |
619 | - [2, utc.parse("2013-05-03 00:00:00 UTC")] => 1 | |
614 | + [1, Date.parse("2013-05-01")] => 1, | |
615 | + [1, Date.parse("2013-05-02")] => 0, | |
616 | + [1, Date.parse("2013-05-03")] => 0, | |
617 | + [2, Date.parse("2013-05-01")] => 0, | |
618 | + [2, Date.parse("2013-05-02")] => 1, | |
619 | + [2, Date.parse("2013-05-03")] => 1 | |
620 | 620 | } |
621 | 621 | assert_equal expected, User.group(:score).group_by_day(:created_at).order(:score).count |
622 | 622 | end |
... | ... | @@ -626,12 +626,12 @@ module TestGroupdate |
626 | 626 | create_user "2013-05-02 00:00:00 UTC", 2 |
627 | 627 | create_user "2013-05-03 00:00:00 UTC", 2 |
628 | 628 | expected = { |
629 | - [utc.parse("2013-05-01 00:00:00 UTC"), 1] => 1, | |
630 | - [utc.parse("2013-05-02 00:00:00 UTC"), 1] => 0, | |
631 | - [utc.parse("2013-05-03 00:00:00 UTC"), 1] => 0, | |
632 | - [utc.parse("2013-05-01 00:00:00 UTC"), 2] => 0, | |
633 | - [utc.parse("2013-05-02 00:00:00 UTC"), 2] => 1, | |
634 | - [utc.parse("2013-05-03 00:00:00 UTC"), 2] => 1 | |
629 | + [Date.parse("2013-05-01"), 1] => 1, | |
630 | + [Date.parse("2013-05-02"), 1] => 0, | |
631 | + [Date.parse("2013-05-03"), 1] => 0, | |
632 | + [Date.parse("2013-05-01"), 2] => 0, | |
633 | + [Date.parse("2013-05-02"), 2] => 1, | |
634 | + [Date.parse("2013-05-03"), 2] => 1 | |
635 | 635 | } |
636 | 636 | assert_equal expected, User.group_by_day(:created_at).group(:score).order(:score).count |
637 | 637 | end |
... | ... | @@ -662,14 +662,14 @@ module TestGroupdate |
662 | 662 | def test_groupdate_multiple |
663 | 663 | create_user "2013-05-01 00:00:00 UTC", 1 |
664 | 664 | expected = { |
665 | - [utc.parse("2013-05-01 00:00:00 UTC"), utc.parse("2013-01-01 00:00:00 UTC")] => 1 | |
665 | + [Date.parse("2013-05-01"), Date.parse("2013-01-01")] => 1 | |
666 | 666 | } |
667 | 667 | assert_equal expected, User.group_by_day(:created_at).group_by_year(:created_at).count |
668 | 668 | end |
669 | 669 | |
670 | 670 | def test_not_modified |
671 | 671 | create_user "2013-05-01 00:00:00 UTC" |
672 | - expected = {utc.parse("2013-05-01 00:00:00 UTC") => 1} | |
672 | + expected = {Date.parse("2013-05-01") => 1} | |
673 | 673 | relation = User.group_by_day(:created_at) |
674 | 674 | relation.where("created_at > ?", "2013-05-01 00:00:00 UTC") |
675 | 675 | assert_equal expected, relation.count |
... | ... | @@ -691,9 +691,9 @@ module TestGroupdate |
691 | 691 | create_user "2012-05-01 00:00:00 UTC" |
692 | 692 | create_user "2014-05-01 00:00:00 UTC" |
693 | 693 | expected = { |
694 | - utc.parse("2013-01-01 00:00:00 UTC") => 0, | |
695 | - utc.parse("2014-01-01 00:00:00 UTC") => 1, | |
696 | - utc.parse("2015-01-01 00:00:00 UTC") => 0 | |
694 | + Date.parse("2013-01-01") => 0, | |
695 | + Date.parse("2014-01-01") => 1, | |
696 | + Date.parse("2015-01-01") => 0 | |
697 | 697 | } |
698 | 698 | assert_equal expected, User.group_by_year(:created_at, last: 3).count |
699 | 699 | end |
... | ... | @@ -785,8 +785,8 @@ module TestGroupdate |
785 | 785 | create_user(brasilia.parse("2014-10-19 02:00:00").utc.to_s) |
786 | 786 | create_user(brasilia.parse("2014-10-20 02:00:00").utc.to_s) |
787 | 787 | expected = { |
788 | - brasilia.parse("2014-10-19 01:00:00") => 1, | |
789 | - brasilia.parse("2014-10-20 00:00:00") => 1 | |
788 | + Date.parse("2014-10-19") => 1, | |
789 | + Date.parse("2014-10-20") => 1 | |
790 | 790 | } |
791 | 791 | assert_equal expected, User.group_by_day(:created_at, time_zone: "Brasilia").count |
792 | 792 | end |
... | ... | @@ -797,7 +797,7 @@ module TestGroupdate |
797 | 797 | create_user "2014-05-01 00:00:00 UTC" |
798 | 798 | create_user "2014-05-01 00:00:00 UTC" |
799 | 799 | create_user "2014-05-03 00:00:00 UTC" |
800 | - assert_equal 2, User.group_by_day(:created_at, carry_forward: true).count[utc.parse("2014-05-02 00:00:00 UTC")] | |
800 | + assert_equal 2, User.group_by_day(:created_at, carry_forward: true).count[Date.parse("2014-05-02")] | |
801 | 801 | end |
802 | 802 | |
803 | 803 | # helpers |
... | ... | @@ -807,7 +807,14 @@ module TestGroupdate |
807 | 807 | end |
808 | 808 | |
809 | 809 | def assert_result_time(method, expected, time_str, time_zone = false, options = {}) |
810 | - expected = {utc.parse(expected).in_time_zone(time_zone ? "Pacific Time (US & Canada)" : utc) => 1} | |
810 | + key = | |
811 | + if [:day, :week, :month, :year].include?(method) | |
812 | + Date.parse(expected) | |
813 | + else | |
814 | + utc.parse(expected).in_time_zone(time_zone ? "Pacific Time (US & Canada)" : utc) | |
815 | + end | |
816 | + | |
817 | + expected = {key => 1} | |
811 | 818 | assert_equal expected, result(method, time_str, time_zone, options) |
812 | 819 | end |
813 | 820 | |
... | ... | @@ -824,7 +831,14 @@ module TestGroupdate |
824 | 831 | create_user created_at |
825 | 832 | expected = {} |
826 | 833 | keys.each_with_index do |key, i| |
827 | - expected[utc.parse(key).in_time_zone(time_zone ? "Pacific Time (US & Canada)" : utc)] = i == 1 ? 1 : 0 | |
834 | + k = | |
835 | + if [:day, :week, :month, :year].include?(method) | |
836 | + Date.parse(key) | |
837 | + else | |
838 | + utc.parse(key).in_time_zone(time_zone ? "Pacific Time (US & Canada)" : utc) | |
839 | + end | |
840 | + | |
841 | + expected[k] = i == 1 ? 1 : 0 | |
828 | 842 | end |
829 | 843 | assert_equal expected, call_method(method, :created_at, options.merge(time_zone: time_zone ? "Pacific Time (US & Canada)" : nil, range: Time.parse(range_start)..Time.parse(range_end))) |
830 | 844 | end | ... | ... |