group_records 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +7 -0
- data/group_records.gemspec +3 -1
- data/lib/group_records.rb +2 -2
- data/lib/group_records/version.rb +1 -1
- data/test/test_group_records.rb +27 -0
- data/test/test_helper.rb +19 -0
- metadata +40 -4
data/README.md
CHANGED
@@ -11,6 +11,8 @@ This gem provides two methods which returns hash having keys as month or year an
|
|
11
11
|
1. group_by_month
|
12
12
|
2. group_by_year
|
13
13
|
|
14
|
+
The order of the keys returned are sorted on the basis of created_at.
|
15
|
+
|
14
16
|
Example Usage -
|
15
17
|
```ruby
|
16
18
|
class PostsController < ApplicationController
|
@@ -20,6 +22,11 @@ class PostsController < ApplicationController
|
|
20
22
|
end
|
21
23
|
end
|
22
24
|
```
|
25
|
+
Or more succintly
|
26
|
+
```ruby
|
27
|
+
@posts_months = Post.all.group_by_month
|
28
|
+
```
|
29
|
+
|
23
30
|
viewing @posts_months in rails console -
|
24
31
|
```ruby
|
25
32
|
{"January 2014"=>[#<Post id: 8, title: "sample">]}
|
data/group_records.gemspec
CHANGED
@@ -20,5 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.5"
|
22
22
|
spec.add_development_dependency "rake"
|
23
|
-
spec.add_development_dependency
|
23
|
+
spec.add_development_dependency 'minitest'
|
24
|
+
spec.add_development_dependency 'sqlite3'
|
25
|
+
spec.add_dependency "activerecord", "~> 4.0.0"
|
24
26
|
end
|
data/lib/group_records.rb
CHANGED
@@ -2,11 +2,11 @@ require "group_records/version"
|
|
2
2
|
|
3
3
|
module GroupRecords
|
4
4
|
def group_by_month
|
5
|
-
self.group_by{|obj| obj.created_at.strftime("%B %Y")}
|
5
|
+
self.order(:created_at).group_by{|obj| obj.created_at.strftime("%B %Y")}
|
6
6
|
end
|
7
7
|
|
8
8
|
def group_by_year
|
9
|
-
self.group_by{|obj| obj.created_at.strftime("%Y")}
|
9
|
+
self.order(:created_at).group_by{|obj| obj.created_at.strftime("%Y")}
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require_relative 'test_helper'
|
3
|
+
|
4
|
+
class FakePost < ActiveRecord::Base
|
5
|
+
end
|
6
|
+
|
7
|
+
class TestGroupRecords < MiniTest::Spec
|
8
|
+
def setup
|
9
|
+
@post1 = FakePost.create(:title => 'First Post', :created_at => Time.now)
|
10
|
+
@post2 = FakePost.create(:title => 'Second Post', :created_at => Time.now - 6000000)
|
11
|
+
@post2 = FakePost.create(:title => 'Third Post', :created_at => Time.now - 4000000)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_number_of_keys_returned
|
15
|
+
assert_equal(3, FakePost.all.group_by_month.keys.count)
|
16
|
+
assert_equal(2, FakePost.all.group_by_year.keys.count)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_order_of_keys
|
20
|
+
assert_equal('December 2013', FakePost.all.group_by_month.keys[0])
|
21
|
+
assert_equal('January 2014', FakePost.all.group_by_month.keys[1])
|
22
|
+
assert_equal('February 2014', FakePost.all.group_by_month.keys[2])
|
23
|
+
|
24
|
+
assert_equal('2013', FakePost.all.group_by_year.keys[0])
|
25
|
+
assert_equal('2014', FakePost.all.group_by_year.keys[1])
|
26
|
+
end
|
27
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'active_record'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'sqlite3'
|
4
|
+
|
5
|
+
require_relative '../lib/group_records.rb'
|
6
|
+
|
7
|
+
FileUtils.rm_f 'test/setup/db/test.sqlite3'
|
8
|
+
|
9
|
+
ActiveRecord::Base.establish_connection(
|
10
|
+
:adapter => 'sqlite3',
|
11
|
+
:database => './test/setup/db/test.sqlite3'
|
12
|
+
)
|
13
|
+
|
14
|
+
ActiveRecord::Migration.class_eval do
|
15
|
+
create_table :fake_posts do |t|
|
16
|
+
t.string :title
|
17
|
+
t.datetime :created_at
|
18
|
+
end
|
19
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: group_records
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-02-
|
12
|
+
date: 2014-02-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -44,7 +44,7 @@ dependencies:
|
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
47
|
+
name: minitest
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
@@ -59,6 +59,38 @@ dependencies:
|
|
59
59
|
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: sqlite3
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: activerecord
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 4.0.0
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 4.0.0
|
62
94
|
description: groups the record on basis of created_at
|
63
95
|
email:
|
64
96
|
- vaibhav.khl@gmail.com
|
@@ -74,6 +106,8 @@ files:
|
|
74
106
|
- group_records.gemspec
|
75
107
|
- lib/group_records.rb
|
76
108
|
- lib/group_records/version.rb
|
109
|
+
- test/test_group_records.rb
|
110
|
+
- test/test_helper.rb
|
77
111
|
homepage: https://github.com/Gemathon-Lapidarists/group_records
|
78
112
|
licenses:
|
79
113
|
- MIT
|
@@ -99,4 +133,6 @@ rubygems_version: 1.8.28
|
|
99
133
|
signing_key:
|
100
134
|
specification_version: 3
|
101
135
|
summary: groups the record on basis of created_at
|
102
|
-
test_files:
|
136
|
+
test_files:
|
137
|
+
- test/test_group_records.rb
|
138
|
+
- test/test_helper.rb
|