parity_timeline 0.3.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.
@@ -0,0 +1,33 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), %w[.. lib redis_timeline]))
2
+ dir = File.dirname(File.expand_path(__FILE__))
3
+
4
+ #
5
+ # make sure we can run redis
6
+ #
7
+
8
+ if !system("which redis-server")
9
+ puts '', "** can't find `redis-server` in your path"
10
+ puts "** try running `sudo rake install`"
11
+ abort ''
12
+ end
13
+
14
+ #
15
+ # start our own redis when the tests start,
16
+ # kill it when they end
17
+ #
18
+
19
+ at_exit do
20
+ next if $!
21
+
22
+ exit_code = RSpec::Runner.autorun
23
+
24
+ pid = `ps -A -o pid,command | grep [r]edis-test`.split(" ")[0]
25
+ puts "Killing test redis server..."
26
+ `rm -f #{dir}/dump.rdb`
27
+ Process.kill("KILL", pid.to_i)
28
+ exit exit_code
29
+ end
30
+
31
+ puts "Starting redis for testing at localhost:9736..."
32
+ `redis-server #{dir}/redis-test.conf`
33
+ Timeline.redis = 'localhost:9736'
@@ -0,0 +1,12 @@
1
+ require File.join(File.dirname(__FILE__), %w[spec_helper])
2
+
3
+ describe Timeline do
4
+ it("can set a redis instance") { Timeline.should respond_to(:redis=) }
5
+ it("has a namespace, timeline") { Timeline.redis.namespace.should == :timeline }
6
+
7
+ it "sets the namespace through a url-like string" do
8
+ Timeline.redis = 'localhost:9736/namespace'
9
+ Timeline.redis.namespace.should == 'namespace'
10
+ end
11
+ end
12
+
@@ -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: parity_timeline
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2
5
+ platform: ruby
6
+ authors:
7
+ - Felix Clack
8
+ - Shiva Kumar
9
+ - Jimish Jpbanputra
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2015-05-11 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: '3.2'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '3.2'
29
+ - !ruby/object:Gem::Dependency
30
+ name: activemodel
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '3.2'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '3.2'
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