Commit 0cfdbd5

mo khan <mo@mokhan.ca>
2015-11-14 16:04:17
plug in csv importer.
1 parent a58990f
app/jobs/upload_stronglifts_backup_job.rb
@@ -21,16 +21,22 @@ class UploadStrongliftsBackupJob < ActiveJob::Base
     [
       Android::Import.new(user, program),
       Ios::Import.new(user, program),
+      Csv::Import.new(user, program),
       UnknownFile.new
     ].detect { |x| x.can_parse?(directory) }
   end
 
   def extract!(backup_file, dir)
     # `unzip #{backup_file} -d #{dir}`
-    Zip::File.open(backup_file) do |zip_file|
-      zip_file.each do |entry|
-        entry.extract(File.join(dir, entry.name))
+    extension = File.extname(backup_file)
+    if extension.eql?(".stronglifts")
+      Zip::File.open(backup_file) do |zip_file|
+        zip_file.each do |entry|
+          entry.extract(File.join(dir, entry.name))
+        end
       end
+    else
+      `cp #{backup_file} #{dir}`
     end
     true
   rescue StandardError => error
app/models/csv/import.rb
@@ -0,0 +1,11 @@
+class Csv::Import
+  def initialize(user, program)
+  end
+
+  def can_parse?(directory)
+    puts `ls -al #{directory}`
+  end
+
+  def import_from(directory)
+  end
+end
spec/jobs/upload_stronglifts_backup_job_spec.rb
@@ -29,6 +29,18 @@ describe UploadStrongliftsBackupJob, type: :job do
       end
     end
 
+    context "csv export" do
+      let(:backup_file) do
+        Rails.root.join("spec", "fixtures", "spreadsheet-stronglifts.csv").to_s
+      end
+
+      it "adds each workout to the list of training sessions for the user" do
+        subject.perform(user, backup_file, program)
+
+        expect(user.training_sessions.count).to eql(100)
+      end
+    end
+
     context "unknown filetype" do
       let(:mailer) { double(deliver_later: true) }
       let(:unknown_file) { __FILE__ }