Commit 2f7c368f7df1c3a0f99d9f87fe9265fc479cfb08
1 parent
f61d401e
Exists in
temp_ratings
Add ajax route to rate community
Signed-off-by: DylanGuedes <djmgguedes@gmail.com> Signed-off-by: Fabio Teixeira <fabio1079@gmail.com> Signed-off-by: Filipe Ribeiro <firibeiro77@live.com>
Showing
2 changed files
with
81 additions
and
0 deletions
Show diff stats
plugins/communities_ratings/controllers/communities_ratings_plugin_profile_controller.rb
0 → 100644
... | ... | @@ -0,0 +1,47 @@ |
1 | +class CommunitiesRatingsPluginProfileController < ProfileController | |
2 | + | |
3 | + # Inside a community, receive a ajax from the current logged person with its | |
4 | + # rate for the community. If the user already rated this commnity, update its | |
5 | + # rate value or else, create a new one | |
6 | + def rate | |
7 | + # If its not a ajax request or the profile isn't a community | |
8 | + if (not request.xhr?) or (profile.type != "Community") | |
9 | + # Redirect to the profile home page | |
10 | + return redirect_to :controller => 'profile', :action => :index | |
11 | + end | |
12 | + | |
13 | + community_rating = get_community_rating(user, profile) | |
14 | + community_rating.value = params[:value].to_i | |
15 | + | |
16 | + if community_rating.save | |
17 | + render :json => { | |
18 | + success: true, | |
19 | + message: "Successfully rated community #{community_rating.community.name}" | |
20 | + } | |
21 | + else | |
22 | + render :json => { | |
23 | + success: false, | |
24 | + message: "Could not rate community #{community_rating.community.name}", | |
25 | + errors: community_rating.errors.full_messages | |
26 | + } | |
27 | + end | |
28 | + end | |
29 | + | |
30 | + private | |
31 | + | |
32 | + # If there is already a rate by the current logged user to this community | |
33 | + # return it or else, prepare a new one | |
34 | + def get_community_rating person, community | |
35 | + already_rated = CommunityRating.where( | |
36 | + :community_id=>community.id, | |
37 | + :person_id=>person.id | |
38 | + ) | |
39 | + | |
40 | + if already_rated.count != 0 | |
41 | + already_rated.first | |
42 | + else | |
43 | + CommunityRating.new :person => person, | |
44 | + :community => community | |
45 | + end | |
46 | + end | |
47 | +end | ... | ... |
plugins/communities_ratings/test/functional/communities_ratings_plugin_profile_controller_test.rb
0 → 100644
... | ... | @@ -0,0 +1,34 @@ |
1 | +require File.dirname(__FILE__) + '/../../../../test/test_helper' | |
2 | +require( | |
3 | + File.dirname(__FILE__) + | |
4 | + '/../../controllers/communities_ratings_plugin_profile_controller' | |
5 | +) | |
6 | + | |
7 | +# Re-raise errors caught by the controller. | |
8 | +class CommunitiesRatingsPluginProfileController; def rescue_action(e) raise e end; end | |
9 | + | |
10 | +class CommunitiesRatingsPluginProfileControllerTest < ActionController::TestCase | |
11 | + | |
12 | + def setup | |
13 | + @controller = CommunitiesRatingsPluginProfileController.new | |
14 | + @request = ActionController::TestRequest.new | |
15 | + @response = ActionController::TestResponse.new | |
16 | + | |
17 | + @person = create_user('testuser').person | |
18 | + @community = create_user('testcommunity').person | |
19 | + | |
20 | + login_as(@person.identifier) | |
21 | + @controller.stubs(:logged_in?).returns(true) | |
22 | + @controller.stubs(:current_user).returns(@person.user) | |
23 | + end | |
24 | + | |
25 | + | |
26 | + test "should logged person rate a community" do | |
27 | + #xhr :post , :rate, :profile => @community, :value => 4 | |
28 | + xhr :post , url_for(:action=>:rate), :profile => @community, :value => 4 | |
29 | + | |
30 | + puts "="*80, @response.body, "="*80 | |
31 | + assert_equal true, true | |
32 | + end | |
33 | + | |
34 | +end | ... | ... |