Commit f708785

mo khan <mo@mokhan.ca>
2015-06-01 02:36:39
refactor android import spec to import the whole db.
1 parent 59a0ddb
Changed files (1)
spec
models
spec/models/android/import_spec.rb
@@ -5,29 +5,26 @@ describe Android::Import do
   subject { Android::Import.new(user, program) }
   let(:user) { create(:user) }
 
-  describe "#import" do
-    let(:row) do
-      [
-        31,
-        "2015-05-13 06:10:21",
-        "A",
-        "{\"weight\":{\"lastWeightKg\":90,\"lastWeightLb\":200},\"success\":false,\"set1\":-1,\"set2\":-1,\"set3\":-1,\"set4\":-1,\"set5\":-1,\"messageDismissed\":false,\"workoutType\":0,\"warmup\":{\"exerciseType\":1,\"targetWeight\":200,\"warmupSets\":[{\"completed\":false},{\"completed\":false},{\"completed\":false},{\"completed\":false},{\"completed\":false}]}}", 
-        "{\"weight\":{\"lastWeightKg\":65,\"lastWeightLb\":145},\"success\":true,\"set1\":5,\"set2\":5,\"set3\":5,\"set4\":5,\"set5\":5,\"messageDismissed\":false,\"workoutType\":0,\"warmup\":{\"exerciseType\":2,\"targetWeight\":145,\"warmupSets\":[{\"completed\":true},{\"completed\":true},{\"completed\":true},{\"completed\":true}]}}", 
-        "{\"weight\":{\"lastWeightKg\":60,\"lastWeightLb\":130},\"success\":false,\"set1\":5,\"set2\":4,\"set3\":4,\"set4\":4,\"set5\":4,\"messageDismissed\":false,\"workoutType\":0,\"warmup\":{\"exerciseType\":3,\"targetWeight\":130,\"warmupSets\":[{\"completed\":true}]}}", 
-        "",
-        "209LB",
-        "{\"set1\":8,\"set2\":4,\"set3\":4,\"messageDismissed\":false,\"exercise\":0,\"weight\":{\"lastWeightKg\":0,\"lastWeightLb\":0}}",
-        0
-      ]
+  describe "#import_from" do
+    let(:directory) { Dir.mktmpdir }
+    let(:backup_file) { Rails.root.join("spec", "fixtures", "backup.android.stronglifts") }
+
+    before :each do
+      `unzip #{backup_file} -d #{directory}`
+    end
+
+    after :each do
+      FileUtils.remove_entry(directory)
     end
 
     it "creates a new workout" do
-      training_session = subject.import(row)
+      subject.import_from(directory)
+      training_session = user.training_sessions.order(:occurred_at).first
 
       expect(training_session).to be_persisted
-      expect(training_session.occurred_at).to eql(DateTime.parse(row[1]))
+      expect(training_session.occurred_at.to_i).to eql(DateTime.parse("Mon, 02 Mar 2015 09:28:26 UTC +00:00").to_i)
       expect(training_session.workout).to eql(workout_a)
-      expect(training_session.body_weight).to eql(209.0)
+      expect(training_session.body_weight).to eql(205.0)
       expect(training_session.exercise_sessions.count).to eql(3)
       expect(
         training_session.exercise_sessions.map { |x| x.exercise.name }
@@ -35,16 +32,16 @@ describe Android::Import do
 
       squat_session = training_session.exercise_sessions.
         find_by(exercise_workout: squat_workout)
-      expect(squat_session.target_weight).to eql(200.0)
-      expect(squat_session.sets[0]).to eql("0")
-      expect(squat_session.sets[1]).to eql("0")
-      expect(squat_session.sets[2]).to eql("0")
-      expect(squat_session.sets[3]).to eql("0")
-      expect(squat_session.sets[4]).to eql("0")
+      expect(squat_session.target_weight).to eql(45.0)
+      expect(squat_session.sets[0]).to eql("5")
+      expect(squat_session.sets[1]).to eql("5")
+      expect(squat_session.sets[2]).to eql("5")
+      expect(squat_session.sets[3]).to eql("5")
+      expect(squat_session.sets[4]).to eql("5")
 
       bench_session = training_session.exercise_sessions.
         find_by(exercise_workout: bench_workout)
-      expect(bench_session.target_weight).to eql(145.0)
+      expect(bench_session.target_weight).to eql(65.0)
       expect(bench_session.sets[0]).to eql("5")
       expect(bench_session.sets[1]).to eql("5")
       expect(bench_session.sets[2]).to eql("5")
@@ -53,17 +50,18 @@ describe Android::Import do
 
       row_session = training_session.exercise_sessions.
         find_by(exercise_workout: row_workout)
-      expect(row_session.target_weight).to eql(130.0)
+      expect(row_session.target_weight).to eql(65.0)
       expect(row_session.sets[0]).to eql("5")
-      expect(row_session.sets[1]).to eql("4")
-      expect(row_session.sets[2]).to eql("4")
-      expect(row_session.sets[3]).to eql("4")
-      expect(row_session.sets[4]).to eql("4")
+      expect(row_session.sets[1]).to eql("5")
+      expect(row_session.sets[2]).to eql("5")
+      expect(row_session.sets[3]).to eql("5")
+      expect(row_session.sets[4]).to eql("5")
     end
 
     it "excludes items that have already been imported" do
-      training_session = subject.import(row)
-      expect(subject.import(row)).to eql(training_session)
+      subject.import_from(directory)
+      subject.import_from(directory)
+      expect(user.training_sessions.count).to eql(31)
     end
   end
 end