Commit 55baf21

mo khan <mo@mokhan.ca>
2014-11-11 05:26:08
display list of failures.
1 parent f3fec0d
app/assets/javascripts/controllers/failures.js.coffee
@@ -0,0 +1,1 @@
+App.FailuresController = Ember.ArrayController.extend()
app/assets/javascripts/models/failure.js.coffee
@@ -0,0 +1,6 @@
+App.Failure = DS.Model.extend
+  environment: DS.belongsTo('environment', async: true)
+  message: DS.attr('string')
+  hostname: DS.attr('string')
+  error_type: DS.attr('string')
+  backtrace: DS.attr('string')
app/assets/javascripts/routes/failures.js.coffee
@@ -0,0 +1,3 @@
+App.FailuresRoute = Ember.Route.extend
+  model: ->
+    @store.findAll('failure')
app/assets/javascripts/templates/application.hbs
@@ -5,6 +5,7 @@
         <li>{{#link-to 'index'}}Overview{{/link-to}}</li>
         <li>{{#link-to 'videos'}}Videos{{/link-to}}</li>
         <li>{{#link-to 'services'}}Services{{/link-to}}</li>
+        <li>{{#link-to 'failures'}}Failures{{/link-to}}</li>
       </ul>
     </div>
     <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
app/assets/javascripts/templates/failures.hbs
@@ -0,0 +1,10 @@
+<h1>Failures</h1>
+{{#each failure in controller}}
+<div>
+  <p>{{failure.environment.name}}</p>
+  <p>{{failure.error_type}}</p>
+  <p>{{failure.message}}</p>
+  <p>{{failure.hostname}}</p>
+  <p>{{failure.backtrace}}</p>
+</div>
+{{/each}}
app/assets/javascripts/router.js.coffee
@@ -15,3 +15,4 @@ App.Router.map ()->
       @route 'environments', ->
         @route 'new'
         @resource 'environment', { path: ':environment_id' }
+  @resource 'failures'
app/controllers/failures_controller.rb
@@ -0,0 +1,5 @@
+class FailuresController < ApplicationController
+  def index
+    @failures = Failure.includes(:environment).all
+  end
+end
app/models/failure.rb
@@ -1,2 +1,3 @@
 class Failure < ActiveRecord::Base
+  belongs_to :environment
 end
app/views/environments/_environment.json.jbuilder
@@ -1,4 +1,4 @@
 json.id environment.id
 json.name environment.name
 json.apiKey environment.api_key
-json.service environment.service.id
+json.service environment.try(:service).try(:id)
app/views/failures/_failure.json.jbuilder
@@ -0,0 +1,6 @@
+json.id failure.id
+json.message failure.message
+json.hostname failure.hostname
+json.error_type failure.error_type
+json.backtrace failure.backtrace.join(' ')
+json.environment failure.environment.id
app/views/failures/index.json.jbuilder
@@ -0,0 +1,3 @@
+json.failures @failures do |failure|
+  json.partial! failure, failure: failure
+end
config/routes.rb
@@ -3,6 +3,7 @@ Erkell::Application.routes.draw do
   resources :videos, only: [:index, :create, :update, :destroy]
   resources :services, only: [:index, :create, :update, :destroy]
   resources :environments, only: [:index, :show, :create, :destroy]
+  resources :failures, only: [:index]
 
   get 'dashboard', to: 'dashboard#index'
 
spec/controllers/environments_controller_spec.rb
@@ -19,6 +19,8 @@ describe EnvironmentsController do
   end
 
   describe "#show" do
+    render_views
+
     let(:environment) { create(:environment) }
 
     it 'returns info on the environment' do
spec/controllers/failures_controller_spec.rb
@@ -0,0 +1,19 @@
+require 'rails_helper'
+
+describe FailuresController do
+  let(:user) { user_session.user }
+  let(:user_session) { create(:session) }
+
+  before :each do
+    session[:user_session_id] = user_session.id
+  end
+
+  describe "#index" do
+    let!(:failure) { create(:failure) }
+
+    it 'returns all failures' do
+      xhr :get, :index
+      expect(assigns(:failures)).to match_array([failure])
+    end
+  end
+end
spec/factories.rb
@@ -21,13 +21,14 @@ FactoryGirl.define do
   end
 
   factory :environment do
+    association :service
     name Faker::Lorem.word
   end
 
   factory :failure do
-    environment
+    association :environment
     message "heck"
     hostname "local"
-    type ""
+    error_type "StandardError"
   end
 end