usaidwat 1.4.5 → 1.5.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/Rakefile +7 -0
- data/bin/usaidwat +3 -1
- data/features/timeline.feature +46 -0
- data/lib/usaidwat.rb +1 -0
- data/lib/usaidwat/client.rb +15 -15
- data/lib/usaidwat/commands/timeline.rb +42 -0
- data/lib/usaidwat/formatter.rb +5 -185
- data/lib/usaidwat/formatter/base.rb +39 -0
- data/lib/usaidwat/formatter/comment.rb +92 -0
- data/lib/usaidwat/formatter/count.rb +20 -0
- data/lib/usaidwat/formatter/post.rb +43 -0
- data/lib/usaidwat/formatter/timeline.rb +32 -0
- data/lib/usaidwat/service.rb +30 -46
- data/lib/usaidwat/thing.rb +85 -0
- data/lib/usaidwat/version.rb +6 -1
- data/spec/usaidwat/client_spec.rb +8 -8
- data/spec/usaidwat/formatter_spec.rb +38 -10
- data/spec/usaidwat/service_spec.rb +4 -4
- data/spec/usaidwat/thing_spec.rb +139 -0
- data/spec/usaidwat/version_spec.rb +16 -0
- data/usaidwat.gemspec +1 -2
- metadata +21 -23
- data/lib/usaidwat/ext/snooby.rb +0 -32
@@ -12,8 +12,8 @@ module USaidWat
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
describe
|
16
|
-
let (:user) {
|
15
|
+
describe USaidWat::Thing::User do
|
16
|
+
let (:user) { MockService.new.user("mipadi") }
|
17
17
|
|
18
18
|
describe "#comments" do
|
19
19
|
it "should return an array of comments" do
|
@@ -26,8 +26,8 @@ module USaidWat
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
describe
|
30
|
-
let (:comment) {
|
29
|
+
describe USaidWat::Thing::Comment do
|
30
|
+
let (:comment) { MockService.new.user("mipadi").comments(100).first }
|
31
31
|
|
32
32
|
describe "#subreddit" do
|
33
33
|
it "should return a string denoting what subreddit it belongs to" do
|
@@ -0,0 +1,139 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module USaidWat
|
5
|
+
module Thing
|
6
|
+
describe User do
|
7
|
+
let(:user_data) { JSON.parse(IO.read('features/fixtures/user_mipadi.json')) }
|
8
|
+
let(:comment_data) { JSON.parse(IO.read('features/fixtures/mipadi.json')) }
|
9
|
+
let(:post_data) { JSON.parse(IO.read('features/fixtures/submissions_mipadi.json')) }
|
10
|
+
let(:user) { User.new('mipadi', user_data, comment_data, post_data) }
|
11
|
+
|
12
|
+
describe '#about' do
|
13
|
+
it "should return an object detailing the user's info" do
|
14
|
+
expect(user.about).to be_kind_of(About)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#comments' do
|
19
|
+
it 'returns 100 comments' do
|
20
|
+
expect(user.comments(100).count).to eq(100)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#posts' do
|
25
|
+
it 'returns 25 posts' do
|
26
|
+
expect(user.posts.count).to eq(25)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe About do
|
32
|
+
let(:data) { JSON.parse(IO.read('features/fixtures/user_mipadi.json')) }
|
33
|
+
let(:about) { About.new(data) }
|
34
|
+
|
35
|
+
it "should return the user's creation date" do
|
36
|
+
expected = Time.new(2008, 3, 31, 15, 55, 26, '-07:00')
|
37
|
+
expect(about.created_utc).to eq(expected)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should return the user's link karma" do
|
41
|
+
expect(about.link_karma).to eq(4892)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should return the user's comment karma" do
|
45
|
+
expect(about.comment_karma).to eq(33440)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe Comment do
|
50
|
+
let(:data) { JSON.parse(IO.read('features/fixtures/mipadi.json'))['data']['children'][0] }
|
51
|
+
let(:comment) { Comment.new(data) }
|
52
|
+
|
53
|
+
describe '#subreddit' do
|
54
|
+
it 'should return the name of the subreddit to which the comment belongs' do
|
55
|
+
expect(comment.subreddit).to eq('wikipedia')
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe '#body' do
|
60
|
+
it "should return the comment's body" do
|
61
|
+
expect(comment.body).to eq('Yep. My first experience with a Heisenbug occurred in a C++ program, and disappeared when I tried to print a variable with printf (only to reappear when that call was removed).')
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe '#id' do
|
66
|
+
it "should return the comment's ID" do
|
67
|
+
expect(comment.id).to eq('c79peed')
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe '#link_id' do
|
72
|
+
it "should return the comment's link ID" do
|
73
|
+
expect(comment.link_id).to eq('t3_142t4w')
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe '#link_title' do
|
78
|
+
it "should return the title of the link to which the comment belongs" do
|
79
|
+
expect(comment.link_title).to eq('Heisenbug: a software bug that seems to disappear or alter its behavior when one attempts to study it')
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe '#ups' do
|
84
|
+
it "should return the number of upvotes" do
|
85
|
+
expect(comment.ups).to eq(1)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe '#downs' do
|
90
|
+
it "should return the number of downvotes" do
|
91
|
+
expect(comment.downs).to eq(0)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe '#created_utc' do
|
96
|
+
it "should return the date the comment was written" do
|
97
|
+
expected = Time.new(2012, 12, 1, 12, 14, 28, '-08:00')
|
98
|
+
expect(comment.created_utc).to eq(expected)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe Submission do
|
104
|
+
let(:data) { JSON.parse(IO.read('features/fixtures/submissions_mipadi.json'))['data']['children'][0] }
|
105
|
+
let(:post) { Submission.new(data) }
|
106
|
+
|
107
|
+
describe '#subreddit' do
|
108
|
+
it "should return the post's subreddit" do
|
109
|
+
expect(post.subreddit).to eq('short')
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe '#title' do
|
114
|
+
it "should return the post's title" do
|
115
|
+
expect(post.title).to eq('Science Says Being Short Makes You Depressed')
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe '#permalink' do
|
120
|
+
it "should return the post's permalink" do
|
121
|
+
expect(post.permalink).to eq('/r/short/comments/3pj7rx/science_says_being_short_makes_you_depressed/')
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
describe '#url' do
|
126
|
+
it "should return the post's URL" do
|
127
|
+
expect(post.url).to eq('http://www.vice.com/read/it-sucks-to-be-a-short-guy-511')
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
describe '#created_utc' do
|
132
|
+
it "should return the time the post was created" do
|
133
|
+
expected = Time.new(2015, 10, 20, 12, 36, 37, '-07:00')
|
134
|
+
expect(post.created_utc).to eq(expected)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module USaidWat
|
4
|
+
describe 'commit_hash' do
|
5
|
+
let (:metadata) {{'commit' => 'v1.4.4-4-g11624e0',
|
6
|
+
'commit_hash' => '11624e069842b18860352db00de17e4880315477',
|
7
|
+
'build_date' => Time.new(2016, 9, 27, 11, 15, 5, '-07:00')}}
|
8
|
+
|
9
|
+
it 'should return the first seven characters of the current commit' do
|
10
|
+
expected = '11624e0'
|
11
|
+
allow_any_instance_of(Gem::Specification).to receive(:metadata).and_return(metadata)
|
12
|
+
actual = USaidWat::commit_hash
|
13
|
+
expect(actual).to eq(expected)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/usaidwat.gemspec
CHANGED
@@ -30,9 +30,8 @@ Gem::Specification.new do |gem|
|
|
30
30
|
|
31
31
|
gem.add_runtime_dependency('downterm', '~> 0.1.5')
|
32
32
|
gem.add_runtime_dependency('mercenary', '~> 0.3.5', '!= 0.3.6')
|
33
|
-
gem.add_runtime_dependency('net-http-persistent', '~> 2.5')
|
34
33
|
gem.add_runtime_dependency('rainbow', '~> 2.0')
|
35
|
-
gem.add_runtime_dependency('
|
34
|
+
gem.add_runtime_dependency('requests', '~> 1.0')
|
36
35
|
gem.add_runtime_dependency('sysexits', '~> 1.2')
|
37
36
|
gem.add_runtime_dependency('ttycaca', '~> 1.0')
|
38
37
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: usaidwat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Dippery
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: downterm
|
@@ -44,20 +44,6 @@ dependencies:
|
|
44
44
|
- - "!="
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: 0.3.6
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: net-http-persistent
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
50
|
-
requirements:
|
51
|
-
- - "~>"
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '2.5'
|
54
|
-
type: :runtime
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
requirements:
|
58
|
-
- - "~>"
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: '2.5'
|
61
47
|
- !ruby/object:Gem::Dependency
|
62
48
|
name: rainbow
|
63
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,19 +59,19 @@ dependencies:
|
|
73
59
|
- !ruby/object:Gem::Version
|
74
60
|
version: '2.0'
|
75
61
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
62
|
+
name: requests
|
77
63
|
requirement: !ruby/object:Gem::Requirement
|
78
64
|
requirements:
|
79
65
|
- - "~>"
|
80
66
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
67
|
+
version: '1.0'
|
82
68
|
type: :runtime
|
83
69
|
prerelease: false
|
84
70
|
version_requirements: !ruby/object:Gem::Requirement
|
85
71
|
requirements:
|
86
72
|
- - "~>"
|
87
73
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
74
|
+
version: '1.0'
|
89
75
|
- !ruby/object:Gem::Dependency
|
90
76
|
name: sysexits
|
91
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -214,6 +200,7 @@ files:
|
|
214
200
|
- features/step_definitions/time_steps.rb
|
215
201
|
- features/support/aruba.rb
|
216
202
|
- features/tally.feature
|
203
|
+
- features/timeline.feature
|
217
204
|
- features/user.feature
|
218
205
|
- lib/usaidwat.rb
|
219
206
|
- lib/usaidwat/algo.rb
|
@@ -223,17 +210,23 @@ files:
|
|
223
210
|
- lib/usaidwat/commands/log.rb
|
224
211
|
- lib/usaidwat/commands/posts.rb
|
225
212
|
- lib/usaidwat/commands/tally.rb
|
213
|
+
- lib/usaidwat/commands/timeline.rb
|
226
214
|
- lib/usaidwat/count.rb
|
227
215
|
- lib/usaidwat/either.rb
|
228
216
|
- lib/usaidwat/ext/array.rb
|
229
217
|
- lib/usaidwat/ext/mercenary.rb
|
230
|
-
- lib/usaidwat/ext/snooby.rb
|
231
218
|
- lib/usaidwat/ext/string.rb
|
232
219
|
- lib/usaidwat/ext/time.rb
|
233
220
|
- lib/usaidwat/filter.rb
|
234
221
|
- lib/usaidwat/formatter.rb
|
222
|
+
- lib/usaidwat/formatter/base.rb
|
223
|
+
- lib/usaidwat/formatter/comment.rb
|
224
|
+
- lib/usaidwat/formatter/count.rb
|
225
|
+
- lib/usaidwat/formatter/post.rb
|
226
|
+
- lib/usaidwat/formatter/timeline.rb
|
235
227
|
- lib/usaidwat/pager.rb
|
236
228
|
- lib/usaidwat/service.rb
|
229
|
+
- lib/usaidwat/thing.rb
|
237
230
|
- lib/usaidwat/version.rb
|
238
231
|
- spec/spec_helper.rb
|
239
232
|
- spec/usaidwat/algo_spec.rb
|
@@ -245,15 +238,17 @@ files:
|
|
245
238
|
- spec/usaidwat/formatter_spec.rb
|
246
239
|
- spec/usaidwat/service_spec.rb
|
247
240
|
- spec/usaidwat/string_spec.rb
|
241
|
+
- spec/usaidwat/thing_spec.rb
|
248
242
|
- spec/usaidwat/time_spec.rb
|
243
|
+
- spec/usaidwat/version_spec.rb
|
249
244
|
- usaidwat.gemspec
|
250
245
|
homepage: https://github.com/mdippery/usaidwat
|
251
246
|
licenses:
|
252
247
|
- MIT
|
253
248
|
metadata:
|
254
|
-
build_date: 2016-
|
255
|
-
commit: v1.
|
256
|
-
commit_hash:
|
249
|
+
build_date: 2016-11-02 08:04:29 PDT
|
250
|
+
commit: v1.5.0
|
251
|
+
commit_hash: a3055f2b9c02ef9780c6235ce45c1e4887e7e51a
|
257
252
|
post_install_message:
|
258
253
|
rdoc_options: []
|
259
254
|
require_paths:
|
@@ -290,6 +285,7 @@ test_files:
|
|
290
285
|
- features/step_definitions/time_steps.rb
|
291
286
|
- features/support/aruba.rb
|
292
287
|
- features/tally.feature
|
288
|
+
- features/timeline.feature
|
293
289
|
- features/user.feature
|
294
290
|
- spec/spec_helper.rb
|
295
291
|
- spec/usaidwat/algo_spec.rb
|
@@ -301,4 +297,6 @@ test_files:
|
|
301
297
|
- spec/usaidwat/formatter_spec.rb
|
302
298
|
- spec/usaidwat/service_spec.rb
|
303
299
|
- spec/usaidwat/string_spec.rb
|
300
|
+
- spec/usaidwat/thing_spec.rb
|
304
301
|
- spec/usaidwat/time_spec.rb
|
302
|
+
- spec/usaidwat/version_spec.rb
|
data/lib/usaidwat/ext/snooby.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'snooby'
|
2
|
-
|
3
|
-
module Snooby
|
4
|
-
# Copied from snooby gem so we can fix Paths constant to use Reddit's
|
5
|
-
# https URLs. Ugly solution, but it'll work until snooby is fixed.
|
6
|
-
remove_const(:Paths)
|
7
|
-
paths = {
|
8
|
-
:comment => 'api/comment',
|
9
|
-
:compose => 'api/compose',
|
10
|
-
:delete => 'api/del',
|
11
|
-
:disliked => 'user/%s/disliked.json',
|
12
|
-
:friend => 'api/friend',
|
13
|
-
:hidden => 'user/%s/hidden.json',
|
14
|
-
:liked => 'user/%s/liked.json',
|
15
|
-
:login => 'api/login/%s',
|
16
|
-
:me => 'api/me.json',
|
17
|
-
:post_comments => 'comments/%s.json',
|
18
|
-
:reddit => '.json',
|
19
|
-
:saved => 'saved.json',
|
20
|
-
:subreddit_about => 'r/%s/about.json',
|
21
|
-
:subreddit_comments => 'r/%s/comments.json',
|
22
|
-
:subreddit_posts => 'r/%s.json',
|
23
|
-
:subscribe => 'api/subscribe',
|
24
|
-
:unfriend => 'api/unfriend',
|
25
|
-
:user => 'user/%s',
|
26
|
-
:user_about => 'user/%s/about.json',
|
27
|
-
:user_comments => 'user/%s/comments.json',
|
28
|
-
:user_posts => 'user/%s/submitted.json',
|
29
|
-
:vote => 'api/vote'
|
30
|
-
}
|
31
|
-
Paths = paths.merge(paths) { |k, v| "https://www.reddit.com/#{v}" }
|
32
|
-
end
|