From 81cd1753e4813bd8726774f6d025a8329cac1930 Mon Sep 17 00:00:00 2001 From: Steffen van Bergerem Date: Sun, 15 Mar 2015 03:05:57 +0100 Subject: [PATCH] Improve link to original post in reshared polls --- app/assets/javascripts/app/views/poll_view.js | 16 ++++++++----- app/assets/templates/poll_tpl.jst.hbs | 4 ++-- config/locales/javascript/javascript.en.yml | 3 ++- features/desktop/reshare.feature | 23 +++++++++++++------ spec/javascripts/app/views/poll_view_spec.js | 22 +++++++++++------- spec/models/reshare_spec.rb | 2 +- 6 files changed, 45 insertions(+), 25 deletions(-) diff --git a/app/assets/javascripts/app/views/poll_view.js b/app/assets/javascripts/app/views/poll_view.js index 38f943e33..14355716d 100644 --- a/app/assets/javascripts/app/views/poll_view.js +++ b/app/assets/javascripts/app/views/poll_view.js @@ -14,14 +14,18 @@ app.views.Poll = app.views.Base.extend({ presenter: function(){ var defaultPresenter = this.defaultPresenter(); - var isResharePost = (this.model.get('post_type') == 'Reshare'); - var show_form = defaultPresenter.loggedIn && - !isResharePost && - !this.model.get('already_participated_in_poll'); + var isReshare = (this.model.get('post_type') === 'Reshare'); + var showForm = defaultPresenter.loggedIn && + !isReshare && + !this.model.get('already_participated_in_poll'); + var originalPostLink = isReshare && this.model.get('root') ? + '' + Diaspora.I18n.t('poll.original_post') + '' : + ''; return _.extend(defaultPresenter, { - show_form: show_form, - is_reshare_post: isResharePost + show_form: showForm, + is_reshare: isReshare, + original_post_link: originalPostLink }); }, diff --git a/app/assets/templates/poll_tpl.jst.hbs b/app/assets/templates/poll_tpl.jst.hbs index b55c923f8..4b73b1a86 100644 --- a/app/assets/templates/poll_tpl.jst.hbs +++ b/app/assets/templates/poll_tpl.jst.hbs @@ -38,9 +38,9 @@ {{/poll.poll_answers}} {{/if}} - {{#if is_reshare_post }} + {{#if is_reshare }} {{/if}} diff --git a/config/locales/javascript/javascript.en.yml b/config/locales/javascript/javascript.en.yml index 6cac42652..cf869a965 100644 --- a/config/locales/javascript/javascript.en.yml +++ b/config/locales/javascript/javascript.en.yml @@ -227,7 +227,8 @@ en: poll: vote: "Vote" - vote_original_post: 'Vote original post' + go_to_original_post: "You can participate in this poll on the <%= original_post_link %>." + original_post: "original post" result: "Result" count: one: "1 vote so far" diff --git a/features/desktop/reshare.feature b/features/desktop/reshare.feature index 928813e49..26c760be5 100644 --- a/features/desktop/reshare.feature +++ b/features/desktop/reshare.feature @@ -11,10 +11,11 @@ Feature: public repost | Alice Smith | alice@alice.alice | | Eve Doe | eve@eve.eve | And a user with email "bob@bob.bob" is connected with "alice@alice.alice" + And a user with email "eve@eve.eve" is connected with "bob@bob.bob" + And "bob@bob.bob" has a public post with text "reshare this!" Scenario: Resharing a post from a single post page - Given "bob@bob.bob" has a public post with text "reshare this!" - And I sign in as "alice@alice.alice" + Given I sign in as "alice@alice.alice" And I am on "bob@bob.bob"'s page And I open the show page of the "reshare this!" post And I click on selector "a.reshare" @@ -23,8 +24,7 @@ Feature: public repost And I should see a flash message containing "successfully" Scenario: Resharing a post from a single post page that is reshared - Given "bob@bob.bob" has a public post with text "reshare this!" - And the post with text "reshare this!" is reshared by "eve@eve.eve" + Given the post with text "reshare this!" is reshared by "eve@eve.eve" And I sign in as "alice@alice.alice" And I am on "bob@bob.bob"'s page And I open the show page of the "reshare this!" post @@ -33,12 +33,21 @@ Feature: public repost Then I should see a flash message indicating success And I should see a flash message containing "successfully" + Scenario: Delete original reshared post + Given "alice@alice.alice" has a public post with text "Don't reshare this!" + And the post with text "Don't reshare this!" is reshared by "bob@bob.bob" + And I sign in as "alice@alice.alice" + And I am on "alice@alice.alice"'s page + + When I click to delete the first post + And I log out + And I sign in as "bob@bob.bob" + Then I should see "Original post deleted by author" within ".reshare" + # should be covered in rspec, so testing that the post is added to # app.stream in jasmine should be enough coverage Scenario: When I reshare, it shows up on my profile page - Given "bob@bob.bob" has a public post with text "reshare this!" - And I sign in as "alice@alice.alice" - + Given I sign in as "alice@alice.alice" And I follow "Reshare" And I confirm the alert Then I should see a flash message indicating success diff --git a/spec/javascripts/app/views/poll_view_spec.js b/spec/javascripts/app/views/poll_view_spec.js index 288a938d3..31372dca5 100644 --- a/spec/javascripts/app/views/poll_view_spec.js +++ b/spec/javascripts/app/views/poll_view_spec.js @@ -44,33 +44,39 @@ describe("app.views.Poll", function(){ }); }); - describe('reshared post', function(){ + describe("reshared post", function(){ beforeEach(function(){ - this.view.model.set('post_type', 'Reshare'); - this.view.model.set('root', {id: 1}); + Diaspora.I18n.load({ + poll: { + go_to_original_post: "You can participate in this poll on the <%= original_post_link %>.", + original_post: "original post" + } + }); + this.view.model.attributes.post_type = "Reshare"; + this.view.model.attributes.root = {id: 1}; this.view.render(); }); - it('hide vote form', function(){ + it("hides the vote form", function(){ expect(this.view.$('form').length).toBe(0); }); - it("show a.root_post_link", function(){ + it("shows a.root_post_link", function(){ var id = this.view.model.get('root').id; expect(this.view.$('a.root_post_link').attr('href')).toBe('/posts/'+id); }); }); describe("vote form", function(){ - it('show vote form when user is logged in and not voted before', function(){ + it("shows vote form when user is logged in and not voted before", function(){ expect(this.view.$('form').length).toBe(1); }); - it('hide vote form when user voted before', function(){ + it("hides vote form when user voted before", function(){ this.view.model.attributes.already_participated_in_poll = true; this.view.render(); expect(this.view.$('form').length).toBe(0); }); - it("hide vote form when user not logged in", function(){ + it("hides vote form when user not logged in", function(){ logout(); this.view.render(); expect(this.view.$('form').length).toBe(0); diff --git a/spec/models/reshare_spec.rb b/spec/models/reshare_spec.rb index a18b0e481..86da365db 100644 --- a/spec/models/reshare_spec.rb +++ b/spec/models/reshare_spec.rb @@ -70,7 +70,7 @@ describe Reshare, :type => :model do end it 'contains root poll' do - @reshare.poll == @root_post.poll + expect(@reshare.poll).to eq @root_post.poll end end