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