mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: Store custom emojis as uploads.
* Depending on a hardcoded directory was a flawed design which made it impossible to debug when custom emojis go missing.
This commit is contained in:
76
spec/integration/admin/emojis_spec.rb
Normal file
76
spec/integration/admin/emojis_spec.rb
Normal file
@@ -0,0 +1,76 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe "Managing custom emojis" do
|
||||
let(:admin) { Fabricate(:admin) }
|
||||
let(:upload) { Fabricate(:upload) }
|
||||
|
||||
before do
|
||||
sign_in(admin)
|
||||
end
|
||||
|
||||
describe "creating a custom emoji" do
|
||||
describe 'when upload is invalid' do
|
||||
it 'should publish the right error' do
|
||||
message = MessageBus.track_publish do
|
||||
post("/admin/customize/emojis.json", {
|
||||
name: 'test',
|
||||
file: fixture_file_upload("#{Rails.root}/spec/fixtures/images/fake.jpg")
|
||||
})
|
||||
end.first
|
||||
|
||||
expect(message.channel).to eq("/uploads/emoji")
|
||||
expect(message.data["errors"]).to eq([I18n.t('upload.images.size_not_found')])
|
||||
end
|
||||
end
|
||||
|
||||
describe 'when emoji name already exists' do
|
||||
it 'should publish the right error' do
|
||||
CustomEmoji.create!(name: 'test', upload: upload)
|
||||
|
||||
message = MessageBus.track_publish do
|
||||
post("/admin/customize/emojis.json", {
|
||||
name: 'test',
|
||||
file: fixture_file_upload("#{Rails.root}/spec/fixtures/images/logo.png")
|
||||
})
|
||||
end.first
|
||||
|
||||
expect(message.channel).to eq("/uploads/emoji")
|
||||
|
||||
expect(message.data["errors"]).to eq([
|
||||
"Name #{I18n.t('activerecord.errors.models.custom_emoji.attributes.name.taken')}"
|
||||
])
|
||||
end
|
||||
end
|
||||
|
||||
it 'should allow an admin to add a custom emoji' do
|
||||
Emoji.expects(:clear_cache)
|
||||
|
||||
message = MessageBus.track_publish do
|
||||
post("/admin/customize/emojis.json", {
|
||||
name: 'test',
|
||||
file: fixture_file_upload("#{Rails.root}/spec/fixtures/images/logo.png")
|
||||
})
|
||||
end.first
|
||||
|
||||
custom_emoji = CustomEmoji.last
|
||||
upload = custom_emoji.upload
|
||||
|
||||
expect(upload.original_filename).to eq('logo.png')
|
||||
expect(message.channel).to eq("/uploads/emoji")
|
||||
expect(message.data["errors"]).to eq(nil)
|
||||
expect(message.data["name"]).to eq(custom_emoji.name)
|
||||
expect(message.data["url"]).to eq(upload.url)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'deleting a custom emoji' do
|
||||
it 'should allow an admin to delete a custom emoji' do
|
||||
custom_emoji = CustomEmoji.create!(name: 'test', upload: upload)
|
||||
Emoji.clear_cache
|
||||
|
||||
expect { delete "/admin/customize/emojis/#{custom_emoji.name}.json", name: 'test' }
|
||||
.to change { Upload.count }.by(-1)
|
||||
.and change { CustomEmoji.count }.by(-1)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user