automatic 13.1.0 → 13.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.
- data/README.md +1 -1
- data/VERSION +1 -1
- data/assets/siteinfo/items_all.json +52139 -0
- data/automatic.gemspec +16 -5
- data/bin/automatic +2 -2
- data/bin/automatic-config +8 -2
- data/doc/ChangeLog +19 -0
- data/doc/PLUGINS +79 -18
- data/doc/PLUGINS.ja +79 -17
- data/doc/README +10 -15
- data/doc/README.ja +10 -15
- data/lib/automatic.rb +2 -2
- data/plugins/filter/full_feed.rb +76 -0
- data/plugins/filter/ignore.rb +4 -12
- data/plugins/filter/{reverse.rb → sort.rb} +12 -6
- data/plugins/publish/instapaper.rb +77 -0
- data/plugins/store/target_link.rb +6 -2
- data/plugins/subscription/feed.rb +6 -2
- data/plugins/subscription/google_reader_star.rb +63 -0
- data/plugins/subscription/link.rb +6 -2
- data/plugins/subscription/tumblr.rb +14 -10
- data/plugins/subscription/twitter.rb +6 -2
- data/spec/lib/automatic_spec.rb +2 -2
- data/spec/plugins/filter/full_feed_spec.rb +48 -0
- data/spec/plugins/filter/ignore_spec.rb +184 -15
- data/spec/plugins/filter/sort_spec.rb +189 -0
- data/spec/plugins/publish/instapaper_spec.rb +56 -0
- data/spec/plugins/store/target_link_spec.rb +17 -1
- data/spec/plugins/subscription/feed_spec.rb +28 -1
- data/spec/plugins/subscription/google_reader_star_spec.rb +45 -0
- data/spec/plugins/subscription/link_spec.rb +29 -2
- data/spec/plugins/subscription/tumblr_spec.rb +17 -2
- data/spec/plugins/subscription/twitter_spec.rb +29 -2
- data/test/integration/test_absoluteurl.yml +25 -0
- data/test/integration/test_fulltext.yml +7 -1
- data/test/integration/test_googlestar.yml +19 -0
- data/test/integration/test_image2local.yml +4 -1
- data/test/integration/{test_reverse.yml → test_instapaper.yml} +9 -2
- data/test/integration/test_link2local.yml +34 -0
- data/test/integration/test_sort.yml +36 -0
- data/test/integration/test_tumblr2local.yml +16 -4
- metadata +16 -5
- data/spec/plugins/filter/reverse_spec.rb +0 -54
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
# Name:: Automatic::Plugin::Filter::Ignore
|
3
3
|
# Author:: 774 <http://id774.net>
|
4
|
-
# Updated::
|
4
|
+
# Updated:: Jan 19, 2013
|
5
5
|
# Copyright:: 774 Copyright (c) 2012
|
6
6
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
7
7
|
|
@@ -10,10 +10,10 @@ require File.expand_path(File.dirname(__FILE__) + '../../../spec_helper')
|
|
10
10
|
require 'filter/ignore'
|
11
11
|
|
12
12
|
describe Automatic::Plugin::FilterIgnore do
|
13
|
-
context "with exclusion by
|
13
|
+
context "with exclusion by links" do
|
14
14
|
subject {
|
15
15
|
Automatic::Plugin::FilterIgnore.new({
|
16
|
-
'
|
16
|
+
'link' => ["comment"],
|
17
17
|
},
|
18
18
|
AutomaticSpec.generate_pipeline {
|
19
19
|
feed { item "http://github.com" }
|
@@ -26,26 +26,26 @@ describe Automatic::Plugin::FilterIgnore do
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
context "with exclusion by
|
29
|
+
context "with exclusion by links" do
|
30
30
|
subject {
|
31
31
|
Automatic::Plugin::FilterIgnore.new({
|
32
|
-
'
|
32
|
+
'link' => ["comment"],
|
33
33
|
},
|
34
34
|
AutomaticSpec.generate_pipeline {
|
35
35
|
feed { item "http://github.com" }
|
36
|
-
feed { item "http://google.com" }
|
36
|
+
feed { item "http://google.com/comment" }
|
37
37
|
})
|
38
38
|
}
|
39
39
|
|
40
40
|
describe "#run" do
|
41
|
-
its(:run) { should have(
|
41
|
+
its(:run) { should have(1).feeds }
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
context "with exclusion by
|
45
|
+
context "with exclusion by links" do
|
46
46
|
subject {
|
47
47
|
Automatic::Plugin::FilterIgnore.new({
|
48
|
-
'
|
48
|
+
'link' => ["hoge"],
|
49
49
|
},
|
50
50
|
AutomaticSpec.generate_pipeline {
|
51
51
|
feed { item "http://github.com" }
|
@@ -58,23 +58,23 @@ describe Automatic::Plugin::FilterIgnore do
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
-
context "with exclusion by
|
61
|
+
context "with exclusion by links" do
|
62
62
|
subject {
|
63
63
|
Automatic::Plugin::FilterIgnore.new({
|
64
|
-
'
|
64
|
+
'link' => ["hoge"],
|
65
65
|
},
|
66
66
|
AutomaticSpec.generate_pipeline {
|
67
|
-
feed { item "http://github.com" }
|
67
|
+
feed { item "http://github.com/hoge" }
|
68
68
|
feed { item "http://google.com" }
|
69
69
|
})
|
70
70
|
}
|
71
71
|
|
72
72
|
describe "#run" do
|
73
|
-
its(:run) { should have(
|
73
|
+
its(:run) { should have(1).feeds }
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
|
-
context "with exclusion by
|
77
|
+
context "with exclusion by links" do
|
78
78
|
subject {
|
79
79
|
Automatic::Plugin::FilterIgnore.new({
|
80
80
|
'link' => ["github"],
|
@@ -90,7 +90,7 @@ describe Automatic::Plugin::FilterIgnore do
|
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
93
|
-
context "with exclusion by
|
93
|
+
context "with exclusion by links" do
|
94
94
|
subject {
|
95
95
|
Automatic::Plugin::FilterIgnore.new({
|
96
96
|
'link' => [""],
|
@@ -106,4 +106,173 @@ describe Automatic::Plugin::FilterIgnore do
|
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
109
|
+
context "with exclusion by description" do
|
110
|
+
subject {
|
111
|
+
Automatic::Plugin::FilterIgnore.new({
|
112
|
+
'description' => ["comment"],
|
113
|
+
},
|
114
|
+
AutomaticSpec.generate_pipeline {
|
115
|
+
feed { item "http://github.com" }
|
116
|
+
feed { item "http://google.com" }
|
117
|
+
})
|
118
|
+
}
|
119
|
+
|
120
|
+
describe "#run" do
|
121
|
+
its(:run) { should have(2).feeds }
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
context "with exclusion by description" do
|
126
|
+
subject {
|
127
|
+
Automatic::Plugin::FilterIgnore.new({
|
128
|
+
'description' => [""],
|
129
|
+
},
|
130
|
+
AutomaticSpec.generate_pipeline {
|
131
|
+
feed { item "http://github.com" }
|
132
|
+
feed { item "http://google.com" }
|
133
|
+
})
|
134
|
+
}
|
135
|
+
|
136
|
+
describe "#run" do
|
137
|
+
its(:run) { should have(0).feeds }
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
context "with exclusion by description" do
|
142
|
+
subject {
|
143
|
+
Automatic::Plugin::FilterIgnore.new({
|
144
|
+
'description' => ["bbb"],
|
145
|
+
},
|
146
|
+
AutomaticSpec.generate_pipeline {
|
147
|
+
feed {
|
148
|
+
item "http://hogefuga.com", "",
|
149
|
+
"aaabbbccc"
|
150
|
+
}
|
151
|
+
feed {
|
152
|
+
item "http://aaabbbccc.com", "",
|
153
|
+
"hogefugahoge"
|
154
|
+
}
|
155
|
+
feed {
|
156
|
+
item "http://aaabbbccc.com", "",
|
157
|
+
"aaaccc"
|
158
|
+
}
|
159
|
+
feed {
|
160
|
+
item "http://aaaccc.com", "",
|
161
|
+
"aaabbbccc"
|
162
|
+
}
|
163
|
+
}
|
164
|
+
)}
|
165
|
+
|
166
|
+
describe "#run" do
|
167
|
+
its(:run) { should have(2).feeds }
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
context "with exclusion by description" do
|
172
|
+
subject {
|
173
|
+
Automatic::Plugin::FilterIgnore.new({
|
174
|
+
'description' => ["aaaa"],
|
175
|
+
},
|
176
|
+
AutomaticSpec.generate_pipeline {
|
177
|
+
feed {
|
178
|
+
item "http://hogefuga.com", "",
|
179
|
+
"aaaabbbccc"
|
180
|
+
}
|
181
|
+
feed {
|
182
|
+
item "http://aaaabbbccc.com", "",
|
183
|
+
"hogefugahoge"
|
184
|
+
}
|
185
|
+
feed {
|
186
|
+
item "http://aaabbbccc.com", "",
|
187
|
+
"aaaaaaaaaacccdd"
|
188
|
+
}
|
189
|
+
feed {
|
190
|
+
item "http://aaaaccc.com", "",
|
191
|
+
"aabbbccc"
|
192
|
+
}
|
193
|
+
feed {
|
194
|
+
item "http://aaaaccc.com", "",
|
195
|
+
"aabbbcccdd"
|
196
|
+
}
|
197
|
+
}
|
198
|
+
)}
|
199
|
+
|
200
|
+
describe "#run" do
|
201
|
+
its(:run) { should have(3).feeds }
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
context "with item base exclusion by links" do
|
206
|
+
subject {
|
207
|
+
Automatic::Plugin::FilterIgnore.new({
|
208
|
+
'link' => ["dddd"],
|
209
|
+
},
|
210
|
+
AutomaticSpec.generate_pipeline {
|
211
|
+
feed {
|
212
|
+
item "http://hogefuga.com", "",
|
213
|
+
"aaaabbbccc"
|
214
|
+
item "http://hogefuga.com", "",
|
215
|
+
"aaaabbbcccdddd"
|
216
|
+
}
|
217
|
+
feed {
|
218
|
+
item "http://aaaabbbccc.com", "",
|
219
|
+
"hogefugahoge"
|
220
|
+
}
|
221
|
+
feed {
|
222
|
+
item "http://aaabbbcccdddd.com", "",
|
223
|
+
"aaaaaaaaaacccdd"
|
224
|
+
}
|
225
|
+
feed {
|
226
|
+
item "http://aaaaccc.com", "",
|
227
|
+
"aabbbccc"
|
228
|
+
item "http://aabbcccdddd.com", "",
|
229
|
+
"aabbbcccddd"
|
230
|
+
}
|
231
|
+
feed {
|
232
|
+
item "http://cccdddd.com", "",
|
233
|
+
"aabbbcccdd"
|
234
|
+
}
|
235
|
+
}
|
236
|
+
)}
|
237
|
+
|
238
|
+
describe "#run" do
|
239
|
+
its(:run) { should have(3).feeds }
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
context "with item base exclusion by description" do
|
244
|
+
subject {
|
245
|
+
Automatic::Plugin::FilterIgnore.new({
|
246
|
+
'description' => ["aaaa"],
|
247
|
+
},
|
248
|
+
AutomaticSpec.generate_pipeline {
|
249
|
+
feed {
|
250
|
+
item "http://hogefuga.com", "",
|
251
|
+
"aaaabbbccc"
|
252
|
+
}
|
253
|
+
feed {
|
254
|
+
item "http://aaaabbbccc.com", "",
|
255
|
+
"hogefugahoge"
|
256
|
+
}
|
257
|
+
feed {
|
258
|
+
item "http://aaabbbccc.com", "",
|
259
|
+
"aaaaaaaaaacccdd"
|
260
|
+
}
|
261
|
+
feed {
|
262
|
+
item "http://aaccc.com", "",
|
263
|
+
"aaaabbbccc"
|
264
|
+
item "http://aabbccc.com", "",
|
265
|
+
"aabbbccc"
|
266
|
+
}
|
267
|
+
feed {
|
268
|
+
item "http://cccddd.com", "",
|
269
|
+
"aabbbcccdd"
|
270
|
+
}
|
271
|
+
}
|
272
|
+
)}
|
273
|
+
|
274
|
+
describe "#run" do
|
275
|
+
its(:run) { should have(3).feeds }
|
276
|
+
end
|
277
|
+
end
|
109
278
|
end
|
@@ -0,0 +1,189 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Name:: Automatic::Plugin::Filter::Sort
|
3
|
+
# Author:: 774 <http://id774.net>
|
4
|
+
# Created:: Mar 23, 2012
|
5
|
+
# Updated:: Jan 23, 2013
|
6
|
+
# Copyright:: 774 Copyright (c) 2012
|
7
|
+
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
8
|
+
|
9
|
+
require File.expand_path(File.dirname(__FILE__) + '../../../spec_helper')
|
10
|
+
|
11
|
+
require 'filter/sort'
|
12
|
+
|
13
|
+
describe Automatic::Plugin::FilterSort do
|
14
|
+
context "It should be asc sorted" do
|
15
|
+
subject {
|
16
|
+
Automatic::Plugin::FilterSort.new(
|
17
|
+
{
|
18
|
+
'sort' => "asc"
|
19
|
+
},
|
20
|
+
AutomaticSpec.generate_pipeline {
|
21
|
+
feed {
|
22
|
+
item "http://aaa.png", "",
|
23
|
+
"<img src=\"http://aaa.png\">",
|
24
|
+
"Fri, 23 Mar 2012 00:10:00 +0000"
|
25
|
+
item "http://bbb.png", "",
|
26
|
+
"<img src=\"http://bbb.png\">",
|
27
|
+
"Sun, 25 Mar 2012 01:05:00 +0000"
|
28
|
+
item "http://ccc.png", "",
|
29
|
+
"<img src=\"http://ccc.png\">",
|
30
|
+
"Thu, 22 Mar 2012 00:15:00 +0000"
|
31
|
+
item "http://ddd.png", "",
|
32
|
+
"<img src=\"http://ddd.png\">",
|
33
|
+
"Fri, 23 Mar 2012 00:00:08 +0000"
|
34
|
+
item "http://eee.png", "",
|
35
|
+
"<img src=\"http://eee.png\">",
|
36
|
+
"Fri, 23 Nov 2012 00:09:00 +0000"
|
37
|
+
}})}
|
38
|
+
|
39
|
+
describe "#run" do
|
40
|
+
its(:run) { should have(1).feeds }
|
41
|
+
|
42
|
+
specify {
|
43
|
+
subject.run
|
44
|
+
subject.instance_variable_get(:@pipeline)[0].items[0].link.
|
45
|
+
should == "http://ccc.png"
|
46
|
+
subject.instance_variable_get(:@pipeline)[0].items[1].link.
|
47
|
+
should == "http://ddd.png"
|
48
|
+
subject.instance_variable_get(:@pipeline)[0].items[2].link.
|
49
|
+
should == "http://aaa.png"
|
50
|
+
subject.instance_variable_get(:@pipeline)[0].items[3].link.
|
51
|
+
should == "http://bbb.png"
|
52
|
+
subject.instance_variable_get(:@pipeline)[0].items[4].link.
|
53
|
+
should == "http://eee.png"
|
54
|
+
}
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context "It should be asc sorted" do
|
59
|
+
subject {
|
60
|
+
Automatic::Plugin::FilterSort.new(
|
61
|
+
{
|
62
|
+
'sort' => "asc"
|
63
|
+
},
|
64
|
+
AutomaticSpec.generate_pipeline {
|
65
|
+
feed {
|
66
|
+
item "http://aaa.png", "",
|
67
|
+
"<img src=\"http://aaa.png\">",
|
68
|
+
"Sat, 24 Mar 2012 01:15:00 +0000"
|
69
|
+
item "http://bbb.png", "",
|
70
|
+
"<img src=\"http://bbb.png\">",
|
71
|
+
"Thu, 22 Mar 2012 02:05:00 +0000"
|
72
|
+
item "http://ccc.png", "",
|
73
|
+
"<img src=\"http://ccc.png\">",
|
74
|
+
"Fri, 23 Mar 2012 02:00:00 +0000"
|
75
|
+
item "http://ddd.png", "",
|
76
|
+
"<img src=\"http://ddd.png\">",
|
77
|
+
"Fri, 23 Mar 2012 01:40:00 +0000"
|
78
|
+
item "http://eee.png", "",
|
79
|
+
"<img src=\"http://eee.png\">",
|
80
|
+
"Fri, 23 Nov 2012 00:00:35 +0000"
|
81
|
+
}})}
|
82
|
+
|
83
|
+
describe "#run" do
|
84
|
+
its(:run) { should have(1).feeds }
|
85
|
+
|
86
|
+
specify {
|
87
|
+
subject.run
|
88
|
+
subject.instance_variable_get(:@pipeline)[0].items[0].link.
|
89
|
+
should == "http://bbb.png"
|
90
|
+
subject.instance_variable_get(:@pipeline)[0].items[1].link.
|
91
|
+
should == "http://ddd.png"
|
92
|
+
subject.instance_variable_get(:@pipeline)[0].items[2].link.
|
93
|
+
should == "http://ccc.png"
|
94
|
+
subject.instance_variable_get(:@pipeline)[0].items[3].link.
|
95
|
+
should == "http://aaa.png"
|
96
|
+
subject.instance_variable_get(:@pipeline)[0].items[4].link.
|
97
|
+
should == "http://eee.png"
|
98
|
+
}
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
context "It should be desc sorted" do
|
103
|
+
subject {
|
104
|
+
Automatic::Plugin::FilterSort.new(
|
105
|
+
{
|
106
|
+
'sort' => "desc"
|
107
|
+
},
|
108
|
+
AutomaticSpec.generate_pipeline {
|
109
|
+
feed {
|
110
|
+
item "http://aaa.png", "",
|
111
|
+
"<img src=\"http://aaa.png\">",
|
112
|
+
"Fri, 23 Mar 2012 00:10:00 +0000"
|
113
|
+
item "http://bbb.png", "",
|
114
|
+
"<img src=\"http://bbb.png\">",
|
115
|
+
"Sun, 25 Mar 2012 01:05:00 +0000"
|
116
|
+
item "http://ccc.png", "",
|
117
|
+
"<img src=\"http://ccc.png\">",
|
118
|
+
"Thu, 22 Mar 2012 00:15:00 +0000"
|
119
|
+
item "http://ddd.png", "",
|
120
|
+
"<img src=\"http://ddd.png\">",
|
121
|
+
"Fri, 23 Mar 2012 00:00:08 +0000"
|
122
|
+
item "http://eee.png", "",
|
123
|
+
"<img src=\"http://eee.png\">",
|
124
|
+
"Fri, 23 Nov 2012 00:09:00 +0000"
|
125
|
+
}})}
|
126
|
+
|
127
|
+
describe "#run" do
|
128
|
+
its(:run) { should have(1).feeds }
|
129
|
+
|
130
|
+
specify {
|
131
|
+
subject.run
|
132
|
+
subject.instance_variable_get(:@pipeline)[0].items[4].link.
|
133
|
+
should == "http://ccc.png"
|
134
|
+
subject.instance_variable_get(:@pipeline)[0].items[3].link.
|
135
|
+
should == "http://ddd.png"
|
136
|
+
subject.instance_variable_get(:@pipeline)[0].items[2].link.
|
137
|
+
should == "http://aaa.png"
|
138
|
+
subject.instance_variable_get(:@pipeline)[0].items[1].link.
|
139
|
+
should == "http://bbb.png"
|
140
|
+
subject.instance_variable_get(:@pipeline)[0].items[0].link.
|
141
|
+
should == "http://eee.png"
|
142
|
+
}
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
context "It should be desc sorted" do
|
147
|
+
subject {
|
148
|
+
Automatic::Plugin::FilterSort.new(
|
149
|
+
{
|
150
|
+
'sort' => "desc"
|
151
|
+
},
|
152
|
+
AutomaticSpec.generate_pipeline {
|
153
|
+
feed {
|
154
|
+
item "http://aaa.png", "",
|
155
|
+
"<img src=\"http://aaa.png\">",
|
156
|
+
"Sat, 24 Mar 2012 01:15:00 +0000"
|
157
|
+
item "http://bbb.png", "",
|
158
|
+
"<img src=\"http://bbb.png\">",
|
159
|
+
"Thu, 22 Mar 2012 02:05:00 +0000"
|
160
|
+
item "http://ccc.png", "",
|
161
|
+
"<img src=\"http://ccc.png\">",
|
162
|
+
"Fri, 23 Mar 2012 02:00:00 +0000"
|
163
|
+
item "http://ddd.png", "",
|
164
|
+
"<img src=\"http://ddd.png\">",
|
165
|
+
"Fri, 23 Mar 2012 01:40:00 +0000"
|
166
|
+
item "http://eee.png", "",
|
167
|
+
"<img src=\"http://eee.png\">",
|
168
|
+
"Fri, 23 Nov 2012 00:00:35 +0000"
|
169
|
+
}})}
|
170
|
+
|
171
|
+
describe "#run" do
|
172
|
+
its(:run) { should have(1).feeds }
|
173
|
+
|
174
|
+
specify {
|
175
|
+
subject.run
|
176
|
+
subject.instance_variable_get(:@pipeline)[0].items[4].link.
|
177
|
+
should == "http://bbb.png"
|
178
|
+
subject.instance_variable_get(:@pipeline)[0].items[3].link.
|
179
|
+
should == "http://ddd.png"
|
180
|
+
subject.instance_variable_get(:@pipeline)[0].items[2].link.
|
181
|
+
should == "http://ccc.png"
|
182
|
+
subject.instance_variable_get(:@pipeline)[0].items[1].link.
|
183
|
+
should == "http://aaa.png"
|
184
|
+
subject.instance_variable_get(:@pipeline)[0].items[0].link.
|
185
|
+
should == "http://eee.png"
|
186
|
+
}
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Name:: Automatic::Plugin::Publish::Instapaper
|
3
|
+
# Author:: soramugi <http://soramugi.net>
|
4
|
+
# Created:: Feb 9, 2013
|
5
|
+
# Updated:: Feb 9, 2013
|
6
|
+
# Copyright:: soramugi Copyright (c) 2013
|
7
|
+
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
8
|
+
|
9
|
+
require File.expand_path(File.dirname(__FILE__) + '../../../spec_helper')
|
10
|
+
|
11
|
+
require 'publish/instapaper'
|
12
|
+
|
13
|
+
describe Automatic::Plugin::PublishInstapaper do
|
14
|
+
subject {
|
15
|
+
Automatic::Plugin::PublishInstapaper.new(
|
16
|
+
{"email" => "email@example.com", "password" => "pswd"},
|
17
|
+
AutomaticSpec.generate_pipeline{
|
18
|
+
feed { item "http://github.com" }
|
19
|
+
}
|
20
|
+
)
|
21
|
+
}
|
22
|
+
|
23
|
+
it "should post the link in the feed" do
|
24
|
+
instapaper = mock("instapaper")
|
25
|
+
instapaper.should_receive(:add).with("http://github.com", nil, '')
|
26
|
+
subject.instance_variable_set(:@instapaper, instapaper)
|
27
|
+
subject.run.should have(1).feed
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe Automatic::Plugin::Instapaper do
|
32
|
+
describe "#add" do
|
33
|
+
subject {
|
34
|
+
Automatic::Plugin::Instapaper.new("email@example.com", "pswd")
|
35
|
+
}
|
36
|
+
url = "http://www.google.com"
|
37
|
+
title = "automatic test"
|
38
|
+
description = "automatic test"
|
39
|
+
|
40
|
+
specify {
|
41
|
+
res = stub("res")
|
42
|
+
res.should_receive(:code).and_return("201")
|
43
|
+
|
44
|
+
subject.should_receive(:request).and_return(res)
|
45
|
+
subject.add(url, title, description)
|
46
|
+
}
|
47
|
+
|
48
|
+
specify {
|
49
|
+
res = mock("res")
|
50
|
+
res.should_receive(:code).twice.and_return("403")
|
51
|
+
|
52
|
+
subject.should_receive(:request).and_return(res)
|
53
|
+
subject.add(url, title, description)
|
54
|
+
}
|
55
|
+
end
|
56
|
+
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
# Author:: kzgs
|
4
4
|
# 774 <http://id774.net>
|
5
5
|
# Created:: Mar 4, 2012
|
6
|
-
# Updated::
|
6
|
+
# Updated:: Feb 9, 2013
|
7
7
|
# Copyright:: kzgs Copyright (c) 2012
|
8
8
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
9
9
|
|
@@ -39,4 +39,20 @@ describe Automatic::Plugin::StoreTargetLink do
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
+
it "should error and retry during file download" do
|
43
|
+
Dir.mktmpdir do |dir|
|
44
|
+
instance = Automatic::Plugin::StoreTargetLink.new(
|
45
|
+
{
|
46
|
+
"path" => dir,
|
47
|
+
'retry' => 1,
|
48
|
+
'interval' => 2
|
49
|
+
},
|
50
|
+
AutomaticSpec.generate_pipeline {
|
51
|
+
feed { item "aaa" }
|
52
|
+
}
|
53
|
+
)
|
54
|
+
instance.run.should have(1).feed
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
42
58
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
# Name:: Automatic::Plugin::Subscription::Feed
|
3
3
|
# Author:: 774 <http://id774.net>
|
4
|
-
# Updated::
|
4
|
+
# Updated:: Feb 8, 2013
|
5
5
|
# Copyright:: 774 Copyright (c) 2012
|
6
6
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
7
7
|
|
@@ -41,4 +41,31 @@ describe Automatic::Plugin::SubscriptionFeed do
|
|
41
41
|
|
42
42
|
its(:run) { should have(1).feed }
|
43
43
|
end
|
44
|
+
|
45
|
+
context "with retry to feeds whose valid URL" do
|
46
|
+
subject {
|
47
|
+
Automatic::Plugin::SubscriptionFeed.new(
|
48
|
+
{ 'feeds' => [
|
49
|
+
"https://github.com/id774/automaticruby/commits/master.atom"],
|
50
|
+
'retry' => 3,
|
51
|
+
'interval' => 5
|
52
|
+
}
|
53
|
+
)
|
54
|
+
}
|
55
|
+
|
56
|
+
its(:run) { should have(1).feed }
|
57
|
+
end
|
58
|
+
|
59
|
+
context "with retry to feeds whose invalid URL" do
|
60
|
+
subject {
|
61
|
+
Automatic::Plugin::SubscriptionFeed.new(
|
62
|
+
{ 'feeds' => ["invalid_url"],
|
63
|
+
'retry' => 1,
|
64
|
+
'interval' => 1
|
65
|
+
}
|
66
|
+
)
|
67
|
+
}
|
68
|
+
|
69
|
+
its(:run) { should be_empty }
|
70
|
+
end
|
44
71
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Name:: Automatic::Plugin::Subscription::GoogleReaderStar
|
3
|
+
# Author:: soramugi <http://soramugi.net>
|
4
|
+
# Created:: Feb 10, 2013
|
5
|
+
# Updated:: Feb 10, 2013
|
6
|
+
# Copyright:: soramugi Copyright (c) 2013
|
7
|
+
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
8
|
+
|
9
|
+
require File.expand_path(File.dirname(__FILE__) + '../../../spec_helper')
|
10
|
+
|
11
|
+
require 'subscription/google_reader_star'
|
12
|
+
|
13
|
+
describe Automatic::Plugin::SubscriptionGoogleReaderStar do
|
14
|
+
context "with empty feeds" do
|
15
|
+
subject {
|
16
|
+
Automatic::Plugin::SubscriptionGoogleReaderStar.new(
|
17
|
+
{ 'feeds' => [] }
|
18
|
+
)
|
19
|
+
}
|
20
|
+
|
21
|
+
its(:run) { should be_empty }
|
22
|
+
end
|
23
|
+
|
24
|
+
context "with feeds whose invalid URL" do
|
25
|
+
subject {
|
26
|
+
Automatic::Plugin::SubscriptionGoogleReaderStar.new(
|
27
|
+
{ 'feeds' => ["invalid_url"] }
|
28
|
+
)
|
29
|
+
}
|
30
|
+
|
31
|
+
its(:run) { should be_empty }
|
32
|
+
end
|
33
|
+
|
34
|
+
context "with feeds whose valid URL" do
|
35
|
+
subject {
|
36
|
+
Automatic::Plugin::SubscriptionGoogleReaderStar.new(
|
37
|
+
{ 'feeds' => [
|
38
|
+
"http://www.google.com/reader/public/atom/user%2F00482198897189159802%2Fstate%2Fcom.google%2Fstarred"]
|
39
|
+
}
|
40
|
+
)
|
41
|
+
}
|
42
|
+
|
43
|
+
its(:run) { should have(1).feed }
|
44
|
+
end
|
45
|
+
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# Name:: Automatic::Plugin::Subscription::Link
|
3
3
|
# Author:: 774 <http://id774.net>
|
4
4
|
# Created:: Sep 18, 2012
|
5
|
-
# Updated::
|
5
|
+
# Updated:: Feb 8, 2013
|
6
6
|
# Copyright:: 774 Copyright (c) 2012
|
7
7
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
8
8
|
|
@@ -35,11 +35,38 @@ describe Automatic::Plugin::SubscriptionLink do
|
|
35
35
|
Automatic::Plugin::SubscriptionLink.new(
|
36
36
|
{ 'urls' => [
|
37
37
|
"http://id774.net"],
|
38
|
-
'interval' =>
|
38
|
+
'interval' => 1
|
39
39
|
}
|
40
40
|
)
|
41
41
|
}
|
42
42
|
|
43
43
|
its(:run) { should have(1).item }
|
44
44
|
end
|
45
|
+
|
46
|
+
context "with retry to URLs whose valid URL" do
|
47
|
+
subject {
|
48
|
+
Automatic::Plugin::SubscriptionLink.new(
|
49
|
+
{ 'urls' => [
|
50
|
+
"http://id774.net"],
|
51
|
+
'interval' => 2,
|
52
|
+
'retry' => 3
|
53
|
+
}
|
54
|
+
)
|
55
|
+
}
|
56
|
+
|
57
|
+
its(:run) { should have(1).item }
|
58
|
+
end
|
59
|
+
|
60
|
+
context "with retry to URLs whose invalid URL" do
|
61
|
+
subject {
|
62
|
+
Automatic::Plugin::SubscriptionLink.new(
|
63
|
+
{ 'urls' => ["invalid_url"],
|
64
|
+
'interval' => 1,
|
65
|
+
'retry' => 1
|
66
|
+
}
|
67
|
+
)
|
68
|
+
}
|
69
|
+
|
70
|
+
its(:run) { should be_empty }
|
71
|
+
end
|
45
72
|
end
|