Commit b5f0d91

mo khan <mo@mokhan.ca>
2014-11-10 04:50:51
add ability to delete a video.
1 parent 0def269
app/assets/javascripts/controllers/application_controller.js → app/assets/javascripts/controllers/application.js
File renamed without changes
app/assets/javascripts/controllers/video.js.coffee
@@ -0,0 +1,8 @@
+App.VideoController = Ember.ObjectController.extend(
+  isEditing: false
+  actions:
+    delete: ->
+      @get('model').destroyRecord().then =>
+        @transitionToRoute('videos')
+)
+
app/assets/javascripts/controllers/video_controller.js.coffee
@@ -1,4 +0,0 @@
-App.VideoController = Ember.ObjectController.extend(
-  isEditing: false
-)
-
app/assets/javascripts/controllers/video_edit_controller.js.coffee → app/assets/javascripts/controllers/video_edit.js.coffee
File renamed without changes
app/assets/javascripts/controllers/videos_controller.js.coffee → app/assets/javascripts/controllers/videos.js.coffee
File renamed without changes
app/assets/javascripts/controllers/videos_index_controller.js.coffee → app/assets/javascripts/controllers/videos_index.js.coffee
File renamed without changes
app/assets/javascripts/templates/video.hbs
@@ -1,6 +1,7 @@
 {{#unless isEditing}}
   <h3>Video {{title}}</h3>
   {{#link-to 'video.edit' this}}edit{{/link-to}}
+  <a href="#"{{action 'delete'}}>delete</a>
   <p>{{description}}</p>
   <a href="{{uri}}">{{uri}}</a>
 {{/unless}}
app/controllers/videos_controller.rb
@@ -12,6 +12,11 @@ class VideosController < ApplicationController
     @video.update(video_params)
   end
 
+  def destroy
+    current_user.videos.find(params[:id]).destroy!
+    render json: {}
+  end
+
   private
 
   def video_params
config/routes.rb
@@ -1,6 +1,6 @@
 Mocode::Application.routes.draw do
   resources :sessions, only: [:new, :create, :destroy]
-  resources :videos, only: [:index, :create, :update]
+  resources :videos, only: [:index, :create, :update, :destroy]
   get 'dashboard', to: 'dashboard#index'
   root 'dashboard#index'
   # The priority is based upon order of creation: first created -> highest priority.
spec/controllers/videos_controller_spec.rb
@@ -2,6 +2,7 @@ require 'rails_helper'
 
 describe VideosController do
   let(:user_session) { create(:session) }
+  let(:user) { user_session.user }
 
   before :each do
     session[:user_session_id] = user_session.id
@@ -35,7 +36,7 @@ describe VideosController do
 
   context "#update" do
     render_views
-    let(:video) { create(:video, user: user_session.user) }
+    let(:video) { create(:video, user: user) }
 
     it 'updates the video' do
       xhr :put, :update, id: video.id, video: { title: 'hello', description: 'blah', uri: 'http://youtu.be/blah' }
@@ -54,4 +55,14 @@ describe VideosController do
       expect(json['video']['uri']).to eql("http://youtu.be/blah")
     end
   end
+
+  context "#destroy" do
+    let(:video) { create(:video, user: user) }
+
+    it 'deletes the video' do
+      xhr :delete, :destroy, id: video.id
+      expect(response).to be_success
+      expect(Video.find_by(id: video.id)).to be_nil
+    end
+  end
 end