Skip to content

Commit

Permalink
Fixed 4903 and not render vote form when user is not logged
Browse files Browse the repository at this point in the history
  • Loading branch information
hpetru committed Apr 5, 2014
1 parent c634aba commit 2ae4d41
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 4 deletions.
10 changes: 10 additions & 0 deletions app/assets/javascripts/app/views/poll_view.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@ app.views.Poll = app.views.Base.extend({
this.model.bind('change', this.render, this);
},

presenter: function(){
var defaultPresenter = this.defaultPresenter();
var show_form = defaultPresenter.loggedIn &&
!this.model.attributes.already_participated_in_poll;

return _.extend(defaultPresenter, {
show_form: show_form
});
},

postRenderTemplate: function() {
this.poll = this.model.attributes.poll;
this.setProgressBar();
Expand Down
4 changes: 2 additions & 2 deletions app/assets/templates/poll_tpl.jst.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
</div>
</div>
<div class="row-fluid poll_content">
{{#unless already_participated_in_poll}}
{{#if show_form}}
<form action="/posts/{{poll.post_id}}/poll_participations" method="POST">
{{#poll.poll_answers}}
<label class="radio result-row">
Expand Down Expand Up @@ -36,7 +36,7 @@
</div>
</div>
{{/poll.poll_answers}}
{{/unless}}
{{/if}}
</div>
</div>
{{/if}}
2 changes: 1 addition & 1 deletion app/presenters/post_presenter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ def user_signed_in?
private

def already_participated_in_poll
if @post.poll
if @post.poll && user_signed_in?
@post.poll.already_participated?(current_user)
end
end
Expand Down
18 changes: 17 additions & 1 deletion spec/javascripts/app/views/poll_view_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,21 @@ describe("app.views.Poll", function(){
expect(obj.poll_id).toBe(poll.poll_id);
expect(obj.poll_answer_id).toBe(answer.id);
})
})
});

describe("vote form", function(){
it('show 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(){
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(){
logout();
this.view.render();
expect(this.view.$('form').length).toBe(0);
});
});
});
8 changes: 8 additions & 0 deletions spec/presenters/post_presenter_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
describe PostPresenter do
before do
@sm = FactoryGirl.create(:status_message, :public => true)
@sm_with_poll = FactoryGirl.create(:status_message_with_poll, public: true)
@presenter = PostPresenter.new(@sm, bob)
@unauthenticated_presenter = PostPresenter.new(@sm)
end
Expand Down Expand Up @@ -96,4 +97,11 @@
end
end
end

describe '#poll' do
it 'works without a user' do
presenter = PostPresenter.new(@sm_with_poll)
presenter.as_json.should be_a(Hash)
end
end
end

0 comments on commit 2ae4d41

Please sign in to comment.