Commit 1323871
Changed files (2)
app
models
ios
spec
models
ios
app/models/ios/import.rb
@@ -7,10 +7,27 @@ class Ios::Import
end
def can_parse?(directory)
- File.exist?(File.join(directory, "SLDB.sqlite"))
+ File.exist?(database_file(directory))
end
def import_from(directory)
- puts "Importing from #{directory}..."
+ database(directory) do |db|
+ db.execute("SELECT * FROM ZBASEWORKOUT") do |row|
+ puts row.inspect
+ workout_name = row[5] == 1 ? "A" : "B"
+ workout = program.workouts.find_by(name: workout_name)
+ user.begin_workout(workout, DateTime.parse(row[8]), row[7].to_f)
+ end
+ end
+ end
+
+ private
+
+ def database_file(directory)
+ File.join(directory, "SLDB.sqlite")
+ end
+
+ def database(directory)
+ yield SQLite3::Database.new(database_file(directory))
end
end
spec/models/ios/import_spec.rb
@@ -1,9 +1,9 @@
require "rails_helper"
describe Ios::Import do
+ include_context "stronglifts_program"
subject { Ios::Import.new(user, program) }
- let(:user) { build(:user) }
- let(:program) { build(:program) }
+ let(:user) { create(:user) }
describe "#can_parse?" do
let(:directory) { Dir.mktmpdir }
@@ -24,4 +24,22 @@ describe Ios::Import do
end
end
end
+
+ describe "#import_from" do
+ let(:directory) { Dir.mktmpdir }
+ let(:backup_file) { Rails.root.join("spec", "fixtures", "backup.ios.stronglifts") }
+
+ before :each do
+ `unzip #{backup_file} -d #{directory}`
+ end
+
+ after :each do
+ FileUtils.remove_entry(directory)
+ end
+
+ it "imports each workout" do
+ subject.import_from(directory)
+ expect(user.training_sessions.count).to eql(9)
+ end
+ end
end