Commit b11e961f by Tô Ngọc Ánh

Add user microposts

parent f7e94cee
Pipeline #678 failed with stages
in 0 seconds
class MicropostsController < ApplicationController
before_action :signed_in_user, only: [:create, :destroy]
before_action :correct_user, only: :destroy
def index
end
......@@ -10,11 +11,14 @@ class MicropostsController < ApplicationController
flash[:success] = "Micropost created!"
redirect_to root_url
else
@feed_items = []
render 'static_pages/home'
end
end
def destroy
@micropost.destroy
redirect_to root_url
end
private
......@@ -22,4 +26,9 @@ class MicropostsController < ApplicationController
def micropost_params
params.require(:micropost).permit(:content)
end
def correct_user
@micropost = current_user.microposts.find_by(id: params[:id])
redirect_to root_url if @micropost.nil?
end
end
\ No newline at end of file
class StaticPagesController < ApplicationController
def home
@micropost = current_user.microposts.build if signed_in?
if signed_in?
@micropost = current_user.microposts.build
@feed_items = current_user.feed.paginate(page: params[:page])
end
end
def help
......
......@@ -18,6 +18,10 @@ class User < ActiveRecord::Base
Digest::SHA1.hexdigest(token.to_s)
end
def feed
Micropost.where("user_id = ?", id)
end
private
def create_remember_token
......
......@@ -3,4 +3,9 @@
<span class="timestamp">
Posted <%= time_ago_in_words(micropost.created_at) %> ago.
</span>
<% if current_user?(micropost.user) %>
<%= link_to "delete", micropost, method: :delete,
data: { confirm: "You sure?" },
title: micropost.content %>
<% end %>
</li>
\ No newline at end of file
<% if @feed_items.any? %>
<ol class="microposts">
<%= render partial: 'shared/feed_item', collection: @feed_items %>
</ol>
<%= will_paginate @feed_items %>
<% end %>
\ No newline at end of file
<li id="<%= feed_item.id %>">
<%= link_to gravatar_for(feed_item.user), feed_item.user %>
<span class="user">
<%= link_to feed_item.user.name, feed_item.user %>
</span>
<span class="content"><%= feed_item.content %></span>
<span class="timestamp">
Posted <%= time_ago_in_words(feed_item.created_at) %> ago.
</span>
<% if current_user?(feed_item.user) %>
<%= link_to "delete", feed_item, method: :delete, data: { confirm: "You sure?" }, title: feed_item.content %>
<% end %>
</li>
\ No newline at end of file
......@@ -8,6 +8,10 @@
<%= render 'shared/micropost_form' %>
</section>
</aside>
<div class="span8">
<h3>Micropost Feed</h3>
<%= render 'shared/feed' %>
</div>
</div>
<% else %>
<div class="center hero-unit">
......
......@@ -15,6 +15,7 @@ describe User do
it { should respond_to(:admin) }
it { should respond_to(:microposts) }
it { should respond_to(:feed) }
it { should be_valid }
......@@ -140,5 +141,15 @@ describe User do
expect(Micropost.where(id: micropost.id)).to be_empty
end
end
describe "status" do
let(:unfollowed_post) do
FactoryGirl.create(:micropost, user: FactoryGirl.create(:user))
end
its(:feed) { should include(newer_micropost) }
its(:feed) { should include(older_micropost) }
its(:feed) { should_not include(unfollowed_post) }
end
end
end
......@@ -29,4 +29,16 @@ describe "MicropostPages" do
end
end
end
describe "micropost destruction" do
before { FactoryGirl.create(:micropost, user: user) }
describe "as correct user" do
before { visit root_path }
it "should delete a micropost" do
expect { click_link "delete" }.to change(Micropost, :count).by(-1)
end
end
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment