Commit a695538

mo khan <mo@mokhan.ca>
2015-05-31 17:07:36
start to build ios importer.
1 parent 10af80c
app/jobs/upload_stronglifts_backup_job.rb
@@ -18,7 +18,8 @@ class UploadStrongliftsBackupJob < ActiveJob::Base
 
   def importer_for(directory, user, program)
     [
-      Android::Import.new(user, program)
+      Android::Import.new(user, program),
+      Ios::Import.new(user, program)
     ].find { |x| x.can_parse?(directory) }
   end
 end
app/models/ios/import.rb
@@ -0,0 +1,11 @@
+class Ios::Import
+  def initialize(user, program)
+  end
+
+  def can_parse?(directory)
+    File.exist?(File.join(directory, "SLDB.sqlite"))
+  end
+
+  def import_from(directory)
+  end
+end
spec/jobs/upload_stronglifts_backup_job_spec.rb
@@ -16,5 +16,17 @@ describe UploadStrongliftsBackupJob, type: :job do
         expect(user.training_sessions.count).to eql(31)
       end
     end
+
+    context "ios backup" do
+      let(:backup_file) do
+        Rails.root.join("spec", "fixtures", "backup.ios.stronglifts").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(31)
+      end
+    end
   end
 end
spec/models/ios/import_spec.rb
@@ -0,0 +1,27 @@
+require "rails_helper"
+
+describe Ios::Import do
+  subject { Ios::Import.new(user, program) }
+  let(:user) { build(:user) }
+  let(:program) { build(:program) }
+
+  describe "#can_parse?" do
+    let(:directory) { Dir.mktmpdir }
+
+    context "when the directory contains the ios backup db" do
+      before :each do
+        FileUtils.touch("#{directory}/SLDB.sqlite")
+      end
+
+      it "returns true" do
+        expect(subject.can_parse?(directory)).to be_truthy
+      end
+    end
+
+    context "when the directory does not have the ios backup db" do
+      it "returns false" do
+        expect(subject.can_parse?(directory)).to be_falsey
+      end
+    end
+  end
+end