Commit d481e4ba
Changed files (4)
app
models
services
application
handlers
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