From 92230383a7d93416adfa69dad21eb1d450dadb94 Mon Sep 17 00:00:00 2001 From: danielgrippi Date: Sun, 6 May 2012 12:34:45 -0700 Subject: [PATCH] added controller test; put wallpaper into separate wallpaper/ directory --- app/controllers/profiles_controller.rb | 11 +++ app/uploaders/wallpaper_uploader.rb | 2 +- spec/controllers/profiles_controller_spec.rb | 97 ++++++++++++-------- 3 files changed, 70 insertions(+), 40 deletions(-) diff --git a/app/controllers/profiles_controller.rb b/app/controllers/profiles_controller.rb index fef64ad29..f9862416c 100644 --- a/app/controllers/profiles_controller.rb +++ b/app/controllers/profiles_controller.rb @@ -78,6 +78,13 @@ class ProfilesController < ApplicationController end def upload_wallpaper_image + unless params[:photo].present? + respond_to do |format| + format.json { render :json => {"success" => false} } + end + return + end + if remotipart_submitted? profile = current_user.person.profile @@ -86,6 +93,10 @@ class ProfilesController < ApplicationController respond_to do |format| format.json { render :json => {"success" => true, "data" => {"wallpaper" => profile.wallpaper.url}} } end + else + respond_to do |format| + format.json { render :json => {"success" => false} } + end end end end diff --git a/app/uploaders/wallpaper_uploader.rb b/app/uploaders/wallpaper_uploader.rb index f7c9a8f4d..4d78e6e80 100644 --- a/app/uploaders/wallpaper_uploader.rb +++ b/app/uploaders/wallpaper_uploader.rb @@ -2,7 +2,7 @@ class WallpaperUploader < CarrierWave::Uploader::Base include CarrierWave::MiniMagick def store_dir - "uploads/images" + "uploads/images/wallpaper" end def extension_white_list diff --git a/spec/controllers/profiles_controller_spec.rb b/spec/controllers/profiles_controller_spec.rb index 42dc6a70b..9916df70d 100644 --- a/spec/controllers/profiles_controller_spec.rb +++ b/spec/controllers/profiles_controller_spec.rb @@ -6,37 +6,36 @@ require 'spec_helper' describe ProfilesController do before do - @user = eve - sign_in :user, @user + sign_in :user, eve end describe '#show' do it "returns the user as json" do - get :show, :id => @user.person.guid, :format => :json - JSON.parse(response.body).should include(JSON.parse(@user.person.as_api_response(:backbone).to_json)) + get :show, :id => eve.person.guid, :format => :json + JSON.parse(response.body).should include(JSON.parse(eve.person.as_api_response(:backbone).to_json)) end it "returns the user's public information if a user is not logged in" do sign_out :user - get :show, :id => @user.person.guid, :format => :json - JSON.parse(response.body).should include(JSON.parse(@user.person.as_api_response(:backbone).to_json)) + get :show, :id => eve.person.guid, :format => :json + JSON.parse(response.body).should include(JSON.parse(eve.person.as_api_response(:backbone).to_json)) end it "returns the user's public information if a user is logged in and the visiting user is not receiving" do sign_in :user, alice - get :show, :id => @user.person.guid, :format => :json + get :show, :id => eve.person.guid, :format => :json response.body.should_not match(/.location./) end it "returns the user's private information if a user is logged in and the visiting user is receiving" do sign_in :user, bob - get :show, :id => @user.person.guid, :format => :json + get :show, :id => eve.person.guid, :format => :json response.body.should match(/.location./) end it "returns the user's private information if a user is logged in as herself" do sign_in :user, eve - get :show, :id => @user.person.guid, :format => :json + get :show, :id => eve.person.guid, :format => :json response.body.should match(/.location./) end end @@ -49,7 +48,7 @@ describe ProfilesController do it 'sets the profile to the current users profile' do get :edit - assigns[:profile].should == @user.person.profile + assigns[:profile].should == eve.person.profile end it 'sets the aspect to "person_edit" ' do @@ -59,7 +58,7 @@ describe ProfilesController do it 'sets the person to the current users person' do get :edit - assigns[:person].should == @user.person + assigns[:person].should == eve.person end end @@ -74,48 +73,48 @@ describe ProfilesController do end it "sets nsfw" do - @user.person(true).profile.nsfw.should == false - put :update, :profile => { :id => @user.person.id, :nsfw => "1" } - @user.person(true).profile.nsfw.should == true + eve.person(true).profile.nsfw.should == false + put :update, :profile => { :id => eve.person.id, :nsfw => "1" } + eve.person(true).profile.nsfw.should == true end it "unsets nsfw" do - @user.person.profile.nsfw = true - @user.person.profile.save + eve.person.profile.nsfw = true + eve.person.profile.save - @user.person(true).profile.nsfw.should == true - put :update, :profile => { :id => @user.person.id } - @user.person(true).profile.nsfw.should == false + eve.person(true).profile.nsfw.should == true + put :update, :profile => { :id => eve.person.id } + eve.person(true).profile.nsfw.should == false end it 'sets tags' do - params = { :id => @user.person.id, + params = { :id => eve.person.id, :tags => '#apples #oranges'} put :update, params - @user.person(true).profile.tag_list.to_set.should == ['apples', 'oranges'].to_set + eve.person(true).profile.tag_list.to_set.should == ['apples', 'oranges'].to_set end it 'sets plaintext tags' do - params = { :id => @user.person.id, + params = { :id => eve.person.id, :tags => ',#apples,#oranges,', :profile => {:tag_string => '#pears'} } put :update, params - @user.person(true).profile.tag_list.to_set.should == ['apples', 'oranges', 'pears'].to_set + eve.person(true).profile.tag_list.to_set.should == ['apples', 'oranges', 'pears'].to_set end it 'sets plaintext tags without #' do - params = { :id => @user.person.id, + params = { :id => eve.person.id, :tags => ',#apples,#oranges,', :profile => {:tag_string => 'bananas'} } put :update, params - @user.person(true).profile.tag_list.to_set.should == ['apples', 'oranges', 'bananas'].to_set + eve.person(true).profile.tag_list.to_set.should == ['apples', 'oranges', 'bananas'].to_set end it 'sets valid birthday' do - params = { :id => @user.person.id, + params = { :id => eve.person.id, :profile => { :date => { :year => '2001', @@ -123,13 +122,13 @@ describe ProfilesController do :day => '28' } } } put :update, params - @user.person(true).profile.birthday.year.should == 2001 - @user.person(true).profile.birthday.month.should == 2 - @user.person(true).profile.birthday.day.should == 28 + eve.person(true).profile.birthday.year.should == 2001 + eve.person(true).profile.birthday.month.should == 2 + eve.person(true).profile.birthday.day.should == 28 end it 'displays error for invalid birthday' do - params = { :id => @user.person.id, + params = { :id => eve.person.id, :profile => { :date => { :year => '2001', @@ -142,21 +141,21 @@ describe ProfilesController do context 'with a profile photo set' do before do - @params = { :id => @user.person.id, + @params = { :id => eve.person.id, :profile => {:image_url => "", - :last_name => @user.person.profile.last_name, - :first_name => @user.person.profile.first_name }} + :last_name => eve.person.profile.last_name, + :first_name => eve.person.profile.first_name }} - @user.person.profile.image_url = "http://tom.joindiaspora.com/images/user/tom.jpg" - @user.person.profile.save + eve.person.profile.image_url = "http://tom.joindiaspora.com/images/user/tom.jpg" + eve.person.profile.save end it "doesn't overwrite the profile photo when an empty string is passed in" do - image_url = @user.person.profile.image_url + image_url = eve.person.profile.image_url put :update, @params - Person.find(@user.person.id).profile.image_url.should == image_url + Person.find(eve.person.id).profile.image_url.should == image_url end end @@ -168,7 +167,7 @@ describe ProfilesController do end it 'person_id' do - person = @user.person + person = eve.person profile = person.profile put :update, @profile_params profile.reload.person_id.should == person.id @@ -176,8 +175,28 @@ describe ProfilesController do it 'diaspora handle' do put :update, @profile_params - Person.find(@user.person.id).profile[:diaspora_handle].should_not == 'abc@a.com' + Person.find(eve.person.id).profile[:diaspora_handle].should_not == 'abc@a.com' end end end + + describe '#upload_wallpaper_image' do + it 'returns a success=false response if the photo param is not present' do + post :upload_wallpaper_image, :format => :json + JSON.parse(response.body).should include("success" => false) + end + + it 'stores the wallpaper for the current_user' do + # we should have another test here asserting that the wallpaper is set... i was having problems testing + # this behavior though :( + + @controller.stub!(:current_user).and_return(eve) + @controller.stub!(:remotipart_submitted?).and_return(true) + @controller.stub!(:file_handler).and_return(uploaded_photo) + @params = {:photo => {:user_file => uploaded_photo} } + + eve.person.profile.wallpaper.should_receive(:store!) + post :upload_wallpaper_image, @params.merge(:format => :json) + end + end end \ No newline at end of file