Skip to content

Commit f5a36d2

Browse files
committed
Make sure disabled and unapproved sources are skipped
1 parent 51b3993 commit f5a36d2

4 files changed

Lines changed: 56 additions & 3 deletions

File tree

lib/scraper.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def run
6969

7070
data_sources = {
7171
config: @sources.map { |c| Scraper::ConfigSource.new(c.merge(user: user)) },
72-
database: Source.find_each
72+
database: Source.approved.find_each
7373
}
7474

7575
data_sources.each do |key, sources|
@@ -81,9 +81,9 @@ def run
8181
processed += 1
8282
log '', 1
8383
if source.enabled
84-
log t('scraper.messages.processing', source: source.provider, num: processed.to_s), 1
84+
log t('scraper.messages.processing', source: source.content_provider&.title, num: processed.to_s), 1
8585
else
86-
log t('scraper.messages.skipped', source: source.provider, num: processed.to_s), 1
86+
log t('scraper.messages.skipped', source: source.content_provider&.title, num: processed.to_s), 1
8787
next
8888
end
8989
if validate_source(source)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
name: test disabled
2+
logfile: log/ingestion.test.log
3+
loglevel: 0
4+
username: ingestor
5+
sources:
6+
- id: 1
7+
provider: 'Another Portal Provider'
8+
url: 'https://app.com/events/sitemap.xml'
9+
method: ical
10+
enabled: true
11+
- id: 2
12+
provider: 'Another Portal Provider'
13+
url: 'https://app.com/events/disabled.xml'
14+
method: ical
15+
enabled: false

test/fixtures/sources.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,3 +94,11 @@ enabled_source:
9494
enabled: true
9595
user: regular_user
9696
approval_status: 2
97+
98+
disabled_source:
99+
content_provider: portal_provider
100+
url: 'https://website.org'
101+
method: bioschemas
102+
enabled: false
103+
user: regular_user
104+
approval_status: 2

test/unit/ingestors/scraper_test.rb

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,36 @@ def run
233233
assert logfile_contains(logfile, 'in `run')
234234
end
235235

236+
test 'does not scrape disabled or unapproved sources' do
237+
WebMock.stub_request(:get, /https:\/\/app.com\/\d/).to_return(status: 200,
238+
body: File.open(Rails.root.join('test', 'fixtures', 'files', 'ingestion', 'events.csv')))
239+
240+
scraper = Scraper.new(load_scraper_config('test_ingestion_disabled.yml'))
241+
provider = content_providers(:goblet)
242+
user = users(:admin)
243+
unapproved_source = provider.sources.create!(url: 'https://app.com/2', method: 'event_csv', user: user,
244+
enabled: true, approval_status: 'not_approved')
245+
approval_requested_source = provider.sources.create!(url: 'https://app.com/3', method: 'event_csv', user: user,
246+
enabled: true, approval_status: 'requested')
247+
User.current_user = user # Admin is required to save approved status
248+
enabled_source = provider.sources.create!(url: 'https://app.com/1', method: 'event_csv', user: user,
249+
enabled: true, approval_status: 'approved')
250+
disabled_source = provider.sources.create!(url: 'https://app.com/4', method: 'event_csv', user: user,
251+
enabled: false, approval_status: 'approved')
252+
253+
scraper.run
254+
255+
logfile = scraper.log_file
256+
# From Config
257+
assert logfile_contains(logfile, "Source URL[https://app.com/events/sitemap.xml]")
258+
refute logfile_contains(logfile, "Source URL[https://app.com/events/disabled.xml]")
259+
# From Database
260+
assert logfile_contains(logfile, "Source URL[#{enabled_source.url}]")
261+
refute logfile_contains(logfile, "Source URL[#{disabled_source.url}]")
262+
refute logfile_contains(logfile, "Source URL[#{unapproved_source.url}]")
263+
refute logfile_contains(logfile, "Source URL[#{approval_requested_source.url}]")
264+
end
265+
236266
private
237267

238268
def check_task_finished(logfile)

0 commit comments

Comments
 (0)