Commit 64dfdf7a

mo khan <mo@mokhan.ca>
2015-01-17 19:45:29
create job to process avatars.
1 parent a6a88ff
Changed files (2)
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