ayadn 3.0 → 4.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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -4
  3. data/CHANGELOG.md +12 -4
  4. data/README.md +2 -5
  5. data/ayadn.gemspec +0 -2
  6. data/doc/01-index.md +0 -3
  7. data/doc/02-install.md +0 -4
  8. data/doc/06-post.md +0 -16
  9. data/doc/{18-contact.md → 16-contact.md} +0 -0
  10. data/doc/{19-examples.md → 17-examples.md} +0 -0
  11. data/doc/18-develop.md +165 -0
  12. data/lib/ayadn/action.rb +206 -396
  13. data/lib/ayadn/alias.rb +1 -1
  14. data/lib/ayadn/annotations.rb +15 -27
  15. data/lib/ayadn/api.rb +39 -28
  16. data/lib/ayadn/app.rb +19 -29
  17. data/lib/ayadn/authorize.rb +22 -13
  18. data/lib/ayadn/blacklist.rb +6 -19
  19. data/lib/ayadn/channel_object.rb +75 -0
  20. data/lib/ayadn/check.rb +19 -11
  21. data/lib/ayadn/cnx.rb +9 -15
  22. data/lib/ayadn/databases.rb +15 -27
  23. data/lib/ayadn/debug.rb +9 -9
  24. data/lib/ayadn/descriptions.rb +1 -99
  25. data/lib/ayadn/diagnostics.rb +16 -15
  26. data/lib/ayadn/endpoints.rb +18 -22
  27. data/lib/ayadn/errors.rb +1 -1
  28. data/lib/ayadn/fileops.rb +12 -12
  29. data/lib/ayadn/filtered_post_object.rb +11 -0
  30. data/lib/ayadn/ids.rb +0 -3
  31. data/lib/ayadn/logs.rb +4 -4
  32. data/lib/ayadn/mark.rb +34 -30
  33. data/lib/ayadn/nicerank.rb +7 -7
  34. data/lib/ayadn/nowplaying.rb +8 -22
  35. data/lib/ayadn/pinboard.rb +8 -12
  36. data/lib/ayadn/post.rb +18 -18
  37. data/lib/ayadn/post_object.rb +118 -0
  38. data/lib/ayadn/preferences_object.rb +290 -0
  39. data/lib/ayadn/profile.rb +2 -2
  40. data/lib/ayadn/scroll.rb +58 -67
  41. data/lib/ayadn/search.rb +22 -15
  42. data/lib/ayadn/set.rb +93 -83
  43. data/lib/ayadn/settings.rb +25 -33
  44. data/lib/ayadn/status.rb +24 -26
  45. data/lib/ayadn/stream.rb +68 -66
  46. data/lib/ayadn/stream_object.rb +56 -0
  47. data/lib/ayadn/switch.rb +2 -2
  48. data/lib/ayadn/user_object.rb +116 -0
  49. data/lib/ayadn/version.rb +1 -1
  50. data/lib/ayadn/view.rb +255 -278
  51. data/lib/ayadn/workers.rb +172 -174
  52. data/spec/integration/action_spec.rb +55 -34
  53. data/spec/mock/ayadn.sqlite +0 -0
  54. data/spec/unit/annotations_spec.rb +54 -41
  55. data/spec/unit/api_spec.rb +78 -7
  56. data/spec/unit/blacklistworkers_spec.rb +92 -20
  57. data/spec/unit/databases_spec.rb +117 -36
  58. data/spec/unit/endpoints_spec.rb +82 -10
  59. data/spec/unit/nicerank_spec.rb +56 -27
  60. data/spec/unit/post_spec.rb +94 -21
  61. data/spec/unit/set_spec.rb +141 -210
  62. data/spec/unit/view_spec.rb +105 -32
  63. data/spec/unit/workers_spec.rb +143 -52
  64. metadata +12 -37
  65. data/doc/16-movie.md +0 -39
  66. data/doc/17-tvshow.md +0 -46
  67. data/lib/ayadn/nowwatching.rb +0 -118
  68. data/lib/ayadn/tvshow.rb +0 -162
@@ -2,89 +2,116 @@ require 'spec_helper'
2
2
  require 'helpers'
3
3
 
4
4
  def init_stubs
5
- Ayadn::Settings.stub(:options).and_return({
6
- colors: {
7
- hashtags: :cyan,
8
- mentions: :red,
9
- username: :green,
10
- id: :blue,
11
- name: :yellow,
12
- source: :blue,
13
- symbols: :green,
14
- index: :blue,
15
- date: :cyan,
16
- link: :magenta,
17
- excerpt: :green
18
- },
19
- timeline: {
20
- directed: 1,
21
- html: 0,
22
- annotations: 1,
23
- source: true,
24
- symbols: true,
25
- name: true,
26
- date: true,
27
- spinner: true,
28
- debug: false
29
- },
30
- formats: {
31
- table: {width: 75},
32
- list: {reverse: true}
33
- },
34
- counts: {
35
- default: 50,
36
- unified: 100,
37
- global: 100,
38
- checkins: 100,
39
- conversations: 50,
40
- photos: 50,
41
- trending: 100,
42
- mentions: 100,
43
- convo: 100,
44
- posts: 100,
45
- messages: 50,
46
- search: 200,
47
- whoreposted: 50,
48
- whostarred: 50,
49
- whatstarred: 100,
50
- files: 100
51
- },
52
- scroll: {
53
- timer: 3
54
- },
55
- movie: {
56
- hashtag: 'nowwatching'
57
- },
58
- tvshow: {
59
- hashtag: 'nowwatching'
60
- },
61
- nicerank: {
62
- threshold: 2.1,
63
- filter: true,
64
- unranked: false
65
- },
66
- backup: {
67
- posts: false,
68
- messages: false,
69
- lists: false
70
- },
71
- marker: {
72
- messages: true
5
+ Ayadn::Settings.stub(:options).and_return(
6
+ Ayadn::Preferences.new(
7
+ {
8
+ timeline: {
9
+ directed: true,
10
+ source: true,
11
+ symbols: true,
12
+ name: true,
13
+ date: true,
14
+ debug: false,
15
+ compact: false
16
+ },
17
+ marker: {
18
+ messages: true
19
+ },
20
+ counts: {
21
+ default: 50,
22
+ unified: 50,
23
+ global: 50,
24
+ checkins: 50,
25
+ conversations: 50,
26
+ photos: 50,
27
+ trending: 50,
28
+ mentions: 50,
29
+ convo: 50,
30
+ posts: 50,
31
+ messages: 20,
32
+ search: 200,
33
+ whoreposted: 20,
34
+ whostarred: 20,
35
+ whatstarred: 100,
36
+ files: 50
37
+ },
38
+ formats: {
39
+ table: {
40
+ width: 75,
41
+ borders: true
42
+ },
43
+ list: {
44
+ reverse: true
45
+ }
46
+ },
47
+ channels: {
48
+ links: true
49
+ },
50
+ colors: {
51
+ id: :blue,
52
+ index: :red,
53
+ username: :green,
54
+ name: :magenta,
55
+ date: :cyan,
56
+ link: :yellow,
57
+ dots: :blue,
58
+ hashtags: :cyan,
59
+ mentions: :red,
60
+ source: :cyan,
61
+ symbols: :green,
62
+ unread: :cyan,
63
+ debug: :red,
64
+ excerpt: :green
65
+ },
66
+ backup: {
67
+ posts: false,
68
+ messages: false,
69
+ lists: false
70
+ },
71
+ scroll: {
72
+ spinner: true,
73
+ timer: 3,
74
+ date: false
75
+ },
76
+ nicerank: {
77
+ threshold: 2.1,
78
+ filter: true,
79
+ unranked: false
80
+ },
81
+ nowplaying: {},
82
+ blacklist: {
83
+ active: true
84
+ }
85
+ }))
86
+ require 'json'
87
+ require 'ostruct'
88
+ obj =
89
+ {
90
+ identity: {
91
+ username: 'test',
92
+ handle: '@test'
93
+ },
94
+ post_max_length: 256,
95
+ message_max_length: 2048,
96
+ version: 'wee',
97
+ paths: {
98
+ db: 'spec/mock/',
99
+ log: 'spec/mock'
100
+ },
101
+ platform: 'shoes',
102
+ ruby: '0',
103
+ locale: 'gibberish'
73
104
  }
74
- })
75
- Ayadn::Settings.stub(:config).and_return({
76
- identity: {
77
- username: 'test',
78
- handle: '@test'
79
- },
80
- post_max_length: 256,
81
- message_max_length: 2048,
82
- version: 'wee',
83
- paths: {
84
- db: 'spec/mock/',
85
- log: 'spec/mock'
86
- }
87
- })
105
+ Ayadn::Settings.stub(:config).and_return(
106
+ JSON.parse(obj.to_json, object_class: OpenStruct)
107
+ )
108
+ global_hash = {
109
+ scrolling: false,
110
+ force: false
111
+ }
112
+ Ayadn::Settings.stub(:global).and_return(
113
+ JSON.parse(global_hash.to_json, object_class: OpenStruct)
114
+ )
88
115
  Ayadn::Settings.stub(:user_token).and_return('XYZ')
89
116
  Ayadn::Settings.stub(:load_config)
90
117
  Ayadn::Settings.stub(:get_token)
@@ -99,59 +126,37 @@ describe Ayadn::SetScroll do
99
126
 
100
127
  describe "#timer" do
101
128
  it "creates a default value" do
102
- expect(Ayadn::Settings.options[:scroll][:timer]).to eq 3
129
+ expect(Ayadn::Settings.options.scroll.timer).to eq 3
103
130
  Ayadn::SetScroll.new.timer('2')
104
- expect(Ayadn::Settings.options[:scroll][:timer]).to eq 2
131
+ expect(Ayadn::Settings.options.scroll.timer).to eq 2
105
132
  Ayadn::SetScroll.new.timer('4.2')
106
- expect(Ayadn::Settings.options[:scroll][:timer]).to eq 4
133
+ expect(Ayadn::Settings.options.scroll.timer).to eq 4
107
134
  Ayadn::SetScroll.new.timer('0')
108
- expect(Ayadn::Settings.options[:scroll][:timer]).to eq 3
135
+ expect(Ayadn::Settings.options.scroll.timer).to eq 3
109
136
  Ayadn::SetScroll.new.timer('johnson')
110
- expect(Ayadn::Settings.options[:scroll][:timer]).to eq 3
137
+ expect(Ayadn::Settings.options.scroll.timer).to eq 3
111
138
  end
112
139
  end
113
140
 
114
141
  describe "#spinner" do
115
142
  it "creates a default value" do
116
143
  Ayadn::SetScroll.new.spinner('true')
117
- expect(Ayadn::Settings.options[:scroll][:spinner]).to eq true
144
+ expect(Ayadn::Settings.options.scroll.spinner).to eq true
118
145
  Ayadn::SetScroll.new.spinner('false')
119
- expect(Ayadn::Settings.options[:scroll][:spinner]).to eq false
146
+ expect(Ayadn::Settings.options.scroll.spinner).to eq false
120
147
  Ayadn::SetScroll.new.spinner('0')
121
- expect(Ayadn::Settings.options[:scroll][:spinner]).to eq false
148
+ expect(Ayadn::Settings.options.scroll.spinner).to eq false
122
149
  end
123
150
  end
124
151
 
125
152
  describe "#date" do
126
153
  it "creates a default value" do
127
154
  Ayadn::SetScroll.new.date('true')
128
- expect(Ayadn::Settings.options[:scroll][:date]).to eq true
155
+ expect(Ayadn::Settings.options.scroll.date).to eq true
129
156
  Ayadn::SetScroll.new.date('false')
130
- expect(Ayadn::Settings.options[:scroll][:date]).to eq false
157
+ expect(Ayadn::Settings.options.scroll.date).to eq false
131
158
  Ayadn::SetScroll.new.date('0')
132
- expect(Ayadn::Settings.options[:scroll][:date]).to eq false
133
- end
134
- end
135
-
136
- after do
137
- File.delete('spec/mock/ayadn.log')
138
- end
139
- end
140
-
141
- describe Ayadn::SetColor do
142
- before do
143
- init_stubs
144
- end
145
-
146
- describe "#" do
147
- it "creates a default value" do
148
- colors_list = %w{red green magenta cyan yellow blue white black}
149
- %w{id index username name date link dots hashtags mentions source symbols debug}.each do |meth|
150
- command = meth.to_sym
151
- color = colors_list.sample
152
- Ayadn::SetColor.new.send(command, color)
153
- expect(Ayadn::Settings.options[:colors][command]).to eq color.to_sym
154
- end
159
+ expect(Ayadn::Settings.options.scroll.date).to eq false
155
160
  end
156
161
  end
157
162
 
@@ -168,22 +173,22 @@ describe Ayadn::SetFormats do
168
173
  describe "#table" do
169
174
  it "creates a default table width" do
170
175
  Ayadn::SetFormats.new.send(:table, ['width', '80'])
171
- expect(Ayadn::Settings.options[:formats][:table][:width]).to eq 80
176
+ expect(Ayadn::Settings.options.formats.table.width).to eq 80
172
177
  end
173
178
  it "creates a default table width" do
174
179
  Ayadn::SetFormats.new.send(:table, ['width', '33'])
175
- expect(Ayadn::Settings.options[:formats][:table][:width]).to eq 75
180
+ expect(Ayadn::Settings.options.formats.table.width).to eq 75
176
181
  end
177
182
  it "creates a default table width" do
178
183
  Ayadn::SetFormats.new.send(:table, ['width', 'yolo'])
179
- expect(Ayadn::Settings.options[:formats][:table][:width]).to eq 75
184
+ expect(Ayadn::Settings.options.formats.table.width).to eq 75
180
185
  end
181
186
  end
182
187
 
183
188
  describe "#list" do
184
189
  it "creates a default list order" do
185
190
  Ayadn::SetFormats.new.send(:list, ['reverse', 'false'])
186
- expect(Ayadn::Settings.options[:formats][:list][:reverse]).to eq false
191
+ expect(Ayadn::Settings.options.formats.list.reverse).to eq false
187
192
  end
188
193
  it "raises an error" do
189
194
  printed = capture_stdout do
@@ -197,48 +202,6 @@ describe Ayadn::SetFormats do
197
202
  end
198
203
  end
199
204
 
200
- describe Ayadn::SetTimeline do
201
- before do
202
- init_stubs
203
- end
204
-
205
- describe "#" do
206
- it "creates a default value" do
207
- %w{directed source symbols name date debug compact}.each do |meth|
208
- command = meth.to_sym
209
- Ayadn::SetTimeline.new.send(command, 'true')
210
- expect(Ayadn::Settings.options[:timeline][command]).to eq true
211
- printed = capture_stdout do
212
- expect(lambda {Ayadn::SetTimeline.new.send(command, 'yolo')}).to raise_error(SystemExit)
213
- end
214
- end
215
- end
216
- end
217
-
218
- after do
219
- File.delete('spec/mock/ayadn.log')
220
- end
221
- end
222
-
223
- describe Ayadn::SetCounts do
224
- before do
225
- init_stubs
226
- end
227
-
228
- describe "#" do
229
- it "creates a default value" do
230
- %w{default unified global checkins conversations photos trending mentions convo posts messages search whoreposted whostarred whatstarred files}.each do |meth|
231
- command = meth.to_sym
232
- Ayadn::SetCounts.new.send(command, '199')
233
- expect(Ayadn::Settings.options[:counts][command]).to eq 199
234
- printed = capture_stdout do
235
- Ayadn::SetCounts.new.send(command, '333')
236
- end
237
- end
238
- end
239
- end
240
- end
241
-
242
205
  describe Ayadn::SetMarker do
243
206
  before do
244
207
  init_stubs
@@ -246,9 +209,9 @@ describe Ayadn::SetMarker do
246
209
 
247
210
  describe "#messages" do
248
211
  it "creates a default value" do
249
- expect(Ayadn::Settings.options[:marker][:messages]).to eq true
212
+ expect(Ayadn::Settings.options.marker.messages).to eq true
250
213
  Ayadn::SetMarker.new.messages('0')
251
- expect(Ayadn::Settings.options[:marker][:messages]).to eq false
214
+ expect(Ayadn::Settings.options.marker.messages).to eq false
252
215
  end
253
216
  end
254
217
 
@@ -264,23 +227,23 @@ describe Ayadn::SetBackup do
264
227
 
265
228
  describe "#posts" do
266
229
  it "creates a default value" do
267
- expect(Ayadn::Settings.options[:backup][:posts]).to eq false
230
+ expect(Ayadn::Settings.options.backup.posts).to eq false
268
231
  Ayadn::SetBackup.new.posts('1')
269
- expect(Ayadn::Settings.options[:backup][:posts]).to eq true
232
+ expect(Ayadn::Settings.options.backup.posts).to eq true
270
233
  end
271
234
  end
272
235
  describe "#messages" do
273
236
  it "creates a default value" do
274
- expect(Ayadn::Settings.options[:backup][:messages]).to eq false
237
+ expect(Ayadn::Settings.options.backup.messages).to eq false
275
238
  Ayadn::SetBackup.new.messages('True')
276
- expect(Ayadn::Settings.options[:backup][:messages]).to eq true
239
+ expect(Ayadn::Settings.options.backup.messages).to eq true
277
240
  end
278
241
  end
279
242
  describe "#lists" do
280
243
  it "creates a default value" do
281
- expect(Ayadn::Settings.options[:backup][:lists]).to eq false
244
+ expect(Ayadn::Settings.options.backup.lists).to eq false
282
245
  Ayadn::SetBackup.new.lists('YES')
283
- expect(Ayadn::Settings.options[:backup][:lists]).to eq true
246
+ expect(Ayadn::Settings.options.backup.lists).to eq true
284
247
  end
285
248
  end
286
249
 
@@ -300,58 +263,26 @@ describe Ayadn::SetBackup do
300
263
  end
301
264
  end
302
265
 
303
- describe Ayadn::SetMovie do
304
- before do
305
- init_stubs
306
- end
307
- describe "#hashtag" do
308
- it "creates a new hashtag default" do
309
- expect(Ayadn::Settings.options[:movie][:hashtag]).to eq 'nowwatching'
310
- Ayadn::SetMovie.new.hashtag('yolo')
311
- expect(Ayadn::Settings.options[:movie][:hashtag]).to eq 'yolo'
312
- end
313
- end
314
- after do
315
- File.delete('spec/mock/ayadn.log')
316
- end
317
- end
318
-
319
- describe Ayadn::SetTVShow do
320
- before do
321
- init_stubs
322
- end
323
- describe "#hashtag" do
324
- it "creates a new hashtag default" do
325
- expect(Ayadn::Settings.options[:tvshow][:hashtag]).to eq 'nowwatching'
326
- Ayadn::SetTVShow.new.hashtag('yolo')
327
- expect(Ayadn::Settings.options[:tvshow][:hashtag]).to eq 'yolo'
328
- end
329
- end
330
- after do
331
- File.delete('spec/mock/ayadn.log')
332
- end
333
- end
334
-
335
266
  describe Ayadn::SetNiceRank do
336
267
  before do
337
268
  init_stubs
338
269
  end
339
270
  describe "#threshold" do
340
271
  it "creates a new threshold default" do
341
- expect(Ayadn::Settings.options[:nicerank][:threshold]).to eq 2.1
272
+ expect(Ayadn::Settings.options.nicerank.threshold).to eq 2.1
342
273
  Ayadn::SetNiceRank.new.threshold('3')
343
- expect(Ayadn::Settings.options[:nicerank][:threshold]).to eq 3
274
+ expect(Ayadn::Settings.options.nicerank.threshold).to eq 3
344
275
  Ayadn::SetNiceRank.new.threshold('3.2')
345
- expect(Ayadn::Settings.options[:nicerank][:threshold]).to eq 3.2
276
+ expect(Ayadn::Settings.options.nicerank.threshold).to eq 3.2
346
277
  end
347
278
  end
348
279
  describe "#filter" do
349
280
  it "creates a new filter default" do
350
- expect(Ayadn::Settings.options[:nicerank][:filter]).to eq true
281
+ expect(Ayadn::Settings.options.nicerank.filter).to eq true
351
282
  Ayadn::SetNiceRank.new.filter('false')
352
- expect(Ayadn::Settings.options[:nicerank][:filter]).to eq false
283
+ expect(Ayadn::Settings.options.nicerank.filter).to eq false
353
284
  Ayadn::SetNiceRank.new.filter('1')
354
- expect(Ayadn::Settings.options[:nicerank][:filter]).to eq true
285
+ expect(Ayadn::Settings.options.nicerank.filter).to eq true
355
286
  printed = capture_stdout do
356
287
  expect(lambda {Ayadn::SetNiceRank.new.filter('6')}).to raise_error(SystemExit)
357
288
  end
@@ -359,11 +290,11 @@ describe Ayadn::SetNiceRank do
359
290
  end
360
291
  describe "#unranked" do
361
292
  it "creates a new unranked default" do
362
- expect(Ayadn::Settings.options[:nicerank][:unranked]).to eq false
293
+ expect(Ayadn::Settings.options.nicerank.unranked).to eq false
363
294
  Ayadn::SetNiceRank.new.unranked('true')
364
- expect(Ayadn::Settings.options[:nicerank][:unranked]).to eq true
295
+ expect(Ayadn::Settings.options.nicerank.unranked).to eq true
365
296
  Ayadn::SetNiceRank.new.unranked('0')
366
- expect(Ayadn::Settings.options[:nicerank][:unranked]).to eq false
297
+ expect(Ayadn::Settings.options.nicerank.unranked).to eq false
367
298
  printed = capture_stdout do
368
299
  expect(lambda {Ayadn::SetNiceRank.new.unranked('yolo')}).to raise_error(SystemExit)
369
300
  end