Commit f719e97e0bc5025a6e2353ac094012e54f6c1275

Authored by Callum Dryden
1 parent f39fed7d
Exists in master and in 1 other branch production

Add a problems err and notices in api show action

app/controllers/api/v1/problems_controller.rb
1 1 class Api::V1::ProblemsController < ApplicationController
2 2 respond_to :json, :xml
  3 + FIELDS = %w{app_id app_name environment message where first_notice_at last_notice_at resolved resolved_at notices_count}
3 4  
4 5 def show
5 6 result = benchmark("[api/v1/problems_controller/show] query time") do
6   - Problem.find(params[:id])
  7 + problem = Problem.only(FIELDS).find(params[:id])
  8 + problem.as_json(include: {errs: { include: :notices}})
7 9 end
8 10  
  11 +
9 12 respond_to do |format|
10   - format.any(:html, :json) { render :json => Yajl.dump(result) } # render JSON if no extension specified on path
  13 + format.any(:html, :json) { render :json => result } # render JSON if no extension specified on path
11 14 format.xml { render :xml => result }
12 15 end
13 16 end
14 17  
15 18 def index
16 19 query = {}
17   - fields = %w{app_id app_name environment message where first_notice_at last_notice_at resolved resolved_at notices_count}
18 20  
19 21 if params.key?(:start_date) && params.key?(:end_date)
20 22 start_date = Time.parse(params[:start_date]).utc
... ... @@ -23,7 +25,7 @@ class Api::V1::ProblemsController &lt; ApplicationController
23 25 end
24 26  
25 27 results = benchmark("[api/v1/problems_controller/index] query time") do
26   - Problem.where(query).with(:consistency => :strong).only(fields).to_a
  28 + Problem.where(query).with(:consistency => :strong).only(FIELDS).to_a
27 29 end
28 30  
29 31 respond_to do |format|
... ...
spec/controllers/api/v1/problems_controller_spec.rb
... ... @@ -9,7 +9,9 @@ describe Api::V1::ProblemsController do
9 9  
10 10 describe "GET /api/v1/problems/:id" do
11 11 before do
12   - Fabricate(:problem, :first_notice_at => Date.new(2012, 8, 01), :resolved_at => Date.new(2012, 8, 02))
  12 + notice = Fabricate(:notice)
  13 + err = Fabricate(:err, :notices => [notice])
  14 + problem = Fabricate(:problem, :errs => [err])
13 15 end
14 16  
15 17 it "returns JSON if JSON is requested" do
... ... @@ -20,7 +22,7 @@ describe Api::V1::ProblemsController do
20 22 it "returns the correct problem" do
21 23 requested_problem = Problem.first
22 24 get :show, :auth_token => @user.authentication_token, :format => "json", :id => requested_problem.id
23   - expect( response.body ).to eq(requested_problem.to_json)
  25 + expect( response.body ).to eq(requested_problem.to_json(include: {errs: { include: :notices}}))
24 26 end
25 27 end
26 28  
... ...