Commit 13e9724

mo khan <mo@mokhan.ca>
2015-06-13 22:55:34
fail gracefully for unknown file types.
1 parent 6ef1158
app/jobs/upload_stronglifts_backup_job.rb
@@ -4,7 +4,9 @@ class UploadStrongliftsBackupJob < ActiveJob::Base
   def perform(user, backup_file, program)
     tmp_dir do |dir|
       `unzip #{backup_file} -d #{dir}`
-      importer_for(dir, user, program).import_from(dir)
+      ActiveRecord::Base.transaction do
+        importer_for(dir, user, program).import_from(dir)
+      end
     end
   end
 
@@ -19,7 +21,17 @@ class UploadStrongliftsBackupJob < ActiveJob::Base
   def importer_for(directory, user, program)
     [
       Android::Import.new(user, program),
-      Ios::Import.new(user, program)
+      Ios::Import.new(user, program),
+      UnknownFile.new
     ].detect { |x| x.can_parse?(directory) }
   end
+
+  class UnknownFile
+    def can_parse?(directory)
+      true
+    end
+
+    def import_from(directory)
+    end
+  end
 end
spec/jobs/upload_stronglifts_backup_job_spec.rb
@@ -28,5 +28,16 @@ describe UploadStrongliftsBackupJob, type: :job do
         expect(user.training_sessions.count).to eql(9)
       end
     end
+
+    context "unknown filetype" do
+      let(:mailer) { double(deliver_later: true) }
+      let(:unknown_file) { __FILE__ }
+
+      it "does not raise an error" do
+        expect(->{
+          subject.perform(user, unknown_file, program)
+        }).to_not raise_error
+      end
+    end
   end
 end