Commit d481e4ba

mo khan <mo@mokhan.ca>
2014-06-07 03:20:11
add specs for uploading a photo.
1 parent 77b8d5c
Changed files (4)
app
models
services
application
spec
fixtures
images
models
app/models/photo.rb
@@ -16,6 +16,7 @@ class Photo < ActiveRecord::Base
   end
 
   def upload(file, blob_storage)
+    self.original_filename = File.basename(file)
     image = Image.new(file)
     versions.each do |version|
       version.adjust(image)
app/services/application/handlers/process_photo.rb
@@ -10,13 +10,12 @@ class ProcessPhoto
   end
 
   def handle(message)
-    file = File.open(message[:file_path])
     photo = @photos.find(message[:photo_id])
     #photo.image = file
     photo.image_processing = nil
     photo.content_type = message[:content_type]
     photo.original_filename = message[:original_filename]
-    photo.latitude, photo.longitude = @exif_parser.parse_geolocation_from(file)
+    photo.latitude, photo.longitude = @exif_parser.parse_geolocation_from(message[:file_path])
     photo.upload(message[:file_path], @blob_storage)
     photo.save!
   end
spec/fixtures/images/gps.jpg
Binary file
spec/models/photo_spec.rb
@@ -0,0 +1,22 @@
+require "spec_helper"
+
+describe Photo do
+  subject { Photo.new }
+
+  describe "#upload" do
+    let(:file) { File.join(Rails.root, 'spec/fixtures/images/gps.jpg') }
+    let(:blob_storage) { double(upload: true) }
+
+    it "uploads each version to the blob storage" do
+      subject.id = rand(100)
+      subject.upload(file, blob_storage)
+      blob_storage.should have_received(:upload).with(upload_key, file)
+      blob_storage.should have_received(:upload).with(upload_key("large"), file)
+      blob_storage.should have_received(:upload).with(upload_key("thumb"), file)
+    end
+
+    def upload_key(prefix = '')
+      "uploads/photo/image/#{subject.id}/#{prefix}_gps.jpg"
+    end
+  end
+end