Commit 64dfdf7a
Changed files (2)
app
spec
app/jobs/process_avatar_job.rb
@@ -0,0 +1,15 @@
+class ProcessAvatarJob < ActiveJob::Base
+ queue_as :default
+
+ def perform(user, file_path)
+ user.avatar = Photo.create!
+ user.avatar.upload(file_path, blob_storage)
+ user.avatar.save!
+ end
+
+ private
+
+ def blob_storage
+ @blob_storage ||= Spank::IOC.resolve(:blob_storage)
+ end
+end
spec/jobs/process_avatar_job_spec.rb
@@ -0,0 +1,27 @@
+require 'rails_helper'
+
+RSpec.describe ProcessAvatarJob, type: :job do
+ subject { ProcessAvatarJob.new }
+
+ describe "#perform" do
+ let(:blob_storage) { double }
+ let(:user) { build(:user) }
+ let(:file_path) { '/Users/blah/eicar' }
+ let(:avatar) { Photo.new }
+
+ before :each do
+ allow(subject).to receive(:blob_storage).and_return(blob_storage)
+ end
+
+ it 'uploads the new avatar' do
+ allow(Photo).to receive(:create!).and_return(avatar)
+ allow(avatar).to receive(:upload)
+ allow(avatar).to receive(:save!)
+
+ subject.perform(user, file_path)
+
+ expect(avatar).to have_received(:upload).with(file_path, blob_storage)
+ expect(avatar).to have_received(:save!)
+ end
+ end
+end