master
  1require "rails_helper"
  2
  3describe WarmUp do
  4  describe ".new" do
  5    describe "squat" do
  6      let(:squat) { build(:exercise, name: "Squat") }
  7
  8      (45..60).step(5).each do |target_weight|
  9        it "has zero warm up sets" do
 10          expect(WarmUp.new(squat, target_weight).sets).to be_empty
 11        end
 12      end
 13
 14      (65..400).step(5).each do |target_weight|
 15        it "calculates the warm up sets at #{target_weight} lbs" do
 16          sets = WarmUp.new(squat, target_weight).sets
 17          expect(sets).to be_present
 18          if target_weight >= 350
 19            expect(sets.length).to eql(9)
 20          elsif target_weight > 300
 21            expect(sets.length).to eql(8)
 22          elsif target_weight > 265
 23            expect(sets.length).to eql(7)
 24          elsif target_weight > 220
 25            expect(sets.length).to eql(6)
 26          elsif target_weight > 180
 27            expect(sets.length).to eql(5)
 28          elsif target_weight > 130
 29            expect(sets.length).to eql(4)
 30          elsif target_weight > 90
 31            expect(sets.length).to eql(3)
 32          elsif target_weight > 60
 33            expect(sets.length).to eql(2)
 34          end
 35        end
 36      end
 37    end
 38
 39    describe "barbell row" do
 40      let(:barbell_row) { build(:exercise, name: "Barbell Row") }
 41
 42      (45..100).step(5).each do |target_weight|
 43        it "has zero warm up sets" do
 44          expect(WarmUp.new(barbell_row, target_weight).sets).to be_empty
 45        end
 46      end
 47
 48      (105..400).step(5).each do |target_weight|
 49        it "calculates the warm up sets for #{target_weight} lbs" do
 50          sets = WarmUp.new(barbell_row, target_weight).sets
 51          expect(sets).to be_present
 52          if target_weight >= 350
 53            expect(sets.length).to eql(6)
 54          elsif target_weight > 300
 55            expect(sets.length).to eql(5)
 56          elsif target_weight > 265
 57            expect(sets.length).to eql(4)
 58          elsif target_weight > 220
 59            expect(sets.length).to eql(3)
 60          elsif target_weight > 180
 61            expect(sets.length).to eql(2)
 62          elsif target_weight > 100
 63            expect(sets.length).to eql(1)
 64          end
 65        end
 66      end
 67    end
 68
 69    describe "deadlift" do
 70      let(:deadlift) { build(:exercise, name: "Deadlift") }
 71
 72      (45..150).step(5).each do |target_weight|
 73        it "has zero warm up sets at #{target_weight} lbs" do
 74          expect(WarmUp.new(deadlift, target_weight).sets).to be_empty
 75        end
 76      end
 77
 78      (155..400).step(5).each do |target_weight|
 79        it "calculates the warm up sets for #{target_weight} lbs" do
 80          sets = WarmUp.new(deadlift, target_weight).sets
 81          expect(sets).to be_present
 82          if target_weight >= 350
 83            expect(sets.length).to eql(6)
 84          elsif target_weight > 300
 85            expect(sets.length).to eql(5)
 86          elsif target_weight > 265
 87            expect(sets.length).to eql(4)
 88          elsif target_weight > 220
 89            expect(sets.length).to eql(3)
 90          elsif target_weight > 170
 91            expect(sets.length).to eql(2)
 92          elsif target_weight > 100
 93            expect(sets.length).to eql(1)
 94          else
 95            puts [target_weight, sets.map(&:target_weight)].inspect
 96          end
 97        end
 98      end
 99    end
100  end
101end