master
 1require "rails_helper"
 2
 3describe TrainingHistory do
 4  include_context "stronglifts_program"
 5  subject { TrainingHistory.new(user, squat) }
 6  let(:user) { create(:user) }
 7
 8  describe "#to_line_chart" do
 9    let(:date) { DateTime.now.utc }
10    let(:target_weight) { rand(300) }
11    let(:body_weight) { 210 }
12
13    before :each do
14      session = user.begin_workout(routine_a, date, body_weight)
15      5.times do
16        session.train(squat, target_weight, repetitions: 5)
17        session.train(bench_press, target_weight + 10, repetitions: 5)
18      end
19    end
20
21    it "returns the history in the format required for the chart" do
22      result = subject.to_line_chart
23      expect(result).to_not be_nil
24      expect(result.keys.first.to_i).to eql(date.to_i)
25      expect(result.keys.count).to eql(1)
26      expect(result.values.first).to eql(target_weight.to_f)
27    end
28  end
29
30  describe "#completed_any" do
31    describe "when this exercise has never been performed" do
32      it "returns false" do
33        expect(subject.completed_any?).to be_falsey
34      end
35    end
36
37    describe "when the exercise has been performed at least once" do
38      it "returns true" do
39        session = user.begin_workout(routine_a, DateTime.now, 225)
40        3.times do
41          session.train(squat, 310, repetitions: 5)
42        end
43        expect(subject.completed_any?).to be_truthy
44      end
45    end
46  end
47end