master
 1require "rails_helper"
 2
 3describe Routine do
 4  subject { build(:routine) }
 5
 6  describe "#add_exercise" do
 7    let(:exercise) { create(:exercise) }
 8
 9    before :each do
10      subject.save!
11    end
12
13    it "adds a new exercise with the specified sets" do
14      sets = rand(10)
15      subject.add_exercise(exercise, sets: sets)
16      expect(subject.recommendations.first.sets).to eql(sets)
17    end
18
19    it "adds the new exercise with the specified reps" do
20      repetitions = rand(10)
21      subject.add_exercise(exercise, repetitions: repetitions)
22      expect(subject.recommendations.first.repetitions).to eql(repetitions)
23    end
24
25    it "adds the excercise" do
26      subject.add_exercise(exercise)
27      expect(subject.recommendations.first.exercise).to eql(exercise)
28    end
29
30    it "does not add a duplicate exercise" do
31      subject.add_exercise(exercise)
32      subject.add_exercise(exercise)
33      expect(subject.exercises.count).to eql(1)
34      expect(subject.recommendations.count).to eql(1)
35    end
36
37    it "adds a timed exercise" do
38      subject.add_exercise(exercise, sets: 3, duration: 60.seconds)
39      expect(subject.exercises).to match_array([exercise])
40      expect(subject.recommendations.count).to eql(1)
41      recommendation = subject.recommendations.first.reload
42
43      expect(recommendation.duration).to eql(60.seconds.to_i)
44      expect(recommendation.exercise).to eql(exercise)
45      expect(recommendation.repetitions).to eql(1)
46      expect(recommendation.sets).to eql(3)
47    end
48  end
49end