socialization 1.1.0 → 1.2.0
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.
- checksums.yaml +4 -4
- data/.ruby-version +1 -0
- data/.travis.yml +2 -1
- data/Appraisals +13 -1
- data/CHANGELOG.md +12 -0
- data/Guardfile +12 -0
- data/LICENSE +2 -2
- data/README.md +46 -1
- data/Rakefile +8 -10
- data/lib/socialization/stores/active_record/follow.rb +4 -0
- data/lib/socialization/stores/active_record/like.rb +4 -0
- data/lib/socialization/stores/active_record/mention.rb +4 -0
- data/lib/socialization/stores/active_record/mixins/base.rb +4 -0
- data/lib/socialization/stores/mixins/follow.rb +1 -1
- data/lib/socialization/version.rb +1 -1
- data/socialization.gemspec +5 -3
- data/spec/actors/follower_spec.rb +113 -0
- data/spec/actors/liker_spec.rb +105 -0
- data/spec/actors/mentioner_spec.rb +105 -0
- data/spec/spec_helper.rb +21 -0
- data/{test/test_helper.rb → spec/spec_support/data_stores.rb} +76 -81
- data/spec/spec_support/matchers.rb +54 -0
- data/spec/stores/active_record/follow_store_spec.rb +147 -0
- data/spec/stores/active_record/like_store_spec.rb +146 -0
- data/spec/stores/active_record/mention_store_spec.rb +148 -0
- data/spec/stores/active_record/mixins/base_spec.rb +25 -0
- data/spec/stores/redis/base_spec.rb +195 -0
- data/spec/stores/redis/config_spec.rb +28 -0
- data/spec/stores/redis/follow_store_spec.rb +26 -0
- data/spec/stores/redis/like_store_spec.rb +23 -0
- data/spec/stores/redis/mention_store_spec.rb +23 -0
- data/spec/string_spec.rb +13 -0
- data/spec/victims/followable_spec.rb +59 -0
- data/spec/victims/likeable_spec.rb +58 -0
- data/spec/victims/mentionable_spec.rb +59 -0
- data/spec/world_spec.rb +107 -0
- metadata +79 -42
- data/test/actors/follower_test.rb +0 -114
- data/test/actors/liker_test.rb +0 -106
- data/test/actors/mentioner_test.rb +0 -106
- data/test/stores/active_record/follow_store_test.rb +0 -138
- data/test/stores/active_record/like_store_test.rb +0 -139
- data/test/stores/active_record/mention_store_test.rb +0 -138
- data/test/stores/redis/base_test.rb +0 -203
- data/test/stores/redis/config_test.rb +0 -30
- data/test/stores/redis/follow_store_test.rb +0 -27
- data/test/stores/redis/like_store_test.rb +0 -25
- data/test/stores/redis/mention_store_test.rb +0 -25
- data/test/string_test.rb +0 -13
- data/test/victims/followable_test.rb +0 -60
- data/test/victims/likeable_test.rb +0 -60
- data/test/victims/mentionable_test.rb +0 -60
- data/test/world_test.rb +0 -112
@@ -1,139 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__))+'/../../test_helper'
|
2
|
-
|
3
|
-
class ActiveRecordLikeStoreTest < Test::Unit::TestCase
|
4
|
-
context "ActiveRecordStores::LikeStoreTest" do
|
5
|
-
setup do
|
6
|
-
@klass = Socialization::ActiveRecordStores::Like
|
7
|
-
@klass.touch nil
|
8
|
-
@klass.after_like nil
|
9
|
-
@klass.after_unlike nil
|
10
|
-
@liker = ImALiker.create
|
11
|
-
@likeable = ImALikeable.create
|
12
|
-
end
|
13
|
-
|
14
|
-
context "data store" do
|
15
|
-
should "inherit Socialization::ActiveRecordStores::Like" do
|
16
|
-
assert_equal Socialization::ActiveRecordStores::Like, Socialization.like_model
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
context "#like!" do
|
21
|
-
should "create a Like record" do
|
22
|
-
@klass.like!(@liker, @likeable)
|
23
|
-
assert_match_liker @klass.last, @liker
|
24
|
-
assert_match_likeable @klass.last, @likeable
|
25
|
-
end
|
26
|
-
|
27
|
-
should "touch liker when instructed" do
|
28
|
-
@klass.touch :liker
|
29
|
-
@liker.expects(:touch).once
|
30
|
-
@likeable.expects(:touch).never
|
31
|
-
@klass.like!(@liker, @likeable)
|
32
|
-
end
|
33
|
-
|
34
|
-
should "touch likeable when instructed" do
|
35
|
-
@klass.touch :likeable
|
36
|
-
@liker.expects(:touch).never
|
37
|
-
@likeable.expects(:touch).once
|
38
|
-
@klass.like!(@liker, @likeable)
|
39
|
-
end
|
40
|
-
|
41
|
-
should "touch all when instructed" do
|
42
|
-
@klass.touch :all
|
43
|
-
@liker.expects(:touch).once
|
44
|
-
@likeable.expects(:touch).once
|
45
|
-
@klass.like!(@liker, @likeable)
|
46
|
-
end
|
47
|
-
|
48
|
-
should "call after like hook" do
|
49
|
-
@klass.after_like :after_like
|
50
|
-
@klass.expects(:after_like).once
|
51
|
-
@klass.like!(@liker, @likeable)
|
52
|
-
end
|
53
|
-
|
54
|
-
should "call after unlike hook" do
|
55
|
-
@klass.after_like :after_unlike
|
56
|
-
@klass.expects(:after_unlike).once
|
57
|
-
@klass.like!(@liker, @likeable)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
context "#likes?" do
|
62
|
-
should "return true when like exists" do
|
63
|
-
@klass.create! do |f|
|
64
|
-
f.liker = @liker
|
65
|
-
f.likeable = @likeable
|
66
|
-
end
|
67
|
-
assert_true @klass.likes?(@liker, @likeable)
|
68
|
-
end
|
69
|
-
|
70
|
-
should "return false when like doesn't exist" do
|
71
|
-
assert_false @klass.likes?(@liker, @likeable)
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
context "#likers" do
|
76
|
-
should "return an array of likers" do
|
77
|
-
liker1 = ImALiker.create
|
78
|
-
liker2 = ImALiker.create
|
79
|
-
liker1.like!(@likeable)
|
80
|
-
liker2.like!(@likeable)
|
81
|
-
assert_equal [liker1, liker2], @klass.likers(@likeable, liker1.class)
|
82
|
-
end
|
83
|
-
|
84
|
-
should "return an array of liker ids when plucking" do
|
85
|
-
liker1 = ImALiker.create
|
86
|
-
liker2 = ImALiker.create
|
87
|
-
liker1.like!(@likeable)
|
88
|
-
liker2.like!(@likeable)
|
89
|
-
assert_equal [liker1.id, liker2.id], @klass.likers(@likeable, liker1.class, :pluck => :id)
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
context "#likeables" do
|
94
|
-
should "return an array of likers" do
|
95
|
-
likeable1 = ImALikeable.create
|
96
|
-
likeable2 = ImALikeable.create
|
97
|
-
@liker.like!(likeable1)
|
98
|
-
@liker.like!(likeable2)
|
99
|
-
assert_equal [likeable1, likeable2], @klass.likeables(@liker, likeable1.class)
|
100
|
-
end
|
101
|
-
|
102
|
-
should "return an array of liker ids when plucking" do
|
103
|
-
likeable1 = ImALikeable.create
|
104
|
-
likeable2 = ImALikeable.create
|
105
|
-
@liker.like!(likeable1)
|
106
|
-
@liker.like!(likeable2)
|
107
|
-
assert_equal [likeable1.id, likeable2.id], @klass.likeables(@liker, likeable1.class, :pluck => :id)
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
context "#remove_likers" do
|
112
|
-
should "delete all likers relationships for a likeable" do
|
113
|
-
@liker.like!(@likeable)
|
114
|
-
assert_equal 1, @likeable.likers(@liker.class).count
|
115
|
-
@klass.remove_likers(@likeable)
|
116
|
-
assert_equal 0, @likeable.likers(@liker.class).count
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
context "#remove_likeables" do
|
121
|
-
should "delete all likeables relationships for a liker" do
|
122
|
-
@liker.like!(@likeable)
|
123
|
-
assert_equal 1, @liker.likeables(@likeable.class).count
|
124
|
-
@klass.remove_likeables(@liker)
|
125
|
-
assert_equal 0, @liker.likeables(@likeable.class).count
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
end
|
130
|
-
|
131
|
-
# Helpers
|
132
|
-
def assert_match_liker(like_record, liker)
|
133
|
-
assert like_record.liker_type == liker.class.to_s && like_record.liker_id == liker.id
|
134
|
-
end
|
135
|
-
|
136
|
-
def assert_match_likeable(like_record, likeable)
|
137
|
-
assert like_record.likeable_type == likeable.class.to_s && like_record.likeable_id == likeable.id
|
138
|
-
end
|
139
|
-
end
|
@@ -1,138 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__))+'/../../test_helper'
|
2
|
-
|
3
|
-
class ActiveRecordMentionStoreTest < Test::Unit::TestCase
|
4
|
-
context "ActiveRecordStores::MentionStoreTest" do
|
5
|
-
setup do
|
6
|
-
@klass = Socialization::ActiveRecordStores::Mention
|
7
|
-
@klass.touch nil
|
8
|
-
@klass.after_mention nil
|
9
|
-
@klass.after_unmention nil
|
10
|
-
@mentioner = ImAMentioner.create
|
11
|
-
@mentionable = ImAMentionable.create
|
12
|
-
end
|
13
|
-
|
14
|
-
context "data store" do
|
15
|
-
should "inherit Socialization::ActiveRecordStores::Mention" do
|
16
|
-
assert_equal Socialization::ActiveRecordStores::Mention, Socialization.mention_model
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
context "#mention!" do
|
21
|
-
should "create a Mention record" do
|
22
|
-
@klass.mention!(@mentioner, @mentionable)
|
23
|
-
assert_match_mentioner @klass.last, @mentioner
|
24
|
-
assert_match_mentionable @klass.last, @mentionable
|
25
|
-
end
|
26
|
-
|
27
|
-
should "touch mentioner when instructed" do
|
28
|
-
@klass.touch :mentioner
|
29
|
-
@mentioner.expects(:touch).once
|
30
|
-
@mentionable.expects(:touch).never
|
31
|
-
@klass.mention!(@mentioner, @mentionable)
|
32
|
-
end
|
33
|
-
|
34
|
-
should "touch mentionable when instructed" do
|
35
|
-
@klass.touch :mentionable
|
36
|
-
@mentioner.expects(:touch).never
|
37
|
-
@mentionable.expects(:touch).once
|
38
|
-
@klass.mention!(@mentioner, @mentionable)
|
39
|
-
end
|
40
|
-
|
41
|
-
should "touch all when instructed" do
|
42
|
-
@klass.touch :all
|
43
|
-
@mentioner.expects(:touch).once
|
44
|
-
@mentionable.expects(:touch).once
|
45
|
-
@klass.mention!(@mentioner, @mentionable)
|
46
|
-
end
|
47
|
-
|
48
|
-
should "call after mention hook" do
|
49
|
-
@klass.after_mention :after_mention
|
50
|
-
@klass.expects(:after_mention).once
|
51
|
-
@klass.mention!(@mentioner, @mentionable)
|
52
|
-
end
|
53
|
-
|
54
|
-
should "call after unmention hook" do
|
55
|
-
@klass.after_mention :after_unmention
|
56
|
-
@klass.expects(:after_unmention).once
|
57
|
-
@klass.mention!(@mentioner, @mentionable)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
context "#mentions?" do
|
62
|
-
should "return true when mention exists" do
|
63
|
-
@klass.create! do |f|
|
64
|
-
f.mentioner = @mentioner
|
65
|
-
f.mentionable = @mentionable
|
66
|
-
end
|
67
|
-
assert_true @klass.mentions?(@mentioner, @mentionable)
|
68
|
-
end
|
69
|
-
|
70
|
-
should "return false when mention doesn't exist" do
|
71
|
-
assert_false @klass.mentions?(@mentioner, @mentionable)
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
context "#mentioners" do
|
76
|
-
should "return an array of mentioners" do
|
77
|
-
mentioner1 = ImAMentioner.create
|
78
|
-
mentioner2 = ImAMentioner.create
|
79
|
-
mentioner1.mention!(@mentionable)
|
80
|
-
mentioner2.mention!(@mentionable)
|
81
|
-
assert_equal [mentioner1, mentioner2], @klass.mentioners(@mentionable, mentioner1.class)
|
82
|
-
end
|
83
|
-
|
84
|
-
should "return an array of mentioner ids when plucking" do
|
85
|
-
mentioner1 = ImAMentioner.create
|
86
|
-
mentioner2 = ImAMentioner.create
|
87
|
-
mentioner1.mention!(@mentionable)
|
88
|
-
mentioner2.mention!(@mentionable)
|
89
|
-
assert_equal [mentioner1.id, mentioner2.id], @klass.mentioners(@mentionable, mentioner1.class, :pluck => :id)
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
context "#mentionables" do
|
94
|
-
should "return an array of mentioners" do
|
95
|
-
mentionable1 = ImAMentionable.create
|
96
|
-
mentionable2 = ImAMentionable.create
|
97
|
-
@mentioner.mention!(mentionable1)
|
98
|
-
@mentioner.mention!(mentionable2)
|
99
|
-
assert_equal [mentionable1, mentionable2], @klass.mentionables(@mentioner, mentionable1.class)
|
100
|
-
end
|
101
|
-
|
102
|
-
should "return an array of mentioner ids when plucking" do
|
103
|
-
mentionable1 = ImAMentionable.create
|
104
|
-
mentionable2 = ImAMentionable.create
|
105
|
-
@mentioner.mention!(mentionable1)
|
106
|
-
@mentioner.mention!(mentionable2)
|
107
|
-
assert_equal [mentionable1.id, mentionable2.id], @klass.mentionables(@mentioner, mentionable1.class, :pluck => :id)
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
context "#remove_mentioners" do
|
112
|
-
should "delete all mentioners relationships for a mentionable" do
|
113
|
-
@mentioner.mention!(@mentionable)
|
114
|
-
assert_equal 1, @mentionable.mentioners(@mentioner.class).count
|
115
|
-
@klass.remove_mentioners(@mentionable)
|
116
|
-
assert_equal 0, @mentionable.mentioners(@mentioner.class).count
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
context "#remove_mentionables" do
|
121
|
-
should "delete all mentionables relationships for a mentioner" do
|
122
|
-
@mentioner.mention!(@mentionable)
|
123
|
-
assert_equal 1, @mentioner.mentionables(@mentionable.class).count
|
124
|
-
@klass.remove_mentionables(@mentioner)
|
125
|
-
assert_equal 0, @mentioner.mentionables(@mentionable.class).count
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
# Helpers
|
131
|
-
def assert_match_mentioner(mention_record, mentioner)
|
132
|
-
assert mention_record.mentioner_type == mentioner.class.to_s && mention_record.mentioner_id == mentioner.id
|
133
|
-
end
|
134
|
-
|
135
|
-
def assert_match_mentionable(mention_record, mentionable)
|
136
|
-
assert mention_record.mentionable_type == mentionable.class.to_s && mention_record.mentionable_id == mentionable.id
|
137
|
-
end
|
138
|
-
end
|
@@ -1,203 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__))+'/../../test_helper'
|
2
|
-
|
3
|
-
class RedisBaseStoreTest < Test::Unit::TestCase
|
4
|
-
# Testing through RedisStores::Follow for easy testing
|
5
|
-
context "RedisStores::Base through RedisStores::Follow" do
|
6
|
-
setup do
|
7
|
-
use_redis_store
|
8
|
-
@klass = Socialization::RedisStores::Follow
|
9
|
-
@klass.touch nil
|
10
|
-
@klass.after_follow nil
|
11
|
-
@klass.after_unfollow nil
|
12
|
-
@follower1 = ImAFollower.create
|
13
|
-
@follower2 = ImAFollower.create
|
14
|
-
@followable1 = ImAFollowable.create
|
15
|
-
@followable2 = ImAFollowable.create
|
16
|
-
end
|
17
|
-
|
18
|
-
context "Stores" do
|
19
|
-
should "inherit Socialization::RedisStores::Follow" do
|
20
|
-
assert_equal Socialization::RedisStores::Follow, Socialization.follow_model
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
context "#follow!" do
|
25
|
-
should "create follow records" do
|
26
|
-
@klass.follow!(@follower1, @followable1)
|
27
|
-
assert_array_similarity ["#{@follower1.class}:#{@follower1.id}"], Socialization.redis.smembers(forward_key(@followable1))
|
28
|
-
assert_array_similarity ["#{@followable1.class}:#{@followable1.id}"], Socialization.redis.smembers(backward_key(@follower1))
|
29
|
-
|
30
|
-
@klass.follow!(@follower2, @followable1)
|
31
|
-
assert_array_similarity ["#{@follower1.class}:#{@follower1.id}", "#{@follower2.class}:#{@follower2.id}"], Socialization.redis.smembers(forward_key(@followable1))
|
32
|
-
assert_array_similarity ["#{@followable1.class}:#{@followable1.id}"], Socialization.redis.smembers(backward_key(@follower1))
|
33
|
-
assert_array_similarity ["#{@followable1.class}:#{@followable1.id}"], Socialization.redis.smembers(backward_key(@follower2))
|
34
|
-
end
|
35
|
-
|
36
|
-
should "touch follower when instructed" do
|
37
|
-
@klass.touch :follower
|
38
|
-
@follower1.expects(:touch).once
|
39
|
-
@followable1.expects(:touch).never
|
40
|
-
@klass.follow!(@follower1, @followable1)
|
41
|
-
end
|
42
|
-
|
43
|
-
should "touch followable when instructed" do
|
44
|
-
@klass.touch :followable
|
45
|
-
@follower1.expects(:touch).never
|
46
|
-
@followable1.expects(:touch).once
|
47
|
-
@klass.follow!(@follower1, @followable1)
|
48
|
-
end
|
49
|
-
|
50
|
-
should "touch all when instructed" do
|
51
|
-
@klass.touch :all
|
52
|
-
@follower1.expects(:touch).once
|
53
|
-
@followable1.expects(:touch).once
|
54
|
-
@klass.follow!(@follower1, @followable1)
|
55
|
-
end
|
56
|
-
|
57
|
-
should "call after follow hook" do
|
58
|
-
@klass.after_follow :after_follow
|
59
|
-
@klass.expects(:after_follow).once
|
60
|
-
@klass.follow!(@follower1, @followable1)
|
61
|
-
end
|
62
|
-
|
63
|
-
should "call after unfollow hook" do
|
64
|
-
@klass.after_follow :after_unfollow
|
65
|
-
@klass.expects(:after_unfollow).once
|
66
|
-
@klass.follow!(@follower1, @followable1)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
context "#unfollow!" do
|
71
|
-
setup do
|
72
|
-
@klass.follow!(@follower1, @followable1)
|
73
|
-
end
|
74
|
-
|
75
|
-
should "remove follow records" do
|
76
|
-
@klass.unfollow!(@follower1, @followable1)
|
77
|
-
assert_empty Socialization.redis.smembers forward_key(@followable1)
|
78
|
-
assert_empty Socialization.redis.smembers backward_key(@follower1)
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
context "#follows?" do
|
83
|
-
should "return true when follow exists" do
|
84
|
-
@klass.follow!(@follower1, @followable1)
|
85
|
-
assert_true @klass.follows?(@follower1, @followable1)
|
86
|
-
end
|
87
|
-
|
88
|
-
should "return false when follow doesn't exist" do
|
89
|
-
assert_false @klass.follows?(@follower1, @followable1)
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
context "#followers" do
|
94
|
-
should "return an array of followers" do
|
95
|
-
follower1 = ImAFollower.create
|
96
|
-
follower2 = ImAFollower.create
|
97
|
-
follower1.follow!(@followable1)
|
98
|
-
follower2.follow!(@followable1)
|
99
|
-
assert_array_similarity [follower1, follower2], @klass.followers(@followable1, follower1.class)
|
100
|
-
end
|
101
|
-
|
102
|
-
should "return an array of follower ids when plucking" do
|
103
|
-
follower1 = ImAFollower.create
|
104
|
-
follower2 = ImAFollower.create
|
105
|
-
follower1.follow!(@followable1)
|
106
|
-
follower2.follow!(@followable1)
|
107
|
-
assert_array_similarity ["#{follower1.id}", "#{follower2.id}"], @klass.followers(@followable1, follower1.class, :pluck => :id)
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
context "#followables" do
|
112
|
-
should "return an array of followables" do
|
113
|
-
followable1 = ImAFollowable.create
|
114
|
-
followable2 = ImAFollowable.create
|
115
|
-
@follower1.follow!(followable1)
|
116
|
-
@follower1.follow!(followable2)
|
117
|
-
|
118
|
-
assert_array_similarity [followable1, followable2], @klass.followables(@follower1, followable1.class)
|
119
|
-
end
|
120
|
-
|
121
|
-
should "return an array of followables ids when plucking" do
|
122
|
-
followable1 = ImAFollowable.create
|
123
|
-
followable2 = ImAFollowable.create
|
124
|
-
@follower1.follow!(followable1)
|
125
|
-
@follower1.follow!(followable2)
|
126
|
-
assert_array_similarity ["#{followable1.id}", "#{followable2.id}"], @klass.followables(@follower1, followable1.class, :pluck => :id)
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
context "#generate_forward_key" do
|
131
|
-
should "return valid key when passed an object" do
|
132
|
-
assert_equal "Followers:#{@followable1.class.name}:#{@followable1.id}", forward_key(@followable1)
|
133
|
-
end
|
134
|
-
|
135
|
-
should "return valid key when passed a String" do
|
136
|
-
assert_equal "Followers:Followable:1", forward_key("Followable:1")
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
context "#generate_backward_key" do
|
141
|
-
should "return valid key when passed an object" do
|
142
|
-
assert_equal "Followables:#{@follower1.class.name}:#{@follower1.id}", backward_key(@follower1)
|
143
|
-
end
|
144
|
-
|
145
|
-
should "return valid key when passed a String" do
|
146
|
-
assert_equal "Followables:Follower:1", backward_key("Follower:1")
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
context "#remove_followers" do
|
151
|
-
should "delete all followers relationships for a followable" do
|
152
|
-
@follower1.follow!(@followable1)
|
153
|
-
@follower2.follow!(@followable1)
|
154
|
-
assert_equal 2, @followable1.followers(@follower1.class).count
|
155
|
-
|
156
|
-
@klass.remove_followers(@followable1)
|
157
|
-
assert_equal 0, @followable1.followers(@follower1.class).count
|
158
|
-
assert_empty Socialization.redis.smembers forward_key(@followable1)
|
159
|
-
assert_empty Socialization.redis.smembers backward_key(@follower1)
|
160
|
-
assert_empty Socialization.redis.smembers backward_key(@follower2)
|
161
|
-
end
|
162
|
-
end
|
163
|
-
|
164
|
-
context "#remove_followables" do
|
165
|
-
should "delete all followables relationships for a follower" do
|
166
|
-
@follower1.follow!(@followable1)
|
167
|
-
@follower1.follow!(@followable2)
|
168
|
-
assert_equal 2, @follower1.followables(@followable1.class).count
|
169
|
-
|
170
|
-
@klass.remove_followables(@follower1)
|
171
|
-
assert_equal 0, @follower1.followables(@followable1.class).count
|
172
|
-
assert_empty Socialization.redis.smembers backward_key(@followable1)
|
173
|
-
assert_empty Socialization.redis.smembers backward_key(@follower2)
|
174
|
-
assert_empty Socialization.redis.smembers forward_key(@follower1)
|
175
|
-
end
|
176
|
-
end
|
177
|
-
|
178
|
-
context "#key_type_to_type_names" do
|
179
|
-
should "return the proper arrays" do
|
180
|
-
assert_equal ['follower', 'followable'], @klass.send(:key_type_to_type_names, Socialization::RedisStores::Follow)
|
181
|
-
assert_equal ['mentioner', 'mentionable'], @klass.send(:key_type_to_type_names, Socialization::RedisStores::Mention)
|
182
|
-
assert_equal ['liker', 'likeable'], @klass.send(:key_type_to_type_names, Socialization::RedisStores::Like)
|
183
|
-
end
|
184
|
-
end
|
185
|
-
end
|
186
|
-
|
187
|
-
# Helpers
|
188
|
-
def assert_match_follower(follow_record, follower)
|
189
|
-
assert follow_record.follower_type == follower.class.to_s && follow_record.follower_id == follower.id
|
190
|
-
end
|
191
|
-
|
192
|
-
def assert_match_followable(follow_record, followable)
|
193
|
-
assert follow_record.followable_type == followable.class.to_s && follow_record.followable_id == followable.id
|
194
|
-
end
|
195
|
-
|
196
|
-
def forward_key(followable)
|
197
|
-
Socialization::RedisStores::Follow.send(:generate_forward_key, followable)
|
198
|
-
end
|
199
|
-
|
200
|
-
def backward_key(follower)
|
201
|
-
Socialization::RedisStores::Follow.send(:generate_backward_key, follower)
|
202
|
-
end
|
203
|
-
end
|