paritytimeline 0.4
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 +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +152 -0
- data/Rakefile +38 -0
- data/lib/redis_timeline.rb +21 -0
- data/lib/tasks/timeline_tasks.rake +4 -0
- data/lib/timeline/activity.rb +11 -0
- data/lib/timeline/actor.rb +36 -0
- data/lib/timeline/config.rb +42 -0
- data/lib/timeline/controller_helper.rb +153 -0
- data/lib/timeline/helpers.rb +23 -0
- data/lib/timeline/notification_helper.rb +98 -0
- data/lib/timeline/track.rb +116 -0
- data/lib/timeline/untitled.txt +9 -0
- data/lib/timeline/version.rb +3 -0
- data/spec/activity_spec.rb +12 -0
- data/spec/actor_spec.rb +23 -0
- data/spec/redis-test.conf +598 -0
- data/spec/spec_helper.rb +33 -0
- data/spec/timeline_spec.rb +12 -0
- data/spec/track_spec.rb +139 -0
- metadata +198 -0
data/spec/track_spec.rb
ADDED
@@ -0,0 +1,139 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[spec_helper])
|
2
|
+
|
3
|
+
require 'active_model'
|
4
|
+
|
5
|
+
class Post
|
6
|
+
extend ActiveModel::Callbacks
|
7
|
+
|
8
|
+
define_model_callbacks :create
|
9
|
+
attr_accessor :id, :to_param, :creator_id, :name
|
10
|
+
|
11
|
+
include Timeline::Track
|
12
|
+
track :new_post
|
13
|
+
|
14
|
+
def initialize(options={})
|
15
|
+
@creator_id = options.delete :creator_id
|
16
|
+
@name = options.delete :name
|
17
|
+
end
|
18
|
+
|
19
|
+
def save
|
20
|
+
run_callbacks :create
|
21
|
+
true
|
22
|
+
end
|
23
|
+
|
24
|
+
def creator
|
25
|
+
User.find(creator_id)
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_s
|
29
|
+
name
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class Comment
|
34
|
+
extend ActiveModel::Callbacks
|
35
|
+
|
36
|
+
define_model_callbacks :create
|
37
|
+
attr_accessor :id, :creator_id, :body
|
38
|
+
|
39
|
+
include Timeline::Track
|
40
|
+
|
41
|
+
track :new_comment, object: [:post_name, :post_id, :body], mentionable: :body
|
42
|
+
|
43
|
+
def initialize(options={})
|
44
|
+
@creator_id = options.delete :creator_id
|
45
|
+
@body = options.delete :body
|
46
|
+
end
|
47
|
+
|
48
|
+
def save
|
49
|
+
run_callbacks :create
|
50
|
+
true
|
51
|
+
end
|
52
|
+
|
53
|
+
def post_id
|
54
|
+
1
|
55
|
+
end
|
56
|
+
|
57
|
+
def post_name
|
58
|
+
"My Post"
|
59
|
+
end
|
60
|
+
|
61
|
+
def creator
|
62
|
+
User.find(creator_id)
|
63
|
+
end
|
64
|
+
|
65
|
+
def to_s
|
66
|
+
"Comment"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
class User
|
71
|
+
include Timeline::Actor
|
72
|
+
attr_accessor :id, :to_param, :username
|
73
|
+
|
74
|
+
def initialize(options={})
|
75
|
+
@id = options.delete :id
|
76
|
+
@username = options.delete :username
|
77
|
+
end
|
78
|
+
|
79
|
+
class << self
|
80
|
+
def find user_id
|
81
|
+
User.new(id: user_id)
|
82
|
+
end
|
83
|
+
|
84
|
+
def find_by_username username
|
85
|
+
User.new(username: username)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe Timeline::Track do
|
91
|
+
let(:creator) { User.new(id: 1, username: "first_user") }
|
92
|
+
let(:post) { Post.new(creator_id: creator.id, name: "New post") }
|
93
|
+
let(:comment) { Comment.new(creator_id: creator.id, id: 1) }
|
94
|
+
|
95
|
+
describe "included in an ActiveModel-compliant class" do
|
96
|
+
it "tracks on create by default" do
|
97
|
+
post.should_receive(:track_new_post_after_create)
|
98
|
+
post.save
|
99
|
+
end
|
100
|
+
|
101
|
+
it "uses the creator as the actor by default" do
|
102
|
+
post.should_receive(:creator).and_return(mock("User", id: 1, to_param: "1", followers: []))
|
103
|
+
post.save
|
104
|
+
end
|
105
|
+
|
106
|
+
it "adds the activity to the global timeline set" do
|
107
|
+
post.save
|
108
|
+
creator.timeline(:global).last.should be_kind_of(Timeline::Activity)
|
109
|
+
end
|
110
|
+
|
111
|
+
it "adds the activity to the actor's timeline" do
|
112
|
+
post.save
|
113
|
+
creator.timeline.last.should be_kind_of(Timeline::Activity)
|
114
|
+
end
|
115
|
+
|
116
|
+
it "cc's the actor's followers by default" do
|
117
|
+
follower = User.new(id: 2)
|
118
|
+
User.any_instance.should_receive(:followers).and_return([follower])
|
119
|
+
post.save
|
120
|
+
follower.timeline.last.verb.should == "new_post"
|
121
|
+
follower.timeline.last.actor.id.should == 1
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
describe "with extra_fields" do
|
126
|
+
it "stores the extra fields in the timeline" do
|
127
|
+
comment.save
|
128
|
+
creator.timeline.first.object.should respond_to :post_id
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
describe "tracking mentions" do
|
133
|
+
it "adds to a user's mentions timeline" do
|
134
|
+
User.stub(:find_by_username).and_return(creator)
|
135
|
+
Comment.new(creator_id: creator.id, body: "@first_user should see this").save
|
136
|
+
creator.timeline(:mentions).first.object.body.should == "@first_user should see this"
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
metadata
ADDED
@@ -0,0 +1,198 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: paritytimeline
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.4'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Felix Clack
|
8
|
+
- Shiva Kumar
|
9
|
+
- Jimish Jobanputra
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2015-08-10 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: activesupport
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - "~>"
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 4.0.4
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - "~>"
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: 4.0.4
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: activemodel
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - "~>"
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 4.0.4
|
36
|
+
type: :runtime
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 4.0.4
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: multi_json
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
type: :runtime
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: rake
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
type: :runtime
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: redis
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
type: :runtime
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: hashie
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
type: :runtime
|
93
|
+
prerelease: false
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
name: redis-namespace
|
101
|
+
requirement: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
type: :runtime
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: sqlite3
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
type: :development
|
121
|
+
prerelease: false
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - ">="
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
127
|
+
- !ruby/object:Gem::Dependency
|
128
|
+
name: rspec
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - ">="
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
141
|
+
description: ''
|
142
|
+
email:
|
143
|
+
- felixclack@gmail.com
|
144
|
+
- jimish@desidime.com
|
145
|
+
executables: []
|
146
|
+
extensions: []
|
147
|
+
extra_rdoc_files: []
|
148
|
+
files:
|
149
|
+
- MIT-LICENSE
|
150
|
+
- README.md
|
151
|
+
- Rakefile
|
152
|
+
- lib/redis_timeline.rb
|
153
|
+
- lib/tasks/timeline_tasks.rake
|
154
|
+
- lib/timeline/activity.rb
|
155
|
+
- lib/timeline/actor.rb
|
156
|
+
- lib/timeline/config.rb
|
157
|
+
- lib/timeline/controller_helper.rb
|
158
|
+
- lib/timeline/helpers.rb
|
159
|
+
- lib/timeline/notification_helper.rb
|
160
|
+
- lib/timeline/track.rb
|
161
|
+
- lib/timeline/untitled.txt
|
162
|
+
- lib/timeline/version.rb
|
163
|
+
- spec/activity_spec.rb
|
164
|
+
- spec/actor_spec.rb
|
165
|
+
- spec/redis-test.conf
|
166
|
+
- spec/spec_helper.rb
|
167
|
+
- spec/timeline_spec.rb
|
168
|
+
- spec/track_spec.rb
|
169
|
+
homepage: http://felixclack.github.com/redis-timeline
|
170
|
+
licenses: []
|
171
|
+
metadata: {}
|
172
|
+
post_install_message:
|
173
|
+
rdoc_options: []
|
174
|
+
require_paths:
|
175
|
+
- lib
|
176
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
|
+
requirements:
|
183
|
+
- - ">="
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
version: '0'
|
186
|
+
requirements: []
|
187
|
+
rubyforge_project:
|
188
|
+
rubygems_version: 2.2.1
|
189
|
+
signing_key:
|
190
|
+
specification_version: 4
|
191
|
+
summary: Redis backed timeline for your activity feeds.
|
192
|
+
test_files:
|
193
|
+
- spec/activity_spec.rb
|
194
|
+
- spec/actor_spec.rb
|
195
|
+
- spec/redis-test.conf
|
196
|
+
- spec/spec_helper.rb
|
197
|
+
- spec/timeline_spec.rb
|
198
|
+
- spec/track_spec.rb
|