Commit 59dc5a5

mo khan <mo@mokhan.ca>
2014-11-11 03:14:59
add ability to delete a service.
1 parent 9705e4a
Changed files (8)
app/assets/javascripts/controllers/service.js.coffee
@@ -1,1 +1,5 @@
-App.ServiceController = Ember.ObjectController.extend()
+App.ServiceController = Ember.ObjectController.extend
+  actions:
+    deleteService: ->
+      @get('model').destroyRecord().then =>
+        @transitionToRoute('services')
app/assets/javascripts/controllers/services_new.js.coffee
@@ -5,6 +5,6 @@ App.ServicesNewController = Ember.Controller.extend
       if App.Service.valid(fields)
         service = @store.createRecord('service', @get('fields'))
         service.save().then =>
-          @transitionTo('services', service)
+          @transitionTo('services')
       else
         @set('showError', true)
app/assets/javascripts/templates/service.hbs
@@ -1,4 +1,6 @@
 <h3>{{name}}</h3>
+<a href="#" {{action "deleteService"}}>delete</a>
 
 {{#link-to 'service.environments' this}}environments{{/link-to}}
+
 {{outlet}}
app/controllers/services_controller.rb
@@ -4,7 +4,12 @@ class ServicesController < ApplicationController
   end
 
   def create
-    Service.create!(application_params)
+    @service = Service.create!(application_params)
+  end
+
+  def destroy
+    Service.find(params[:id]).destroy!
+    render json: {}
   end
 
   private
app/models/service.rb
@@ -1,3 +1,3 @@
 class Service < ActiveRecord::Base
-  has_many :environments
+  has_many :environments, dependent: :destroy
 end
app/views/services/create.json.jbuilder
@@ -1,3 +1,3 @@
 json.service do
-  json.partial! service, service: @service
+  json.partial! @service, service: @service
 end
config/routes.rb
@@ -1,7 +1,7 @@
 Erkell::Application.routes.draw do
   resources :sessions, only: [:new, :create, :destroy]
   resources :videos, only: [:index, :create, :update, :destroy]
-  resources :services, only: [:index, :create]
+  resources :services, only: [:index, :create, :destroy]
   resources :environments, only: [:index, :show, :create, :destroy]
 
   get 'dashboard', to: 'dashboard#index'
spec/controllers/services_controller_spec.rb
@@ -25,4 +25,13 @@ describe ServicesController do
       expect(Service.last.name).to eql('blah')
     end
   end
+
+  describe "#destroy" do
+    let(:service) { create(:service) }
+
+    it 'deletes the services' do
+      xhr :delete, :destroy, id: service.id
+      expect(Service.count).to eql(0)
+    end
+  end
 end