Commit 0cfdbd5
Changed files (3)
app
models
csv
spec
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__ }