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]