maltese 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +19 -0
  3. data/.gitignore +55 -0
  4. data/.rubocop.yml +1156 -0
  5. data/.travis.yml +26 -0
  6. data/CHANGELOG.md +5 -0
  7. data/Dockerfile +16 -0
  8. data/Gemfile +3 -0
  9. data/Gemfile.lock +128 -0
  10. data/LICENSE.md +21 -0
  11. data/README.md +51 -0
  12. data/bin/maltese +5 -0
  13. data/lib/maltese/cli.rb +30 -0
  14. data/lib/maltese/sitemap.rb +140 -0
  15. data/lib/maltese/utils.rb +87 -0
  16. data/lib/maltese/version.rb +3 -0
  17. data/lib/maltese.rb +8 -0
  18. data/maltese.gemspec +37 -0
  19. data/public/sitemap.xml.gz +0 -0
  20. data/spec/cli_spec.rb +43 -0
  21. data/spec/fixtures/sitemap.json +7574 -0
  22. data/spec/fixtures/sitemap_nil.json +11 -0
  23. data/spec/fixtures/vcr_cassettes/Maltese_Sitemap/get_data/should_report_if_there_are_no_works_returned_by_the_Datacite_Solr_API.yml +38 -0
  24. data/spec/fixtures/vcr_cassettes/Maltese_Sitemap/get_data/should_report_if_there_are_works_returned_by_the_Datacite_Solr_API.yml +38 -0
  25. data/spec/fixtures/vcr_cassettes/Maltese_Sitemap/get_total/with_no_works.yml +38 -0
  26. data/spec/fixtures/vcr_cassettes/Maltese_Sitemap/get_total/with_works.yml +38 -0
  27. data/spec/fixtures/vcr_cassettes/Maltese_Sitemap/push_data/should_report_if_there_are_no_works_returned_by_the_Datacite_Solr_API.yml +86 -0
  28. data/spec/fixtures/vcr_cassettes/Maltese_Sitemap/push_data/should_report_if_there_are_works_returned_by_the_Datacite_Solr_API.yml +86 -0
  29. data/spec/fixtures/vcr_cassettes/Maltese_Sitemap/queue_jobs/should_report_if_there_are_no_works_returned_by_the_Datacite_Solr_API.yml +38 -0
  30. data/spec/fixtures/vcr_cassettes/Maltese_Sitemap/queue_jobs/should_report_if_there_are_works_returned_by_the_Datacite_Solr_API.yml +270 -0
  31. data/spec/sitemap_spec.rb +111 -0
  32. data/spec/spec_helper.rb +95 -0
  33. metadata +310 -0
@@ -0,0 +1,111 @@
1
+ require 'spec_helper'
2
+
3
+ describe Maltese::Sitemap, vcr: true do
4
+ before(:each) { allow(Time).to receive(:now).and_return(Time.mktime(2015, 4, 8)) }
5
+
6
+ subject { Maltese::Sitemap.new }
7
+
8
+ context "get_query_url" do
9
+ it "default" do
10
+ expect(subject.get_query_url).to eq("https://search.datacite.org/api?q=*%3A*&fq=updated%3A%5B2015-04-07T00%3A00%3A00Z+TO+2015-04-08T23%3A59%3A59Z%5D+AND+has_metadata%3Atrue+AND+is_active%3Atrue&start=0&rows=50000&fl=doi%2Cupdated&sort=updated+asc&wt=json")
11
+ end
12
+
13
+ it "with zero rows" do
14
+ expect(subject.get_query_url(rows: 0)).to eq("https://search.datacite.org/api?q=*%3A*&fq=updated%3A%5B2015-04-07T00%3A00%3A00Z+TO+2015-04-08T23%3A59%3A59Z%5D+AND+has_metadata%3Atrue+AND+is_active%3Atrue&start=0&rows=0&fl=doi%2Cupdated&sort=updated+asc&wt=json")
15
+ end
16
+
17
+ it "with different from_date and until_date" do
18
+ subject = Maltese::Sitemap.new(from_date: "2015-04-05", until_date: "2015-04-05")
19
+ expect(subject.get_query_url).to eq("https://search.datacite.org/api?q=*%3A*&fq=updated%3A%5B2015-04-05T00%3A00%3A00Z+TO+2015-04-05T23%3A59%3A59Z%5D+AND+has_metadata%3Atrue+AND+is_active%3Atrue&start=0&rows=50000&fl=doi%2Cupdated&sort=updated+asc&wt=json")
20
+ end
21
+
22
+ it "with offset" do
23
+ expect(subject.get_query_url(offset: 250)).to eq("https://search.datacite.org/api?q=*%3A*&fq=updated%3A%5B2015-04-07T00%3A00%3A00Z+TO+2015-04-08T23%3A59%3A59Z%5D+AND+has_metadata%3Atrue+AND+is_active%3Atrue&start=250&rows=50000&fl=doi%2Cupdated&sort=updated+asc&wt=json")
24
+ end
25
+
26
+ it "with rows" do
27
+ expect(subject.get_query_url(rows: 250)).to eq("https://search.datacite.org/api?q=*%3A*&fq=updated%3A%5B2015-04-07T00%3A00%3A00Z+TO+2015-04-08T23%3A59%3A59Z%5D+AND+has_metadata%3Atrue+AND+is_active%3Atrue&start=0&rows=250&fl=doi%2Cupdated&sort=updated+asc&wt=json")
28
+ end
29
+ end
30
+
31
+ context "get_total" do
32
+ it "with works" do
33
+ expect(subject.get_total).to eq(2521)
34
+ end
35
+
36
+ it "with no works" do
37
+ subject = Maltese::Sitemap.new(from_date: "2005-04-07", until_date: "2005-04-08")
38
+ expect(subject.get_total).to eq(0)
39
+ end
40
+ end
41
+
42
+ context "queue_jobs" do
43
+ it "should report if there are no works returned by the Datacite Solr API" do
44
+ subject = Maltese::Sitemap.new(from_date: "2005-04-07", until_date: "2005-04-08")
45
+ response = subject.queue_jobs
46
+ expect(response).to eq(0)
47
+ end
48
+
49
+ it "should report if there are works returned by the Datacite Solr API" do
50
+ response = subject.queue_jobs
51
+ expect(response).to eq(2521)
52
+ end
53
+ end
54
+
55
+ context "get_data" do
56
+ it "should report if there are no works returned by the Datacite Solr API" do
57
+ subject = Maltese::Sitemap.new(from_date: "2005-04-07", until_date: "2005-04-08")
58
+ response = subject.get_data
59
+ expect(response.body["data"]["response"]["numFound"]).to eq(0)
60
+ end
61
+
62
+ it "should report if there are works returned by the Datacite Solr API" do
63
+ response = subject.get_data
64
+ expect(response.body["data"]["response"]["numFound"]).to eq(2521)
65
+ doc = response.body["data"]["response"]["docs"].first
66
+ expect(doc["doi"]).to eq("10.15468/DL.6OKWWI")
67
+ end
68
+
69
+ it "should catch errors with the Datacite Solr API" do
70
+ stub = stub_request(:get, subject.get_query_url(rows: 0)).to_return(:status => [408])
71
+ response = subject.get_data(rows: 0)
72
+ expect(response.body).to eq("errors"=>[{"status"=>408, "title"=>"Request timeout"}])
73
+ expect(stub).to have_been_requested
74
+ end
75
+ end
76
+
77
+ context "parse_data" do
78
+ it "should report if there are no works returned by the Datacite Solr API" do
79
+ body = File.read(fixture_path + 'sitemap_nil.json')
80
+ result = OpenStruct.new(body: { "data" => JSON.parse(body) })
81
+ expect(subject.parse_data(result)).to eq(0)
82
+ end
83
+
84
+ it "should report if there are works returned by the Datacite Solr API" do
85
+ body = File.read(fixture_path + 'sitemap.json')
86
+ result = OpenStruct.new(body: { "data" => JSON.parse(body) })
87
+ response = subject.parse_data(result)
88
+ expect(response).to eq(2522)
89
+ end
90
+
91
+ it "should catch timeout errors with the Datacite Solr API" do
92
+ result = OpenStruct.new(body: { "errors" => [{ "title" => "the server responded with status 408 for https://search.datacite.org", "status" => 408 }] })
93
+ response = subject.parse_data(result)
94
+ expect(response).to eq(result.body["errors"])
95
+ end
96
+ end
97
+
98
+ context "push_data" do
99
+ it "should report if there are no works returned by the Datacite Solr API" do
100
+ result = []
101
+ expect { subject.push_data }.to output(/1 links/).to_stdout
102
+ end
103
+
104
+ it "should report if there are works returned by the Datacite Solr API" do
105
+ body = File.read(fixture_path + 'sitemap.json')
106
+ result = OpenStruct.new(body: { "data" => JSON.parse(body) })
107
+ result = subject.parse_data(result)
108
+ expect { subject.push_data }.to output(/2522 links/).to_stdout
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,95 @@
1
+ ENV["FOG_DIRECTORY"] = "sitemaps.test.datacite.org"
2
+
3
+ require 'bundler/setup'
4
+ Bundler.setup
5
+
6
+ require 'simplecov'
7
+ SimpleCov.start
8
+
9
+ require 'maltese'
10
+ require 'rspec'
11
+ require 'rack/test'
12
+ require 'webmock/rspec'
13
+ require 'nokogiri'
14
+ require 'vcr'
15
+
16
+ RSpec.configure do |config|
17
+ config.order = :random
18
+ config.include WebMock::API
19
+ config.include Rack::Test::Methods
20
+ config.expect_with :rspec do |c|
21
+ c.syntax = :expect
22
+ end
23
+
24
+ config.mock_with :rspec do |mocks|
25
+ mocks.allow_message_expectations_on_nil = false
26
+ end
27
+
28
+ config.before do
29
+ ARGV.replace []
30
+ end
31
+ end
32
+
33
+ def fixture_path
34
+ File.expand_path("../fixtures", __FILE__) + '/'
35
+ end
36
+
37
+ # This code was adapted from Thor, available under MIT-LICENSE
38
+ # Copyright (c) 2008 Yehuda Katz, Eric Hodel, et al.
39
+ def capture(stream)
40
+ begin
41
+ stream = stream.to_s
42
+ eval "$#{stream} = StringIO.new"
43
+ yield
44
+ result = eval("$#{stream}").string
45
+ ensure
46
+ eval("$#{stream} = #{stream.upcase}")
47
+ end
48
+
49
+ result
50
+ end
51
+
52
+ def capture_stdout(&block)
53
+ original_stdout = $stdout
54
+ $stdout = fake = StringIO.new
55
+ begin
56
+ yield
57
+ ensure
58
+ $stdout = original_stdout
59
+ end
60
+ fake.string
61
+ end
62
+
63
+ def capture_stderr(&block)
64
+ original_stderr = $stderr
65
+ $stderr = fake = StringIO.new
66
+ begin
67
+ yield
68
+ ensure
69
+ $stderr = original_stderr
70
+ end
71
+ fake.string
72
+ end
73
+
74
+ # This code was adapted from Ruby on Rails, available under MIT-LICENSE
75
+ # Copyright (c) 2004-2013 David Heinemeier Hansson
76
+ def silence_warnings
77
+ old_verbose, $VERBOSE = $VERBOSE, nil
78
+ yield
79
+ ensure
80
+ $VERBOSE = old_verbose
81
+ end
82
+
83
+ alias silence capture
84
+
85
+ VCR.configure do |c|
86
+ c.cassette_library_dir = "spec/fixtures/vcr_cassettes"
87
+ c.hook_into :webmock
88
+ c.ignore_localhost = true
89
+ c.ignore_hosts 'codeclimate.com'
90
+ c.configure_rspec_metadata!
91
+ c.filter_sensitive_data("<AWS_ACCESS_KEY_ID>") { ENV["AWS_ACCESS_KEY_ID"] }
92
+ c.filter_sensitive_data("<AWS_SECRET_ACCESS_KEY>") { ENV["AWS_SECRET_ACCESS_KEY"] }
93
+ c.filter_sensitive_data("<FOG_DIRECTORY>") { ENV['FOG_DIRECTORY'] }
94
+ c.filter_sensitive_data("<FOG_REGION>") { ENV["FOG_REGION"] }
95
+ end
metadata ADDED
@@ -0,0 +1,310 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: maltese
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Martin Fenner
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-02-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: maremma
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.5'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '4.2'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 4.2.5
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '4.2'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 4.2.5
47
+ - !ruby/object:Gem::Dependency
48
+ name: thor
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '0.19'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '0.19'
61
+ - !ruby/object:Gem::Dependency
62
+ name: sitemap_generator
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '5.1'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '5.1'
75
+ - !ruby/object:Gem::Dependency
76
+ name: fog-aws
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 0.7.6
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 0.7.6
89
+ - !ruby/object:Gem::Dependency
90
+ name: mime-types
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '3.1'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '3.1'
103
+ - !ruby/object:Gem::Dependency
104
+ name: bundler
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '1.0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '1.0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: rspec
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '3.4'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '3.4'
131
+ - !ruby/object:Gem::Dependency
132
+ name: rake
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '12.0'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '12.0'
145
+ - !ruby/object:Gem::Dependency
146
+ name: rack-test
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: vcr
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '3.0'
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: 3.0.3
169
+ type: :development
170
+ prerelease: false
171
+ version_requirements: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - "~>"
174
+ - !ruby/object:Gem::Version
175
+ version: '3.0'
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: 3.0.3
179
+ - !ruby/object:Gem::Dependency
180
+ name: webmock
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '1.22'
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: 1.22.3
189
+ type: :development
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - "~>"
194
+ - !ruby/object:Gem::Version
195
+ version: '1.22'
196
+ - - ">="
197
+ - !ruby/object:Gem::Version
198
+ version: 1.22.3
199
+ - !ruby/object:Gem::Dependency
200
+ name: codeclimate-test-reporter
201
+ requirement: !ruby/object:Gem::Requirement
202
+ requirements:
203
+ - - "~>"
204
+ - !ruby/object:Gem::Version
205
+ version: '1.0'
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: 1.0.0
209
+ type: :development
210
+ prerelease: false
211
+ version_requirements: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '1.0'
216
+ - - ">="
217
+ - !ruby/object:Gem::Version
218
+ version: 1.0.0
219
+ - !ruby/object:Gem::Dependency
220
+ name: simplecov
221
+ requirement: !ruby/object:Gem::Requirement
222
+ requirements:
223
+ - - "~>"
224
+ - !ruby/object:Gem::Version
225
+ version: 0.12.0
226
+ type: :development
227
+ prerelease: false
228
+ version_requirements: !ruby/object:Gem::Requirement
229
+ requirements:
230
+ - - "~>"
231
+ - !ruby/object:Gem::Version
232
+ version: 0.12.0
233
+ description: Ruby library to generate sitemap for DataCite Search.
234
+ email: mfenner@datacite.org
235
+ executables:
236
+ - maltese
237
+ extensions: []
238
+ extra_rdoc_files:
239
+ - README.md
240
+ files:
241
+ - ".codeclimate.yml"
242
+ - ".gitignore"
243
+ - ".rubocop.yml"
244
+ - ".travis.yml"
245
+ - CHANGELOG.md
246
+ - Dockerfile
247
+ - Gemfile
248
+ - Gemfile.lock
249
+ - LICENSE.md
250
+ - README.md
251
+ - bin/maltese
252
+ - lib/maltese.rb
253
+ - lib/maltese/cli.rb
254
+ - lib/maltese/sitemap.rb
255
+ - lib/maltese/utils.rb
256
+ - lib/maltese/version.rb
257
+ - maltese.gemspec
258
+ - public/sitemap.xml.gz
259
+ - spec/cli_spec.rb
260
+ - spec/fixtures/sitemap.json
261
+ - spec/fixtures/sitemap_nil.json
262
+ - spec/fixtures/vcr_cassettes/Maltese_Sitemap/get_data/should_report_if_there_are_no_works_returned_by_the_Datacite_Solr_API.yml
263
+ - spec/fixtures/vcr_cassettes/Maltese_Sitemap/get_data/should_report_if_there_are_works_returned_by_the_Datacite_Solr_API.yml
264
+ - spec/fixtures/vcr_cassettes/Maltese_Sitemap/get_total/with_no_works.yml
265
+ - spec/fixtures/vcr_cassettes/Maltese_Sitemap/get_total/with_works.yml
266
+ - spec/fixtures/vcr_cassettes/Maltese_Sitemap/push_data/should_report_if_there_are_no_works_returned_by_the_Datacite_Solr_API.yml
267
+ - spec/fixtures/vcr_cassettes/Maltese_Sitemap/push_data/should_report_if_there_are_works_returned_by_the_Datacite_Solr_API.yml
268
+ - spec/fixtures/vcr_cassettes/Maltese_Sitemap/queue_jobs/should_report_if_there_are_no_works_returned_by_the_Datacite_Solr_API.yml
269
+ - spec/fixtures/vcr_cassettes/Maltese_Sitemap/queue_jobs/should_report_if_there_are_works_returned_by_the_Datacite_Solr_API.yml
270
+ - spec/sitemap_spec.rb
271
+ - spec/spec_helper.rb
272
+ homepage: https://github.com/datacite/maltese
273
+ licenses:
274
+ - MIT
275
+ metadata: {}
276
+ post_install_message:
277
+ rdoc_options: []
278
+ require_paths:
279
+ - lib
280
+ required_ruby_version: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - ">="
283
+ - !ruby/object:Gem::Version
284
+ version: '0'
285
+ required_rubygems_version: !ruby/object:Gem::Requirement
286
+ requirements:
287
+ - - ">="
288
+ - !ruby/object:Gem::Version
289
+ version: '0'
290
+ requirements: []
291
+ rubyforge_project:
292
+ rubygems_version: 2.6.8
293
+ signing_key:
294
+ specification_version: 4
295
+ summary: Ruby library to generate sitemap for DataCite Search
296
+ test_files:
297
+ - spec/cli_spec.rb
298
+ - spec/fixtures/sitemap.json
299
+ - spec/fixtures/sitemap_nil.json
300
+ - spec/fixtures/vcr_cassettes/Maltese_Sitemap/get_data/should_report_if_there_are_no_works_returned_by_the_Datacite_Solr_API.yml
301
+ - spec/fixtures/vcr_cassettes/Maltese_Sitemap/get_data/should_report_if_there_are_works_returned_by_the_Datacite_Solr_API.yml
302
+ - spec/fixtures/vcr_cassettes/Maltese_Sitemap/get_total/with_no_works.yml
303
+ - spec/fixtures/vcr_cassettes/Maltese_Sitemap/get_total/with_works.yml
304
+ - spec/fixtures/vcr_cassettes/Maltese_Sitemap/push_data/should_report_if_there_are_no_works_returned_by_the_Datacite_Solr_API.yml
305
+ - spec/fixtures/vcr_cassettes/Maltese_Sitemap/push_data/should_report_if_there_are_works_returned_by_the_Datacite_Solr_API.yml
306
+ - spec/fixtures/vcr_cassettes/Maltese_Sitemap/queue_jobs/should_report_if_there_are_no_works_returned_by_the_Datacite_Solr_API.yml
307
+ - spec/fixtures/vcr_cassettes/Maltese_Sitemap/queue_jobs/should_report_if_there_are_works_returned_by_the_Datacite_Solr_API.yml
308
+ - spec/sitemap_spec.rb
309
+ - spec/spec_helper.rb
310
+ has_rdoc: