MS IZ DG completed crud for friend
This commit is contained in:
parent
63f5fe15d6
commit
960db53b9b
11 changed files with 154 additions and 0 deletions
32
app/controllers/friends_controller.rb
Normal file
32
app/controllers/friends_controller.rb
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
class FriendsController < ApplicationController
|
||||||
|
before_filter :authenticate_user!
|
||||||
|
|
||||||
|
def index
|
||||||
|
@friends = Friend.all
|
||||||
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
@friend = Friend.first(:conditions=> {:id => params[:id]})
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@friend = Friend.first(:conditions=> {:id => params[:id]})
|
||||||
|
@friend.destroy
|
||||||
|
flash[:notice] = "Successfully destroyed friend."
|
||||||
|
redirect_to friends_url
|
||||||
|
end
|
||||||
|
|
||||||
|
def new
|
||||||
|
@friend = Friend.new
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
@friend = Friend.new(params[:friend])
|
||||||
|
if @friend.save
|
||||||
|
flash[:notice] = "Successfully created friend."
|
||||||
|
redirect_to @friend
|
||||||
|
else
|
||||||
|
render :action => 'new'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -3,6 +3,7 @@ class StatusMessagesController < ApplicationController
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@status_messages = StatusMessage.all
|
@status_messages = StatusMessage.all
|
||||||
|
@friends = Friend.all
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
|
|
|
||||||
2
app/helpers/friends_helper.rb
Normal file
2
app/helpers/friends_helper.rb
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
module FriendsHelper
|
||||||
|
end
|
||||||
10
app/models/friend.rb
Normal file
10
app/models/friend.rb
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
class Friend
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
field :username
|
||||||
|
field :url
|
||||||
|
|
||||||
|
validates_presence_of :username, :url
|
||||||
|
|
||||||
|
end
|
||||||
14
app/views/friends/index.html.haml
Normal file
14
app/views/friends/index.html.haml
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
- title "Friends"
|
||||||
|
|
||||||
|
%table
|
||||||
|
%tr
|
||||||
|
%th username
|
||||||
|
%th url
|
||||||
|
- for friend in @friends
|
||||||
|
%tr
|
||||||
|
%td= friend.username
|
||||||
|
%td= friend.url
|
||||||
|
%td= link_to 'Show', friend
|
||||||
|
%td= link_to 'Destroy', friend, :confirm => 'Are you sure?', :method => :delete
|
||||||
|
|
||||||
|
%p= link_to "New Friend", new_friend_path
|
||||||
17
app/views/friends/new.html.haml
Normal file
17
app/views/friends/new.html.haml
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
- title "New Friend"
|
||||||
|
|
||||||
|
- form_for @friend do |f|
|
||||||
|
= f.error_messages
|
||||||
|
%p
|
||||||
|
= f.label :username
|
||||||
|
%br
|
||||||
|
= f.text_field :username
|
||||||
|
%p
|
||||||
|
= f.label :url
|
||||||
|
%br
|
||||||
|
= f.text_field :url
|
||||||
|
%p
|
||||||
|
= f.submit
|
||||||
|
|
||||||
|
|
||||||
|
%p= link_to "Back to List", friends_path
|
||||||
13
app/views/friends/show.html.haml
Normal file
13
app/views/friends/show.html.haml
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
- title "Friend"
|
||||||
|
|
||||||
|
%p
|
||||||
|
%strong Username:
|
||||||
|
= @friend.username
|
||||||
|
%p
|
||||||
|
%strong Url:
|
||||||
|
= @friend.url
|
||||||
|
|
||||||
|
%p
|
||||||
|
= link_to "Destroy", @friend, :confirm => 'Are you sure?', :method => :delete
|
||||||
|
|
|
||||||
|
= link_to "View All", friends_path
|
||||||
|
|
@ -27,6 +27,7 @@
|
||||||
%ul.nav
|
%ul.nav
|
||||||
%li= link_to "Users", users_url
|
%li= link_to "Users", users_url
|
||||||
%li= link_to "Status Messages", status_messages_url
|
%li= link_to "Status Messages", status_messages_url
|
||||||
|
%li= link_to "Friends", friends_url
|
||||||
|
|
||||||
.container
|
.container
|
||||||
- if show_title?
|
- if show_title?
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
Diaspora::Application.routes.draw do |map|
|
Diaspora::Application.routes.draw do |map|
|
||||||
|
resources :friends
|
||||||
|
|
||||||
resources :status_messages
|
resources :status_messages
|
||||||
|
|
||||||
#routes for devise, not really sure you will need to mess with this in the future, lets put default,
|
#routes for devise, not really sure you will need to mess with this in the future, lets put default,
|
||||||
|
|
|
||||||
50
spec/controllers/friends_controller_spec.rb
Normal file
50
spec/controllers/friends_controller_spec.rb
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
require File.dirname(__FILE__) + '/../spec_helper'
|
||||||
|
|
||||||
|
describe FriendsController do
|
||||||
|
render_views
|
||||||
|
before do
|
||||||
|
#TODO(dan) Mocking Warden; this is a temp fix
|
||||||
|
request.env['warden'] = mock_model(Warden, :authenticate => @user, :authenticate! => @user)
|
||||||
|
Friend.create(:username => "max", :url => "http://max.com/")
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
it "index action should render index template" do
|
||||||
|
request.env['warden'].should_receive(:authenticate?).at_least(:once)
|
||||||
|
|
||||||
|
get :index
|
||||||
|
response.should render_template(:index)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "show action should render show template" do
|
||||||
|
request.env['warden'].should_receive(:authenticate?).at_least(:once)
|
||||||
|
get :show, :id => Friend.first.id
|
||||||
|
response.should render_template(:show)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "destroy action should destroy model and redirect to index action" do
|
||||||
|
friend = Friend.first
|
||||||
|
delete :destroy, :id => friend.id
|
||||||
|
response.should redirect_to(friends_url)
|
||||||
|
Friend.first(:conditions => {:id => friend.id}).should be_nil
|
||||||
|
end
|
||||||
|
|
||||||
|
it "new action should render new template" do
|
||||||
|
request.env['warden'].should_receive(:authenticate?).at_least(:once)
|
||||||
|
get :new
|
||||||
|
response.should render_template(:new)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "create action should render new template when model is invalid" do
|
||||||
|
request.env['warden'].should_receive(:authenticate?).at_least(:once)
|
||||||
|
Friend.any_instance.stubs(:valid?).returns(false)
|
||||||
|
post :create
|
||||||
|
response.should render_template(:new)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "create action should redirect when model is valid" do
|
||||||
|
Friend.any_instance.stubs(:valid?).returns(true)
|
||||||
|
post :create
|
||||||
|
response.should redirect_to(friend_url(assigns[:friend]))
|
||||||
|
end
|
||||||
|
end
|
||||||
12
spec/models/friend_spec.rb
Normal file
12
spec/models/friend_spec.rb
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
require File.dirname(__FILE__) + '/../spec_helper'
|
||||||
|
|
||||||
|
describe Friend do
|
||||||
|
it 'should have a diaspora username + diaspora url' do
|
||||||
|
n = Friend.new(:username => 'max')
|
||||||
|
n.valid?.should == false
|
||||||
|
n.url = "http://max.com/"
|
||||||
|
n.valid?.should == true
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
Loading…
Reference in a new issue