Commit b1fcb80
Changed files (7)
app
models
spec
app/models/csv/exercise.rb
@@ -1,5 +1,10 @@
class Csv::Exercise
attr_accessor :name, :weight_kg, :weight_lb
attr_accessor :sets
-end
+ def initialize(attributes = {})
+ attributes.each do |attribute|
+ send("#{attribute.first}=", attribute.last)
+ end
+ end
+end
app/models/csv/import.rb
@@ -36,7 +36,7 @@ class Csv::Import
workout_row.body_weight_lb.to_f)
training_session.exercise_sessions.destroy_all
workout.exercise_workouts.each do |exercise_workout|
- row = workout_row.exercises.find do |x|
+ row = workout_row.exercises.detect do |x|
x.name.downcase == exercise_workout.exercise.name.downcase
end
training_session.train(
app/models/csv/workout.rb
@@ -3,25 +3,31 @@ class Csv::Workout
attr_accessor :body_weight_kg, :body_weight_lb
attr_accessor :exercises
+ def initialize(attributes = {})
+ attributes.each do |attribute|
+ send("#{attribute.first}=", attribute.last)
+ end
+ @exercises = []
+ end
+
def self.map_from(row, user)
- workout = new
- day, month, year = row[0].split('/')
+ day, month, year = row[0].split("/")
year = "20#{year}"
- workout.date = user.timezone.local_to_utc(Time.utc(year, month, day))
- workout.note = row[1]
- workout.workout = row[2]
- workout.body_weight_kg = row[3]
- workout.body_weight_lb = row[4]
- workout.exercises = []
- all_exercises = row[5..(row.size)]
+ workout = new(
+ date: user.timezone.local_to_utc(Time.utc(year, month, day)),
+ note: row[1],
+ workout: row[2],
+ body_weight_kg: row[3],
+ body_weight_lb: row[4],
+ )
# skip additional exercises for now
- all_exercises.take(3 * 8).each_slice(8) do |slice|
- exercise = Csv::Exercise.new
- exercise.name = slice[0]
- exercise.weight_kg = slice[1]
- exercise.weight_lb = slice[2]
- exercise.sets = slice[3..(slice.size)]
- workout.exercises << exercise
+ row[5..(row.size)].take(3 * 8).each_slice(8) do |slice|
+ workout.exercises << Csv::Exercise.new(
+ name: slice[0],
+ weight_kg: slice[1],
+ weight_lb: slice[2],
+ sets: slice[3..(slice.size)],
+ )
end
workout
end
spec/models/csv/import_spec.rb
@@ -1,4 +1,4 @@
-require 'rails_helper'
+require "rails_helper"
describe Csv::Import do
include_context "stronglifts_program"
spec/models/backup_file_spec.rb
@@ -13,7 +13,7 @@ describe BackupFile do
expect(subject).to be_valid
end
- it 'returns true for csv exports' do
+ it "returns true for csv exports" do
csv_export = fixture_file("spreadsheet-stronglifts.csv")
subject = BackupFile.new(user, csv_export)
expect(subject).to be_valid
spec/models/email_processor_spec.rb
@@ -19,7 +19,8 @@ describe EmailProcessor do
subject.process
- expect(backup_file).to have_received(:process_later).with(Program.stronglifts)
+ expect(backup_file).to have_received(:process_later).
+ with(Program.stronglifts)
end
end
end
spec/factories.rb
@@ -24,29 +24,31 @@ FactoryGirl.define do
end
factory :email, class: OpenStruct do
to [{
- full: 'to_user@email.com',
- email: 'to_user@email.com',
- token: 'to_user',
- host: 'email.com',
+ full: "to_user@email.com",
+ email: "to_user@email.com",
+ token: "to_user",
+ host: "email.com",
name: nil
}]
from({
- token: 'from_user',
- host: 'email.com',
- email: 'from_email@email.com',
- full: 'From User <from_user@email.com>',
- name: 'From User'
+ token: "from_user",
+ host: "email.com",
+ email: "from_email@email.com",
+ full: "From User <from_user@email.com>",
+ name: "From User"
})
- subject 'email subject'
- body 'Hello!'
- attachments {[]}
+ subject "email subject"
+ body "Hello!"
+ attachments { [] }
trait :with_attachment do
attachments {[
ActionDispatch::Http::UploadedFile.new({
- filename: 'spreadsheet-stronglifts.csv',
- type: 'text/plain',
- tempfile: File.new("#{File.expand_path(File.dirname(__FILE__))}/fixtures/spreadsheet-stronglifts.csv")
+ filename: "spreadsheet-stronglifts.csv",
+ type: "text/plain",
+ tempfile: File.new(
+ "#{File.expand_path(File.dirname(__FILE__))}/fixtures/spreadsheet-stronglifts.csv"
+ )
})
]}
end