discourse/spec/jobs/update_gravatar_spec.rb
David Taylor c9dab6fd08
DEV: Automatically require 'rails_helper' in all specs (#16077)
It's very easy to forget to add `require 'rails_helper'` at the top of every core/plugin spec file, and omissions can cause some very confusing/sporadic errors.

By setting this flag in `.rspec`, we can remove the need for `require 'rails_helper'` entirely.
2022-03-01 17:50:50 +00:00

49 lines
1.4 KiB
Ruby

# frozen_string_literal: true
describe Jobs::UpdateGravatar do
fab!(:user) { Fabricate(:user) }
let(:temp) { Tempfile.new('test') }
fab!(:upload) { Fabricate(:upload, user: user) }
let(:avatar) { user.create_user_avatar! }
it "picks gravatar if system avatar is picked and gravatar was just downloaded" do
temp.binmode
# tiny valid png
temp.write(Base64.decode64("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg=="))
temp.rewind
FileHelper.expects(:download).returns(temp)
Jobs.run_immediately!
expect(user.uploaded_avatar_id).to eq(nil)
expect(user.user_avatar.gravatar_upload_id).to eq(nil)
SiteSetting.automatically_download_gravatars = true
user.refresh_avatar
user.reload
expect(user.uploaded_avatar_id).to_not eq(nil)
expect(user.uploaded_avatar_id).to eq(user.user_avatar.gravatar_upload_id)
temp.unlink
end
it "does not enqueue a job when user is missing their email" do
user.primary_email.destroy
user.reload
expect(user.uploaded_avatar_id).to eq(nil)
expect(user.user_avatar.gravatar_upload_id).to eq(nil)
SiteSetting.automatically_download_gravatars = true
expect { user.refresh_avatar }
.to change { Jobs::UpdateGravatar.jobs.count }.by(0)
user.reload
expect(user.uploaded_avatar_id).to eq(nil)
expect(user.user_avatar.gravatar_upload_id).to eq(nil)
end
end