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 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">]}
@@ -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 "rspec"
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
 
@@ -1,3 +1,3 @@
1
1
  module GroupRecords
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -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
@@ -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.1
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-21 00:00:00.000000000 Z
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: rspec
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