<%= t("proposals.show.author_deleted") %>
diff --git a/app/views/proposals/show.html.erb b/app/views/proposals/show.html.erb
index 06e61937a..95adf93aa 100644
--- a/app/views/proposals/show.html.erb
+++ b/app/views/proposals/show.html.erb
@@ -29,7 +29,7 @@
<%= avatar_image(@proposal.author, seed: @proposal.author_id, size: 32, class: 'author-photo') %>
- <% if @proposal.author.hidden? %>
+ <% if @proposal.author.hidden? || @proposal.author.erased? %>
<%= t("proposals.show.author_deleted") %>
diff --git a/spec/features/comments/debates_spec.rb b/spec/features/comments/debates_spec.rb
index 4b8b23ce8..1fad7affe 100644
--- a/spec/features/comments/debates_spec.rb
+++ b/spec/features/comments/debates_spec.rb
@@ -193,6 +193,18 @@ feature 'Commenting debates' do
end
end
+ scenario "Erasing a comment's author" do
+ debate = create(:debate)
+ comment = create(:comment, commentable: debate, body: 'this should be visible')
+ comment.user.erase
+
+ visit debate_path(debate)
+ within "#comment_#{comment.id}" do
+ expect(page).to have_content('Deleted user')
+ expect(page).to have_content('this should be visible')
+ end
+ end
+
feature "Moderators" do
scenario "can create comment as a moderator", :js do
moderator = create(:moderator)
diff --git a/spec/features/comments/proposals_spec.rb b/spec/features/comments/proposals_spec.rb
index 9c6b99a6a..ad3c26be9 100644
--- a/spec/features/comments/proposals_spec.rb
+++ b/spec/features/comments/proposals_spec.rb
@@ -193,6 +193,18 @@ feature 'Commenting proposals' do
end
end
+ scenario "Erasing a comment's author" do
+ proposal = create(:proposal)
+ comment = create(:comment, commentable: proposal, body: "this should be visible")
+ comment.user.erase
+
+ visit proposal_path(proposal)
+ within "#comment_#{comment.id}" do
+ expect(page).to have_content('Deleted user')
+ expect(page).to have_content('this should be visible')
+ end
+ end
+
feature "Moderators" do
scenario "can create comment as a moderator", :js do
moderator = create(:moderator)
diff --git a/spec/features/debates_spec.rb b/spec/features/debates_spec.rb
index c633f1b2f..717f02c20 100644
--- a/spec/features/debates_spec.rb
+++ b/spec/features/debates_spec.rb
@@ -523,4 +523,16 @@ feature 'Debates' do
visit debate_path(good_debate)
expect(page).to_not have_content "This debate has been flag as innapropiate for some users."
end
+
+ scenario 'Erased author' do
+ user = create(:user)
+ debate = create(:debate, author: user)
+ user.erase
+
+ visit debates_path
+ expect(page).to have_content('Deleted user')
+
+ visit debate_path(debate)
+ expect(page).to have_content('Deleted user')
+ end
end
diff --git a/spec/features/proposals_spec.rb b/spec/features/proposals_spec.rb
index 7bb1146ec..d15ade63b 100644
--- a/spec/features/proposals_spec.rb
+++ b/spec/features/proposals_spec.rb
@@ -605,4 +605,16 @@ feature 'Proposals' do
expect(Flag.flagged?(user, proposal)).to_not be
end
+
+ scenario 'Erased author' do
+ user = create(:user)
+ proposal = create(:proposal, author: user)
+ user.erase
+
+ visit proposals_path
+ expect(page).to have_content('Deleted user')
+
+ visit proposal_path(proposal)
+ expect(page).to have_content('Deleted user')
+ end
end
diff --git a/spec/models/comment_spec.rb b/spec/models/comment_spec.rb
index fdb632986..6d37eb71b 100644
--- a/spec/models/comment_spec.rb
+++ b/spec/models/comment_spec.rb
@@ -57,6 +57,11 @@ describe Comment do
.to change { [comment.reload.updated_at, comment.author.updated_at] }
end
+ it "expires cache when the author is erased" do
+ expect { comment.user.erase }
+ .to change { [comment.reload.updated_at, comment.author.updated_at] }
+ end
+
it "expires cache when the author changes" do
expect { comment.user.update(username: "Isabel") }
.to change { [comment.reload.updated_at, comment.author.updated_at] }
diff --git a/spec/models/debate_spec.rb b/spec/models/debate_spec.rb
index a9ef3892a..159ebdbb1 100644
--- a/spec/models/debate_spec.rb
+++ b/spec/models/debate_spec.rb
@@ -380,6 +380,11 @@ describe Debate do
.to change { [debate.reload.updated_at, debate.author.updated_at] }
end
+ it "should expire cache when the author is erased" do
+ expect { debate.author.erase }
+ .to change { [debate.reload.updated_at, debate.author.updated_at] }
+ end
+
it "should expire cache when its author changes" do
expect { debate.author.update(username: "Eva") }
.to change { [debate.reload.updated_at, debate.author.updated_at] }
diff --git a/spec/models/proposal_spec.rb b/spec/models/proposal_spec.rb
index 964f8f057..bb13f0769 100644
--- a/spec/models/proposal_spec.rb
+++ b/spec/models/proposal_spec.rb
@@ -304,4 +304,55 @@ describe Proposal do
end
end
+
+ describe "cache" do
+ let(:proposal) { create(:proposal) }
+
+ it "should expire cache when it has a new comment" do
+ expect { create(:comment, commentable: proposal) }
+ .to change { proposal.updated_at }
+ end
+
+ it "should expire cache when it has a new vote" do
+ expect { create(:vote, votable: proposal) }
+ .to change { proposal.updated_at }
+ end
+
+ it "should expire cache when it has a new flag" do
+ expect { create(:flag, flaggable: proposal) }
+ .to change { proposal.reload.updated_at }
+ end
+
+ it "should expire cache when it has a new tag" do
+ expect { proposal.update(tag_list: "new tag") }
+ .to change { proposal.updated_at }
+ end
+
+ it "should expire cache when hidden" do
+ expect { proposal.hide }
+ .to change { proposal.updated_at }
+ end
+
+ it "should expire cache when the author is hidden" do
+ expect { proposal.author.hide }
+ .to change { [proposal.reload.updated_at, proposal.author.updated_at] }
+ end
+
+ it "should expire cache when the author is erased" do
+ expect { proposal.author.erase }
+ .to change { [proposal.reload.updated_at, proposal.author.updated_at] }
+ end
+
+ it "should expire cache when its author changes" do
+ expect { proposal.author.update(username: "Eva") }
+ .to change { [proposal.reload.updated_at, proposal.author.updated_at] }
+ end
+
+ it "should expire cache when the author's organization get verified" do
+ create(:organization, user: proposal.author)
+ expect { proposal.author.organization.verify }
+ .to change { [proposal.reload.updated_at, proposal.author.updated_at] }
+ end
+ end
+
end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 2e92ced35..9b045a7ed 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -317,7 +317,7 @@ describe User do
user.reload
expect(user.erase_reason).to eq('a test')
- expect(user.hidden_at).to be
+ expect(user.erased_at).to be
expect(user.username).to be_nil