group_records 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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