Commit b1fcb80

mo khan <mo@mokhan.ca>
2015-11-14 17:22:49
hound happy
1 parent 2bfa6f5
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