From 4bfd3086bca6c27953bb47df2b64d9871e1c4e07 Mon Sep 17 00:00:00 2001 From: Philipp Fischbeck Date: Sat, 19 Sep 2020 15:21:49 +0200 Subject: [PATCH] Fix CSV reading in problem pull --- app/jobs/pull_problems_job.rb | 8 ++++---- test/jobs/pull_problems_job_test.rb | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/jobs/pull_problems_job.rb b/app/jobs/pull_problems_job.rb index 2e36aa0..5228df4 100644 --- a/app/jobs/pull_problems_job.rb +++ b/app/jobs/pull_problems_job.rb @@ -7,13 +7,13 @@ class PullProblemsJob < ApplicationJob PULL_URL = "https://projecteuler.net/minimal=problems;csv" def perform - csv = CSV.parse(URI.open(PULL_URL), headers: [:id, :title, :date_published, :date_last_updated, :solved_by]) + csv = CSV.parse(URI.open(PULL_URL), headers: :first_row) csv.each do |row| - id = row[:id].to_i - last_updated = Time.at(row[:date_last_updated].to_i) + id = row["ID"].to_i + last_updated = Time.at(row["Updated"].to_i) problem = Problem.where(id: id).first_or_create! if problem.pulled_at.nil? or problem.pulled_at < last_updated - original_title = row[:title] + original_title = row["Description"] problem.update(original_title: original_title) # Don't update pulled_at yet until we also successfully pulled the original_content PullProblemContentJob.perform_later problem diff --git a/test/jobs/pull_problems_job_test.rb b/test/jobs/pull_problems_job_test.rb index da8b727..15c74e7 100644 --- a/test/jobs/pull_problems_job_test.rb +++ b/test/jobs/pull_problems_job_test.rb @@ -4,6 +4,7 @@ require 'csv' class PullProblemsJobTest < ActiveJob::TestCase test "should update problem count and titles" do csv_string = CSV.generate do |csv| + csv << ["ID", "Description", "Published", "Updated", "Solved By"] csv << [1, "Title of problem 1", 4.days.ago.to_i, 2.days.ago.to_i, 123] csv << [2, "Title of problem 2", 4.days.ago.to_i, 2.days.ago.to_i, 123] csv << [3, "Title of problem 3", 4.days.ago.to_i, 2.days.ago.to_i, 123]