Activity stream keeping retracted participations

This commit is contained in:
Asphyxia 2013-01-27 00:19:27 -03:00 committed by Marcelo Briones
parent 5481ddb540
commit 5fb328864e
5 changed files with 124 additions and 0 deletions

View file

@ -22,6 +22,7 @@ class Comment < ActiveRecord::Base
belongs_to :commentable, :touch => true, :polymorphic => true
alias_attribute :post, :commentable
belongs_to :author, :class_name => 'Person'
has_one :participation, :dependent => :destroy, :foreign_key => :target_id, :primary_key => :commentable_id
delegate :name, to: :author, prefix: true
delegate :comment_email_subject, to: :parent

View file

@ -12,6 +12,7 @@ class Like < Federated::Relayable
{:target => @target, :positive => true}
end
end
has_one :participation, :dependent => :destroy, :foreign_key => :target_id, :primary_key => :target_id
after_commit :on => :create do
self.parent.update_likes_counter

View file

@ -0,0 +1,108 @@
@javascript
Feature: The activity stream
Background:
Given following users exist:
| username | email |
| Bob Jones | bob@bob.bob |
| Alice Smith | alice@alice.alice |
And a user with email "bob@bob.bob" is connected with "alice@alice.alice"
When "alice@alice.alice" has posted a status message with a photo
Scenario: Sorting
When I sign in as "bob@bob.bob"
And I post "A- I like turtles"
And I wait for 1 second
And I post "B- barack obama is your new bicycle"
And I wait for 1 second
And I post "C- barack obama is a square"
And I wait for 1 second
When I go to the activity stream page
Then "C- barack obama is a square" should be post 1
And "B- barack obama is your new bicycle" should be post 2
And "A- I like turtles" should be post 3
When I like the post "A- I like turtles"
And I wait for 1 second
And I comment "Sassy sawfish" on "C- barack obama is a square"
And I wait for 1 second
And I like the post "B- barack obama is your new bicycle"
And I wait for 1 second
When I go to the activity stream page
Then "B- barack obama is your new bicycle" should be post 1
And "C- barack obama is a square" should be post 2
And "A- I like turtles" should be post 3
Scenario: delete a comment
When I sign in as "bob@bob.bob"
And I am on "alice@alice.alice"'s page
Then I should see "Look at this dog"
When I focus the comment field
And I fill in the following:
| text | is that a poodle? |
And I press "Comment"
And I wait for the ajax to finish
When I go to the activity stream page
Then I should see "Look at this dog"
And I should see "is that a poodle?"
When I am on "alice@alice.alice"'s page
And I hover over the ".comment"
And I preemptively confirm the alert
And I click to delete the first comment
And I wait for the ajax to finish
And I go to the activity stream page
Then I should not see "Look at this dog"
Scenario: unliking a post
When I sign in as "bob@bob.bob"
And I am on "alice@alice.alice"'s page
Then I should see "Look at this dog"
When I like the post "Look at this dog"
And I go to the activity stream page
Then I should see "Look at this dog"
When I am on "alice@alice.alice"'s page
And I unlike the post "Look at this dog"
And I go to the activity stream page
Then I should not see "Look at this dog"
Scenario: multiple participations
When I sign in as "bob@bob.bob"
And I am on "alice@alice.alice"'s page
Then I should see "Look at this dog"
When I like the post "Look at this dog"
And I go to the activity stream page
Then I should see "Look at this dog"
When I am on "alice@alice.alice"'s page
Then I should see "Look at this dog"
When I focus the comment field
And I fill in the following:
| text | is that a poodle? |
And I press "Comment"
And I wait for the ajax to finish
And I go to the activity stream page
Then I should see "Look at this dog"
When I am on "alice@alice.alice"'s page
And I unlike the post "Look at this dog"
And I go to the activity stream page
Then I should see "Look at this dog"
When I am on "alice@alice.alice"'s page
And I hover over the ".comment"
And I preemptively confirm the alert
And I click to delete the first comment
And I wait for the ajax to finish
And I go to the activity stream page
Then I should not see "Look at this dog"

View file

@ -2,6 +2,14 @@ When /^I (?:like|unlike) the post "([^"]*)" in the stream$/ do |post_text|
like_stream_post(post_text)
end
Then /^I should see an image in the publisher$/ do
photo_in_publisher.should be_present
end
Then /^I (un)?like the post "([^"]*)"$/ do |negate, post_text|
negate ? unlike_post(post_text) : like_post(post_text)
end
Then /^"([^"]*)" should be post (\d+)$/ do |post_text, position|
stream_element_numbers_content(position).should have_content(post_text)
end

View file

@ -106,6 +106,12 @@ module PublishingCukeHelpers
end
end
def unlike_post(post_text)
within_post(post_text) do
find(:css, 'a.unlike').click
end
end
def stream_posts
all('.stream_element')
end