mirror of
https://github.com/discourse/discourse.git
synced 2026-08-08 20:18:23 -05:00
FEATURE: Can upload images to categories
This commit is contained in:
@@ -95,6 +95,37 @@ describe CategoriesController do
|
||||
|
||||
end
|
||||
|
||||
describe "upload" do
|
||||
it "requires the user to be logged in" do
|
||||
lambda { xhr :post, :upload, image_type: 'logo'}.should raise_error(Discourse::NotLoggedIn)
|
||||
end
|
||||
|
||||
describe "logged in" do
|
||||
let!(:user) { log_in(:admin) }
|
||||
|
||||
let(:logo) { File.new("#{Rails.root}/spec/fixtures/images/logo.png") }
|
||||
let(:upload) do
|
||||
ActionDispatch::Http::UploadedFile.new({ filename: 'logo.png', tempfile: logo })
|
||||
end
|
||||
|
||||
it "raises an error when you don't have permission to upload" do
|
||||
Guardian.any_instance.expects(:can_create?).with(Category).returns(false)
|
||||
xhr :post, :upload, image_type: 'logo', file: upload
|
||||
response.should be_forbidden
|
||||
end
|
||||
|
||||
it "requires the `image_type` param" do
|
||||
-> { xhr :post, :upload }.should raise_error(ActionController::ParameterMissing)
|
||||
end
|
||||
|
||||
it "calls Upload.create_for" do
|
||||
Upload.expects(:create_for).returns(Upload.new)
|
||||
xhr :post, :upload, image_type: 'logo', file: upload
|
||||
response.should be_success
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "update" do
|
||||
|
||||
it "requires the user to be logged in" do
|
||||
|
||||
@@ -1272,7 +1272,7 @@ describe UsersController do
|
||||
describe '.destroy_user_image' do
|
||||
|
||||
it 'raises an error when not logged in' do
|
||||
lambda { xhr :put, :destroy_user_image, type: 'profile_background', username: 'asdf' }.should raise_error(Discourse::NotLoggedIn)
|
||||
lambda { xhr :delete, :destroy_user_image, type: 'profile_background', username: 'asdf' }.should raise_error(Discourse::NotLoggedIn)
|
||||
end
|
||||
|
||||
context 'while logged in' do
|
||||
@@ -1281,20 +1281,20 @@ describe UsersController do
|
||||
|
||||
it 'raises an error when you don\'t have permission to clear the profile background' do
|
||||
Guardian.any_instance.expects(:can_edit?).with(user).returns(false)
|
||||
xhr :put, :destroy_user_image, username: user.username, image_type: 'profile_background'
|
||||
xhr :delete, :destroy_user_image, username: user.username, image_type: 'profile_background'
|
||||
response.should be_forbidden
|
||||
end
|
||||
|
||||
it "requires the `image_type` param" do
|
||||
-> { xhr :put, :destroy_user_image, username: user.username }.should raise_error(ActionController::ParameterMissing)
|
||||
-> { xhr :delete, :destroy_user_image, username: user.username }.should raise_error(ActionController::ParameterMissing)
|
||||
end
|
||||
|
||||
it "only allows certain `image_types`" do
|
||||
-> { xhr :put, :destroy_user_image, username: user.username, image_type: 'wat' }.should raise_error(Discourse::InvalidParameters)
|
||||
-> { xhr :delete, :destroy_user_image, username: user.username, image_type: 'wat' }.should raise_error(Discourse::InvalidParameters)
|
||||
end
|
||||
|
||||
it 'can clear the profile background' do
|
||||
xhr :put, :destroy_user_image, image_type: 'profile_background', username: user.username
|
||||
xhr :delete, :destroy_user_image, image_type: 'profile_background', username: user.username
|
||||
user.reload.user_profile.profile_background.should == ""
|
||||
response.should be_success
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user