master
1require "rails_helper"
2
3feature "Workouts", type: :feature do
4 let(:user) { create(:user, password: "password") }
5 before :each do
6 subject.login_with(user.username, "password")
7 end
8
9 feature "viewing history" do
10 include_context "stronglifts_program"
11 subject { WorkoutsPage.new }
12 let!(:workout) do
13 create(:workout,
14 user: user,
15 routine: routine_a,
16 occurred_at: DateTime.now,
17 body_weight: 210.0
18 )
19 end
20
21 it "displays each training session" do
22 subject.visit_page
23 expect(page).to have_content(workout.occurred_at.strftime("%a, %d %b"))
24 end
25 end
26
27 feature "starting a new workout" do
28 include_context "stronglifts_program"
29 subject { NewWorkoutPage.new }
30
31 it "creates a new workout" do
32 subject.visit_page
33 subject.change_body_weight(225.0)
34 subject.click_start
35
36 expect(user.workouts.count).to eql(1)
37 expect(user.workouts.last.body_weight).to eql(225.0)
38 end
39 end
40
41 feature "recording a workout", js: true do
42 include_context "stronglifts_program"
43
44 subject { EditWorkoutPage.new(workout) }
45
46 let!(:workout) do
47 squat_workout
48 bench_workout
49 row_workout
50 dips_workout
51 workout = user.next_workout_for(routine_a)
52 workout.update!(occurred_at: DateTime.now, body_weight: 225)
53 workout
54 end
55
56 before :each do
57 subject.visit_page
58 subject.open_section(squat)
59 end
60
61 it "saves the successful set" do
62 first_squat_set = workout.sets.for(squat).to_a.at(0)
63 subject.complete(set: first_squat_set)
64 expect(first_squat_set.reload.actual_repetitions).to eql(5)
65 end
66
67 it "saves the failed set" do
68 second_squat_set = workout.sets.for(squat).to_a.at(1)
69 subject.complete(set: second_squat_set, repetitions: 4)
70 expect(second_squat_set.reload.actual_repetitions).to eql(4)
71 end
72
73 it "does not change an incomplete set" do
74 third_squat_set = workout.sets.for(squat).to_a.at(2)
75 expect(third_squat_set.reload.actual_repetitions).to be_nil
76 end
77 end
78end