Commit 72dfdffbddb13a15fb2462a72acb6093c9420400
Committed by
GitHub
Exists in
master
Merge pull request #56 from brchristian/patch-1
Use base_class instead of superclass in parent_class_name
Showing
8 changed files
with
37 additions
and
46 deletions
Show diff stats
README.rdoc
@@ -76,18 +76,6 @@ Make your model(s) that can follow other models acts_as_follower | @@ -76,18 +76,6 @@ Make your model(s) that can follow other models acts_as_follower | ||
76 | ... | 76 | ... |
77 | end | 77 | end |
78 | 78 | ||
79 | -Extended setup: | ||
80 | - # config/initializers/acts_as_follower.rb | ||
81 | - | ||
82 | - # By default list of parent classes includes only `[ApplicationRecord, ActiveRecord::Base]`. | ||
83 | - ActsAsFollower.custom_parent_classes = [CustomRecord] | ||
84 | - | ||
85 | - # OR | ||
86 | - | ||
87 | - ActsAsFollower.setup do |c| | ||
88 | - c.custom_parent_classes = [...] | ||
89 | - end | ||
90 | - | ||
91 | --- | 79 | --- |
92 | 80 | ||
93 | === acts_as_follower methods | 81 | === acts_as_follower methods |
lib/acts_as_follower.rb
@@ -12,6 +12,9 @@ module ActsAsFollower | @@ -12,6 +12,9 @@ module ActsAsFollower | ||
12 | end | 12 | end |
13 | 13 | ||
14 | def self.method_missing(method_name, *args, &block) | 14 | def self.method_missing(method_name, *args, &block) |
15 | + if method_name == :custom_parent_classes= | ||
16 | + ActiveSupport::Deprecation.warn("Setting custom parent classes is deprecated and will be removed in future versions.") | ||
17 | + end | ||
15 | @configuration.respond_to?(method_name) ? | 18 | @configuration.respond_to?(method_name) ? |
16 | @configuration.send(method_name, *args, &block) : super | 19 | @configuration.send(method_name, *args, &block) : super |
17 | end | 20 | end |
lib/acts_as_follower/follower_lib.rb
@@ -8,7 +8,7 @@ module ActsAsFollower | @@ -8,7 +8,7 @@ module ActsAsFollower | ||
8 | # Retrieves the parent class name if using STI. | 8 | # Retrieves the parent class name if using STI. |
9 | def parent_class_name(obj) | 9 | def parent_class_name(obj) |
10 | unless parent_classes.include?(obj.class.superclass) | 10 | unless parent_classes.include?(obj.class.superclass) |
11 | - return obj.class.superclass.name | 11 | + return obj.class.base_class.name |
12 | end | 12 | end |
13 | obj.class.name | 13 | obj.class.name |
14 | end | 14 | end |
@@ -35,6 +35,7 @@ module ActsAsFollower | @@ -35,6 +35,7 @@ module ActsAsFollower | ||
35 | def parent_classes | 35 | def parent_classes |
36 | return DEFAULT_PARENTS unless ActsAsFollower.custom_parent_classes | 36 | return DEFAULT_PARENTS unless ActsAsFollower.custom_parent_classes |
37 | 37 | ||
38 | + ActiveSupport::Deprecation.warn("Setting custom parent classes is deprecated and will be removed in future versions.") | ||
38 | ActsAsFollower.custom_parent_classes + DEFAULT_PARENTS | 39 | ActsAsFollower.custom_parent_classes + DEFAULT_PARENTS |
39 | end | 40 | end |
40 | end | 41 | end |
test/acts_as_followable_test.rb
@@ -20,6 +20,8 @@ class ActsAsFollowableTest < ActiveSupport::TestCase | @@ -20,6 +20,8 @@ class ActsAsFollowableTest < ActiveSupport::TestCase | ||
20 | @jon = FactoryGirl.create(:jon) | 20 | @jon = FactoryGirl.create(:jon) |
21 | @oasis = FactoryGirl.create(:oasis) | 21 | @oasis = FactoryGirl.create(:oasis) |
22 | @metallica = FactoryGirl.create(:metallica) | 22 | @metallica = FactoryGirl.create(:metallica) |
23 | + @green_day = FactoryGirl.create(:green_day) | ||
24 | + @blink_182 = FactoryGirl.create(:blink_182) | ||
23 | @sam.follow(@jon) | 25 | @sam.follow(@jon) |
24 | end | 26 | end |
25 | 27 | ||
@@ -225,6 +227,20 @@ class ActsAsFollowableTest < ActiveSupport::TestCase | @@ -225,6 +227,20 @@ class ActsAsFollowableTest < ActiveSupport::TestCase | ||
225 | end | 227 | end |
226 | end | 228 | end |
227 | 229 | ||
230 | + context "followers_with_sti" do | ||
231 | + setup do | ||
232 | + @sam.follow(@green_day) | ||
233 | + @sam.follow(@blink_182) | ||
234 | + end | ||
235 | + | ||
236 | + should "return the followers for given type" do | ||
237 | + assert_equal @sam.follows_by_type('Band').first.followable, @green_day.becomes(Band) | ||
238 | + assert_equal @sam.follows_by_type('Band').second.followable, @blink_182.becomes(Band) | ||
239 | + assert @green_day.followers_by_type('User').include?(@sam) | ||
240 | + assert @blink_182.followers_by_type('User').include?(@sam) | ||
241 | + end | ||
242 | + end | ||
243 | + | ||
228 | context "method_missing" do | 244 | context "method_missing" do |
229 | setup do | 245 | setup do |
230 | @sam.follow(@oasis) | 246 | @sam.follow(@oasis) |
test/factories/bands.rb
@@ -6,4 +6,12 @@ FactoryGirl.define do | @@ -6,4 +6,12 @@ FactoryGirl.define do | ||
6 | factory :metallica, :class => Band do |b| | 6 | factory :metallica, :class => Band do |b| |
7 | b.name 'Metallica' | 7 | b.name 'Metallica' |
8 | end | 8 | end |
9 | + | ||
10 | + factory :green_day, :class => Band::Punk do |b| | ||
11 | + b.name 'Green Day' | ||
12 | + end | ||
13 | + | ||
14 | + factory :blink_182, :class => Band::Punk::PopPunk do |b| | ||
15 | + b.name 'Blink 182' | ||
16 | + end | ||
9 | end | 17 | end |
test/follow_test.rb
@@ -25,37 +25,4 @@ class FollowTest < ActiveSupport::TestCase | @@ -25,37 +25,4 @@ class FollowTest < ActiveSupport::TestCase | ||
25 | end | 25 | end |
26 | end | 26 | end |
27 | 27 | ||
28 | - context "with custom parents" do | ||
29 | - setup do | ||
30 | - @daddy = FactoryGirl.create(:daddy) | ||
31 | - @mommy = FactoryGirl.create(:mommy) | ||
32 | - @oasis = FactoryGirl.create(:oasis) | ||
33 | - @metallica = FactoryGirl.create(:metallica) | ||
34 | - end | ||
35 | - | ||
36 | - should "be followed" do | ||
37 | - ActsAsFollower.custom_parent_classes = [CustomRecord] | ||
38 | - | ||
39 | - @daddy.follow(@mommy) | ||
40 | - @daddy.follow(@metallica) | ||
41 | - @mommy.follow(@oasis) | ||
42 | - assert_equal true, @daddy.following?(@mommy) | ||
43 | - assert_equal false, @mommy.following?(@daddy) | ||
44 | - assert_equal true, @mommy.followed_by?(@daddy) | ||
45 | - assert_equal false, @daddy.followed_by?(@mommy) | ||
46 | - assert_equal true, @metallica.followed_by?(@daddy) | ||
47 | - assert_equal true, @oasis.followed_by?(@mommy) | ||
48 | - assert_equal true, @daddy.following?(@metallica) | ||
49 | - assert_equal true, @mommy.following?(@oasis) | ||
50 | - end | ||
51 | - | ||
52 | - should "be not followed" do | ||
53 | - ActsAsFollower.custom_parent_classes = [] | ||
54 | - | ||
55 | - @daddy.follow(@mommy) | ||
56 | - @mommy.follow(@oasis) | ||
57 | - assert_equal false, @daddy.following?(@mommy) | ||
58 | - assert_equal false, @mommy.following?(@oasis) | ||
59 | - end | ||
60 | - end | ||
61 | end | 28 | end |