diff --git a/app/controllers/statcan_datasets_controller.rb b/app/controllers/statcan_datasets_controller.rb index 4634e42..551d7e0 100644 --- a/app/controllers/statcan_datasets_controller.rb +++ b/app/controllers/statcan_datasets_controller.rb @@ -1,6 +1,10 @@ class StatcanDatasetsController < ApplicationController def show dataset = StatcanDataset.find_by(name: params[:id]) - render json: dataset + if dataset + render json: dataset + else + render json: { error: "Not found" }, status: :not_found + end end end diff --git a/app/models/statcan_dataset.rb b/app/models/statcan_dataset.rb index 0440d55..19435e4 100644 --- a/app/models/statcan_dataset.rb +++ b/app/models/statcan_dataset.rb @@ -6,6 +6,10 @@ class StatcanDataset < ApplicationRecord validates :sync_schedule, presence: true validate :valid_cron_expression + def to_param + name + end + def self.filter_stale(datasets, current_time = Time.current) datasets.select { |dataset| dataset.needs_sync?(current_time) } end diff --git a/app/views/avo/scraping_health/index.html.erb b/app/views/avo/scraping_health/index.html.erb index efc895b..81d5bf6 100644 --- a/app/views/avo/scraping_health/index.html.erb +++ b/app/views/avo/scraping_health/index.html.erb @@ -98,7 +98,7 @@ <%= entry.published_at ? time_ago_in_words(entry.published_at) + " ago" : "—" %> - <%= link_to entry.url, entry.url, target: "_blank", class: "text-blue-600 hover:underline", title: entry.url %> + <%= link_to entry.url, entry.url.to_s.match?(/\Ahttps?:\/\//) ? entry.url : "#", target: "_blank", class: "text-blue-600 hover:underline", title: entry.url %> <% end %> diff --git a/test/jobs/commitment_relevance_filter_job_test.rb b/test/jobs/commitment_relevance_filter_job_test.rb index 06dfff0..fb1713e 100644 --- a/test/jobs/commitment_relevance_filter_job_test.rb +++ b/test/jobs/commitment_relevance_filter_job_test.rb @@ -108,13 +108,13 @@ class CommitmentRelevanceFilterJobTest < ActiveJob::TestCase assert_not_includes result.to_a, commitment end - test "excludes abandoned commitments regardless of date" do + test "excludes broken commitments regardless of date" do commitment = Commitment.create!( government: @government, - title: "Abandoned commitment", - description: "This was abandoned", + title: "Broken commitment", + description: "This was broken", commitment_type: :spending, - status: :abandoned, + status: :broken, date_promised: Date.new(2025, 1, 1) ) diff --git a/test/jobs/statcan_cron_job_test.rb b/test/jobs/statcan_cron_job_test.rb index 23d06d6..e6cefac 100644 --- a/test/jobs/statcan_cron_job_test.rb +++ b/test/jobs/statcan_cron_job_test.rb @@ -7,7 +7,7 @@ def setup end test "should enqueue sync jobs for stale datasets only" do - current_time = Time.parse("2025-01-02 14:00:00") # 2pm + current_time = Time.utc(2025, 1, 2, 14, 0, 0) # 2pm UTC # Create a stale dataset (never synced) stale_dataset1 = StatcanDataset.create!( @@ -22,7 +22,7 @@ def setup name: "stale-old-sync", statcan_url: "https://statcan.gc.ca/stale2.csv", sync_schedule: "0 0 * * *", - last_synced_at: Time.parse("2025-01-01 23:00:00") # Yesterday 11pm + last_synced_at: Time.utc(2025, 1, 1, 23, 0, 0) # Yesterday 11pm UTC ) # Create a fresh dataset (recent sync) @@ -30,7 +30,7 @@ def setup name: "fresh-dataset", statcan_url: "https://statcan.gc.ca/fresh.csv", sync_schedule: "0 0 * * *", - last_synced_at: Time.parse("2025-01-02 01:00:00") # 1am today + last_synced_at: Time.utc(2025, 1, 2, 1, 0, 0) # 1am UTC today ) # Track enqueued jobs diff --git a/test/models/statcan_dataset_test.rb b/test/models/statcan_dataset_test.rb index f278f0a..fe87fe6 100644 --- a/test/models/statcan_dataset_test.rb +++ b/test/models/statcan_dataset_test.rb @@ -118,9 +118,9 @@ def self.valid_attributes end test "needs_sync returns true when last sync was before last scheduled time" do - attributes = self.class.valid_attributes.merge(sync_schedule: "0 0 * * *", last_synced_at: Time.parse("2025-01-01 23:00:00")) + attributes = self.class.valid_attributes.merge(sync_schedule: "0 0 * * *", last_synced_at: Time.utc(2025, 1, 1, 23, 0, 0)) dataset = StatcanDataset.new(attributes) - current_time = Time.parse("2025-01-02 14:00:00") # 2pm next day + current_time = Time.utc(2025, 1, 2, 14, 0, 0) # 2pm next day UTC assert dataset.needs_sync?(current_time) end