groupy 0.2.1 → 0.2.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/Rakefile +3 -2
- data/lib/groupy.rb +11 -2
- data/test/groupy_test.rb +1 -1
- data/test/with_database_test.rb +6 -2
- metadata +31 -3
data/Rakefile
CHANGED
@@ -33,7 +33,7 @@ spec = Gem::Specification.new do |s|
|
|
33
33
|
|
34
34
|
# Change these as appropriate
|
35
35
|
s.name = "groupy"
|
36
|
-
s.version = "0.2.
|
36
|
+
s.version = "0.2.2"
|
37
37
|
s.summary = "Categorise Active Records in nested groups with magical scopes, ? methods, and constants."
|
38
38
|
s.author = "Matthew Rudy Jacobs"
|
39
39
|
s.email = "MatthewRudyJacobs@gmail.com"
|
@@ -52,7 +52,8 @@ spec = Gem::Specification.new do |s|
|
|
52
52
|
s.add_dependency("activesupport")
|
53
53
|
|
54
54
|
# If your tests use any gems, include them here
|
55
|
-
|
55
|
+
s.add_development_dependency("activerecord")
|
56
|
+
s.add_development_dependency("sqlite3-ruby")
|
56
57
|
end
|
57
58
|
|
58
59
|
# This task actually builds the gem. We also regenerate a static
|
data/lib/groupy.rb
CHANGED
@@ -73,7 +73,11 @@ module Groupy
|
|
73
73
|
def initialize(&block)
|
74
74
|
super(:all, &block)
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
|
+
def subgroups
|
78
|
+
super().merge(:all => self.values)
|
79
|
+
end
|
80
|
+
|
77
81
|
def attach!(klass, column_name, options)
|
78
82
|
self.subgroups.each do |group_name, group_values|
|
79
83
|
|
@@ -110,7 +114,12 @@ module Groupy
|
|
110
114
|
|
111
115
|
klass.class_eval <<-RUBY
|
112
116
|
def self.all_#{column_name.to_s.pluralize}
|
113
|
-
self
|
117
|
+
self.#{column_name.to_s.pluralize}(:all)
|
118
|
+
end
|
119
|
+
|
120
|
+
# self.roles(:non_superadmin) => ["some", "list", "of", "roles"]
|
121
|
+
def self.#{column_name.to_s.pluralize}(subgroup_name)
|
122
|
+
self.groupies[#{column_name.inspect}].subgroups[subgroup_name]
|
114
123
|
end
|
115
124
|
RUBY
|
116
125
|
end
|
data/test/groupy_test.rb
CHANGED
@@ -45,7 +45,7 @@ class GroupyTest < ActiveSupport::TestCase
|
|
45
45
|
end
|
46
46
|
|
47
47
|
test "subgroups" do
|
48
|
-
assert_equal [:healthy, :fruit, :apple, :orange, :rice, :unhealthy, :fried_egg, :bacon].sort_by(&:to_s), Food.groupies[:dish].subgroups.keys.sort_by(&:to_s)
|
48
|
+
assert_equal [:all, :healthy, :fruit, :apple, :orange, :rice, :unhealthy, :fried_egg, :bacon].sort_by(&:to_s), Food.groupies[:dish].subgroups.keys.sort_by(&:to_s)
|
49
49
|
assert_equal ["apple", "orange", "rice"], Food.groupies[:dish].subgroups[:healthy]
|
50
50
|
assert_equal ["apple", "orange"], Food.groupies[:dish].subgroups[:fruit]
|
51
51
|
assert_equal ["apple"], Food.groupies[:dish].subgroups[:apple]
|
data/test/with_database_test.rb
CHANGED
@@ -5,8 +5,7 @@ require 'active_record'
|
|
5
5
|
|
6
6
|
ActiveRecord::Base.establish_connection(
|
7
7
|
:adapter => "sqlite3",
|
8
|
-
:
|
9
|
-
:database => "groupy_test"
|
8
|
+
:database => ":memory:"
|
10
9
|
)
|
11
10
|
|
12
11
|
ActiveRecord::Schema.define(:version => 0) do
|
@@ -44,4 +43,9 @@ class WithDatabaseTest < ActiveSupport::TestCase
|
|
44
43
|
assert_equal 1, Something.medium_sizes.count
|
45
44
|
end
|
46
45
|
|
46
|
+
test "subgroup shortcut" do
|
47
|
+
assert_equal ["small", "medium", "large"], Something.sizes(:all)
|
48
|
+
assert_equal ["small"], Something.sizes(:small)
|
49
|
+
end
|
50
|
+
|
47
51
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: groupy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 2
|
10
|
+
version: 0.2.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Matthew Rudy Jacobs
|
@@ -32,6 +32,34 @@ dependencies:
|
|
32
32
|
version: "0"
|
33
33
|
type: :runtime
|
34
34
|
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: activerecord
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
version: "0"
|
47
|
+
type: :development
|
48
|
+
version_requirements: *id002
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: sqlite3-ruby
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
61
|
+
type: :development
|
62
|
+
version_requirements: *id003
|
35
63
|
description:
|
36
64
|
email: MatthewRudyJacobs@gmail.com
|
37
65
|
executables: []
|