diff --git a/app/controllers/api/v1/parks/alerts_controller.rb b/app/controllers/api/v1/parks/alerts_controller.rb index 122a9d8..6bcc267 100644 --- a/app/controllers/api/v1/parks/alerts_controller.rb +++ b/app/controllers/api/v1/parks/alerts_controller.rb @@ -1,4 +1,9 @@ module Api::V1::Parks class AlertsController < BaseController + before_action :set_park + + def index + render json: @park.alerts + end end end diff --git a/config/routes.rb b/config/routes.rb index 3562189..49d0941 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -2,7 +2,7 @@ Rails.application.routes.draw do namespace :api do namespace :v1 do resources :parks, only: %i[index show], param: :code do - resources :alerts, only: %i[index] + resources :alerts, only: %i[index], module: :parks end end end diff --git a/spec/requests/api/v1/parks/alerts_spec.rb b/spec/requests/api/v1/parks/alerts_spec.rb index 1c982d9..d543b90 100644 --- a/spec/requests/api/v1/parks/alerts_spec.rb +++ b/spec/requests/api/v1/parks/alerts_spec.rb @@ -2,6 +2,21 @@ require 'rails_helper' RSpec.describe "Api::V1::Parks::Alerts", type: :request do describe "GET /parks/:code/alerts" do - pending "add some examples (or delete) #{__FILE__}" + it "returns the alerts associated to a park" do + get api_v1_park_alerts_url(parks(:one).code) + expect(response).to have_http_status(:success) + expect(response.parsed_body.count).to eq(1) + expect(response.parsed_body).to include( + hash_including( + :description, park_code: "crla", title: "Fire Restrictions in Effect", + category: "caution", indexed_date: "2025-07-04T22:07:59.000Z" + ) + ) + end + + it "returns :not_found for unknown parks" do + get api_v1_park_alerts_url("foo") + expect(response).to have_http_status(:not_found) + end end end diff --git a/spec/requests/api/v1/parks_spec.rb b/spec/requests/api/v1/parks_spec.rb index ed646e2..518877a 100644 --- a/spec/requests/api/v1/parks_spec.rb +++ b/spec/requests/api/v1/parks_spec.rb @@ -42,7 +42,7 @@ RSpec.describe "Api::V1::Parks", type: :request do end it "returns the park" do - get api_v1_park_url("crla") + get api_v1_park_url(parks(:one).code) expect(response).to have_http_status(:success) expect(response.parsed_body).to match( hash_including(