enumerable_test.rb
1.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
require_relative "test_helper"
require "ostruct"
class TestEnumerable < Minitest::Test
include TestGroupdate
def test_enumerable
user_a = create_user("2014-01-21")
user_b = create_user("2014-03-14")
expected = {
utc.parse("2014-01-01") => [user_a],
utc.parse("2014-02-01") => [],
utc.parse("2014-03-01") => [user_b]
}
assert_equal expected, [user_a, user_b].group_by_month(&:created_at)
end
def test_no_block
assert_raises(ArgumentError) { [].group_by_day(:created_at) }
end
def call_method(method, field, options)
Hash[@users.group_by_period(method, options) { |u| u.send(field) }.map { |k, v| [k, v.size] }]
end
def create_user(created_at, score = 1)
user =
OpenStruct.new(
name: "Andrew",
score: score,
created_at: created_at ? utc.parse(created_at) : nil,
created_on: created_at ? Date.parse(created_at) : nil
)
@users << user
user
end
def setup
super
@users = []
end
def teardown
# do nothing
end
def enumerable_test?
true
end
end