Skip to content
Extraits de code Groupes Projets
Valider fa926954 rédigé par Maxwell Salzberg's avatar Maxwell Salzberg Validation de Raphael Sofaer
Parcourir les fichiers

wip removed some generated specs

parent 06f886ad
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de
avec 175 ajouts et 7 suppressions
...@@ -44,7 +44,7 @@ class AspectsController < ApplicationController ...@@ -44,7 +44,7 @@ class AspectsController < ApplicationController
@aspect_ids = @aspects.map { |a| a.id } @aspect_ids = @aspects.map { |a| a.id }
posts = current_user.visible_posts(:by_members_of => @aspect_ids, posts = current_user.visible_posts(:by_members_of => @aspect_ids,
:type => ['StatusMessage','ActivityStreams::Photo'], :type => ['StatusMessage','Reshare', 'ActivityStreams::Photo'],
:order => session[:sort_order] + ' DESC', :order => session[:sort_order] + ' DESC',
:max_time => params[:max_time].to_i :max_time => params[:max_time].to_i
).includes(:mentions => {:person => :profile}) ).includes(:mentions => {:person => :profile})
......
class ResharesController < ApplicationController
before_filter :authenticate_user!
respond_to :js
def create
@reshare = current_user.build_post(:reshare, :root_id => params[:root_id])
if @reshare.save!
current_user.add_to_streams(@reshare, current_user.aspects)
end
respond_with @reshare
end
end
module ResharesHelper
end
class Reshare < Post
belongs_to :root, :class_name => 'Post'
validate :root_must_be_public
attr_accessible :root_id,
before_validation do
self.public = true
end
delegate :photos, :text, :comments, :to => :root
private
def root_must_be_public
if self.root.nil? || !self.root.public
errors[:base] << "you must reshare public posts"
return false
end
end
end
$('.stream_element[data-guid=<%=params[:root_id]%>]').addClass('reshared');
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
-# the COPYRIGHT file. -# the COPYRIGHT file.
= render :partial => 'shared/stream_element', = render :partial => 'shared/stream_element_shim',
:collection => posts, :collection => posts,
:as => :post, :as => :post,
:locals => { :commenting_disabled => defined?(@commenting_disabled)} :locals => { :commenting_disabled => defined?(@commenting_disabled)}
......
...@@ -4,11 +4,18 @@ ...@@ -4,11 +4,18 @@
.stream_element{:id => post.guid} .stream_element{:id => post.guid}
- if current_user && post.author.owner_id == current_user.id - if current_user && post.author.owner_id == current_user.id
- if reshare
.reshare_attribution
= "reshared by #{reshare.author.name}"
.right.controls .right.controls
= link_to image_tag('deletelabel.png'), post_path(post), :confirm => t('are_you_sure'), :method => :delete, :remote => true, :class => "delete stream_element_delete", :title => t('delete') = link_to image_tag('deletelabel.png'), post_path(post), :confirm => t('are_you_sure'), :method => :delete, :remote => true, :class => "delete stream_element_delete", :title => t('delete')
- else - else
.right.controls .right
= link_to image_tag('deletelabel.png'), post_visibility_path(:id => "42", :post_id => post.id), :method => :put, :remote => true, :class => "delete stream_element_delete", :title => t('hide') - if reshare
.reshare_attribution= "reshared by #{reshare.author.name}"
.controls
= link_to image_tag('deletelabel.png'), post_visibility_path(:id => "42", :post_id => post.id), :method => :put, :remote => true, :class => "delete stream_element_delete", :title => t('hide')
.undo_text.hidden .undo_text.hidden
= t('post_visibilites.update.post_hidden', :name => post.author.name) = t('post_visibilites.update.post_hidden', :name => post.author.name)
= link_to t('undo'), post_visibility_path(:id => "42", :post_id => post.id), :method => :put, :remote => true, :class => "delete stream_element_delete" = link_to t('undo'), post_visibility_path(:id => "42", :post_id => post.id), :method => :put, :remote => true, :class => "delete stream_element_delete"
......
-if post.model.is_a?(Reshare)
= render 'shared/stream_element', :post => post.root, :all_aspects => all_aspects, :commenting_disabled => commenting_disabled, :reshare => post
- else
= render 'shared/stream_element', :post => post, :all_aspects => all_aspects, :commenting_disabled => commenting_disabled, :reshare => nil
class AddRootIdToPosts < ActiveRecord::Migration
def self.up
add_column :posts, :root_id, :integer
end
def self.down
remove_column :posts, :root_id
end
end
@javascript
Feature: public repost
In order to make Diaspora more viral
As a User
I want to reshare my friends post
Background:
Given a user named "Bob Jones" with email "bob@bob.bob"
And a user named "Alice Smith" with email "alice@alice.alice"
And a user with email "bob@bob.bob" is connected with "alice@alice.alice"
And "bob@bob.bob" has a public post with text "reshare this!"
And I sign in as "alice@alice.alice"
And I preemptively confirm the alert
And I follow "Reshare"
And I wait for the ajax to finish
Scenario: shows up on the profile page
Then I should see a ".reshared"
And I am on "alice@alice.alice"'s page
Then I should see "reshare this!"
Then I should see a ".reshared"
And I should see "Bob"
Scenario: shows up on the aspects page
Then I should see a ".reshared"
And I follow "All Aspects"
Then I should see "reshare this!"
Then I should see a ".reshared"
And I should see "Bob"
...@@ -376,6 +376,10 @@ ul.as-selections ...@@ -376,6 +376,10 @@ ul.as-selections
&:hover &:hover
:text :text
:decoration none :decoration none
.reshare_attribution
:font-size smaller
.reshared
:background-color #eee
.stream_element .stream_element
:position relative :position relative
......
...@@ -179,6 +179,12 @@ describe AspectsController do ...@@ -179,6 +179,12 @@ describe AspectsController do
assigns(:posts).models.length.should == 2 assigns(:posts).models.length.should == 2
end end
it "posts include reshares" do
reshare = alice.post(:reshare, :public => true, :root_id => Factory(:status_message, :public => true).id, :to => alice.aspects)
get :index
assigns[:posts].post_fakes.map{|x| x.id}.should include(reshare.id)
end
it "can filter to a single aspect" do it "can filter to a single aspect" do
get :index, :a_ids => [@alices_aspect_2.id.to_s] get :index, :a_ids => [@alices_aspect_2.id.to_s]
assigns(:posts).models.length.should == 1 assigns(:posts).models.length.should == 1
......
...@@ -206,7 +206,7 @@ describe PeopleController do ...@@ -206,7 +206,7 @@ describe PeopleController do
end end
it "posts include reshares" do it "posts include reshares" do
reshare = @user.post(:reshare, :public => true, :root_id => Factory(:status_message, :public => true).id) reshare = @user.post(:reshare, :public => true, :root_id => Factory(:status_message, :public => true).id, :to => alice.aspects)
get :show, :id => @user.person.id get :show, :id => @user.person.id
assigns[:posts].post_fakes.map{|x| x.id}.should include(reshare.id) assigns[:posts].post_fakes.map{|x| x.id}.should include(reshare.id)
end end
...@@ -259,7 +259,7 @@ describe PeopleController do ...@@ -259,7 +259,7 @@ describe PeopleController do
end end
it "posts include reshares" do it "posts include reshares" do
reshare = @user.post(:reshare, :public => true, :root_id => Factory(:status_message, :public => true).id) reshare = @user.post(:reshare, :public => true, :root_id => Factory(:status_message, :public => true).id, :to => alice.aspects)
get :show, :id => @user.person.id get :show, :id => @user.person.id
assigns[:posts].post_fakes.map{|x| x.id}.should include(reshare.id) assigns[:posts].post_fakes.map{|x| x.id}.should include(reshare.id)
end end
...@@ -297,7 +297,7 @@ describe PeopleController do ...@@ -297,7 +297,7 @@ describe PeopleController do
end end
it "posts include reshares" do it "posts include reshares" do
reshare = @user.post(:reshare, :public => true, :root_id => Factory(:status_message, :public => true).id) reshare = @user.post(:reshare, :public => true, :root_id => Factory(:status_message, :public => true).id, :to => alice.aspects)
get :show, :id => @user.person.id get :show, :id => @user.person.id
assigns[:posts].post_fakes.map{|x| x.id}.should include(reshare.id) assigns[:posts].post_fakes.map{|x| x.id}.should include(reshare.id)
end end
......
require 'spec_helper'
describe ResharesController do
describe '#create' do
it 'requires authentication' do
post :create, :format => :js
response.should_not be_success
end
context 'with an authenticated user' do
before do
sign_in :user, bob
@post_id = Factory(:status_message, :public => true).id
@controller.stub(:current_user).and_return(bob)
end
it 'succeeds' do
post :create, :format => :js, :root_id => @post_id
puts response.code
response.should be_success
end
it 'creates a reshare' do
expect{
post :create, :format => :js, :root_id => @post_id
}.should change(Reshare, :count).by(1)
end
it 'after save, calls add to streams' do
bob.should_receive(:add_to_streams)
post :create, :format => :js, :root_id => @post_id
end
end
end
end
require 'spec_helper'
# Specs in this file have access to a helper object that includes
# the ResharesHelper. For example:
#
# describe ResharesHelper do
# describe "string concat" do
# it "concats two strings with spaces" do
# helper.concat_strings("this","that").should == "this that"
# end
# end
# end
describe ResharesHelper do
pending "add some examples to (or delete) #{__FILE__}"
end
require 'spec_helper'
describe Reshare do
it 'has a valid Factory' do
Factory(:reshare).should be_valid
end
it 'requires root' do
reshare = Factory.build(:reshare, :root => nil)
reshare.should_not be_valid
end
it 'require public root' do
Factory.build(:reshare, :root => Factory.build(:status_message, :public => false)).should_not be_valid
end
it 'forces public' do
Factory(:reshare, :public => false).public.should be_true
end
end
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter