Skip to content

Commit ad29a1f

Browse files
authored
Merge pull request #1187 from DaanVanVugt/bugfix/rug_ingestor
repair taxila rug ingestor
2 parents 2e91dc1 + 479672e commit ad29a1f

3 files changed

Lines changed: 23745 additions & 2039 deletions

File tree

lib/ingestors/taxila/rug_ingestor.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def process_rug(url)
3030
unless Rails.env.test? and File.exist?('test/vcr_cassettes/ingestors/rug.yml')
3131
sleep(1)
3232
end
33-
event_page = Nokogiri::HTML5.parse(open_url(url.to_s, raise: true)).css("div[class='rug-mb']")[0].css("div[itemtype='https://schema.org/Event']")
33+
event_page = Nokogiri::HTML5.parse(open_url(url.to_s, raise: true)).css("div[itemtype='https://schema.org/Event']")
3434
event_page.each do |event_data|
3535
event = OpenStruct.new
3636

@@ -40,12 +40,12 @@ def process_rug(url)
4040
event.start = Time.zone.parse(event_data.css("meta[itemprop='startDate']")[0].get_attribute('content').split('+').first)
4141
event.end = Time.zone.parse(event_data.css("meta[itemprop='endDate']")[0].get_attribute('content').split('+').first)
4242

43-
event_page2 = Nokogiri::HTML5.parse(open_url(event.url.to_s, raise: true)).css("div[id='main']")[0].css("div[itemtype='https://schema.org/Event']")[0]
43+
event_page2 = Nokogiri::HTML5.parse(open_url(event.url.to_s, raise: true)).css("div[itemtype='https://schema.org/Event']")[0]
4444
unless Rails.env.test? and File.exist?('test/vcr_cassettes/ingestors/rug.yml')
4545
sleep(1)
4646
end
4747

48-
event.description = event_page2.css("div[class='rug-clearfix rug-theme--content rug-mb']")[0].css('p')[0].text
48+
event.description = event_page2.css("div[class='rug-theme--content rug-mb']")[0].css('p')[0].text
4949

5050
event.source = 'RUG'
5151
event.timezone = 'Amsterdam'

test/unit/ingestors/taxila/rug_ingestor_test.rb

Lines changed: 8 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -12,51 +12,6 @@ class RugIngestorTest < ActiveSupport::TestCase
1212
reset_timezone
1313
end
1414

15-
test 'can ingest events from rug' do
16-
source = @content_provider.sources.build(
17-
url: 'https://www.rug.nl/about-ug/latest-news/events/calendar/',
18-
method: 'rug',
19-
enabled: true
20-
)
21-
22-
ingestor = Ingestors::Taxila::RugIngestor.new
23-
24-
# check event doesn't
25-
new_title = "Studium Generale: Work, Work, Work | The Invention and Future of Work - Jason Resnikoff"
26-
new_url = 'https://www.rug.nl/about-ug/latest-news/events/calendar/studium-generale/work-jason-resnikoff'
27-
refute Event.where(title: new_title, url: new_url).any?
28-
29-
# run task
30-
assert_difference 'Event.count', 7 do
31-
freeze_time(2019) do
32-
VCR.use_cassette("ingestors/rug") do
33-
ingestor.read(source.url)
34-
ingestor.write(@user, @content_provider)
35-
end
36-
end
37-
end
38-
39-
assert_equal 7, ingestor.events.count
40-
assert ingestor.materials.empty?
41-
assert_equal 7, ingestor.stats[:events][:added]
42-
assert_equal 0, ingestor.stats[:events][:updated]
43-
assert_equal 0, ingestor.stats[:events][:rejected]
44-
45-
# check event does exist
46-
event = Event.where(title: new_title, url: new_url).first
47-
assert event
48-
assert_equal new_title, event.title
49-
assert_equal new_url, event.url
50-
51-
# check other fields
52-
assert_equal 'RUG', event.source
53-
assert_equal 'Amsterdam', event.timezone
54-
assert_equal Time.zone.parse('Mon, 08 May 2023 20:00:00.000000000 UTC +00:00'), event.start
55-
assert_equal Time.zone.parse('Mon, 08 May 2023 21:30:00.000000000 UTC +00:00'), event.end
56-
assert_equal 'Academy Building, Broerstraat 5, Groningen', event.venue
57-
end
58-
59-
6015
test 'can ingest events from rug in various timezones' do
6116
source = @content_provider.sources.build(
6217
url: 'https://www.rug.nl/about-ug/latest-news/events/calendar/',
@@ -66,12 +21,12 @@ class RugIngestorTest < ActiveSupport::TestCase
6621

6722
ingestor = Ingestors::Taxila::RugIngestor.new
6823
# check event doesn't exist
69-
new_title = "Studium Generale: Work, Work, Work | The Invention and Future of Work - Jason Resnikoff"
70-
new_url = 'https://www.rug.nl/about-ug/latest-news/events/calendar/studium-generale/work-jason-resnikoff'
24+
new_title = "Brainstorm: The Human Brain & Research in Groningen"
25+
new_url = 'https://www.rug.nl/about-ug/latest-news/events/calendar/2025/brainstorm-the-human-brain-research-in-groningen'
7126
refute Event.where(title: new_title, url: new_url).any?
7227

7328
# Scrape the initial events
74-
assert_difference 'Event.count', 7 do
29+
assert_difference 'Event.count', 47 do
7530
freeze_time(2016) do
7631
VCR.use_cassette("ingestors/rug") do
7732
ingestor.read(source.url)
@@ -95,9 +50,9 @@ class RugIngestorTest < ActiveSupport::TestCase
9550
end
9651
end
9752

98-
assert_equal 7, ingestor.events.count
53+
assert_equal 47, ingestor.events.count
9954
assert_equal 0, ingestor.stats[:events][:added]
100-
assert_equal 7, ingestor.stats[:events][:updated]
55+
assert_equal 47, ingestor.stats[:events][:updated]
10156
assert_equal 0, ingestor.stats[:events][:rejected]
10257

10358
# Get last updated event
@@ -110,9 +65,9 @@ class RugIngestorTest < ActiveSupport::TestCase
11065
# check other fields
11166
assert_equal 'RUG', event.source
11267
assert_equal 'Amsterdam', event.timezone
113-
assert_equal Time.zone.parse('Mon, 08 May 2023 20:00:00.000000000 UTC +00:00'), event.start
114-
assert_equal Time.zone.parse('Mon, 08 May 2023 21:30:00.000000000 UTC +00:00'), event.end
115-
assert_equal 'Academy Building, Broerstraat 5, Groningen', event.venue
68+
assert_equal Time.zone.parse('Sat, 15 Feb 2025 09:00:00.000000000 UTC +00:00'), event.start
69+
assert_equal Time.zone.parse('Sun, 04 jan 2026 17:00:00.000000000 UTC +00:00'), event.end
70+
assert_equal 'University museum, Oude Kijk in Het Jatstraat 7A, 9712 EA Groningen', event.venue
11671
end
11772
end
11873
end

test/vcr_cassettes/ingestors/rug.yml

Lines changed: 23734 additions & 1983 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)