Skip to content

Commit 12aa3b7

Browse files
Feature/#379 seperate page to diplay joined students (#382)
* add student list tab * add test for student list tab
1 parent 88ac861 commit 12aa3b7

File tree

7 files changed

+76
-13
lines changed

7 files changed

+76
-13
lines changed

app/controllers/lectures_controller.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,11 @@ def current
8484
end
8585
end
8686

87+
def studentList
88+
@hide_navbar = true
89+
render :studentList
90+
end
91+
8792
def join_lecture
8893
if params[:lecture].present?
8994
key = params[:lecture][:enrollment_key]

app/views/lectures/_tabbar.html.erb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
<a class="nav-link" id="enrollmentKey-tab" data-toggle="tab" href="#enrollmentKey" role="tab" aria-controls="enrollmentKey" aria-selected="false">Enrollment Key</a>
1919
</li>
2020
<% end %>
21+
<li class="nav-item">
22+
<a class="nav-link" id="studentList-tab" data-toggle="tab" href="#studentList" role="tab" aria-controls="studentList" aria-selected="false">Student List</a>
23+
</li>
2124
<li class="nav-item">
2225
<a class="nav-link" id="settings-tab" data-toggle="tab" href="#settings" role="tab" aria-controls="settings" aria-selected="false">Settings</a>
2326
</li>

app/views/lectures/show.html.erb

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,13 @@
118118
<%= raw @qr_code.as_svg(offset: 0, color: '000', shape_rendering: 'crispEdges', module_size: 10, standalone: true) %>
119119
</div>
120120
<% end %>
121-
<p class="h3 padded-text"> Students </p>
122-
<ol>
123-
<% for student in @lecture.participating_students%>
124-
<li><%= student.email %></li>
125-
<% end %>
126-
</ol>
127121
</div>
128122
<% end %>
123+
124+
<div class="container tab-pane fade" id="studentList" role="tabpanel" aria-labelledby="studentList-tab">
125+
<iframe class="polls-iframe" src="<%= studentList_path(@course, @lecture) %>"></iframe>
126+
</div>
127+
129128
<div class="container tab-pane fade" id="settings" role="tabpanel" aria-labelledby="settings-tab">
130129
<%= render 'form', lecture: @lecture %>
131130
</div>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<p class="h1 padded-text"> Students </p>
2+
<ol>
3+
<% for student in @lecture.participating_students%>
4+
<li><%= student.email %></li>
5+
<% end %>
6+
</ol>
7+
8+
<script lang="js">
9+
function main() {
10+
setTimeout(function () {
11+
window.location.reload(true);
12+
}, 3000);
13+
};
14+
main();
15+
</script>

config/routes.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
Rails.application.routes.draw do
22
get "/courses/:course_id/lectures/current", to: "lectures#current", as: "current_lectures"
3+
get "/courses/:course_id/lectures/:lecture_id/studentList", to: "lectures#studentList", as: "studentList"
34
get "/ical/:hash_id", to: "ical#show", as: "ical"
45
post "/courses/:course_id/lectures/join_lecture", to: "lectures#join_lecture", as: "join_lecture"
56
get "/courses/:course_id/lectures/:lecture_id/enroll", to: "lectures#join_lecture_with_url", as: "join_lecture_with_url"

spec/views/lectures/show.html.erb_spec.rb

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,13 @@
4343
expect(rendered).to have_css("#enrollmentKey-tab")
4444
end
4545

46+
it "renders student list tab" do
47+
render
48+
assert_select "a", "Student List"
49+
expect(rendered).to have_content("Student List")
50+
expect(rendered).to have_css("#studentList-tab")
51+
end
52+
4653
it "renders enrollment qr code if enrollment key is present" do
4754
@qr_code = RQRCode::QRCode.new("http://some-random.url/that/is/not/tested")
4855
render
@@ -88,13 +95,6 @@
8895
expect(rendered).to_not have_text("Feedback is not enabled.")
8996
end
9097

91-
it "shows list of participating students in enrollment key tab" do
92-
@lecture.join_lecture(FactoryBot.create(:user, :student, email: "student@mail.com"))
93-
render
94-
assert_select "a", "Enrollment Key"
95-
expect(rendered).to have_text("student@mail.com")
96-
end
97-
9898
it "can change title in settings tab" do
9999
render
100100
assert_select "a", "Settings"
@@ -145,6 +145,12 @@
145145
expect(rendered).not_to have_css("#enrollmentKey-tab")
146146
end
147147

148+
it "renders no student list tab" do
149+
render
150+
expect(rendered).not_to have_content("Student List")
151+
expect(rendered).not_to have_css("#studentList-tab")
152+
end
153+
148154
it "renders no settings tab" do
149155
render
150156
expect(rendered).not_to have_content("Settings")
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
require "rails_helper"
2+
3+
RSpec.describe "lectures/studentList", type: :view do
4+
include Devise::TestHelpers
5+
let(:valid_session) { {} }
6+
before(:each) do
7+
@course = FactoryBot.create(:course)
8+
@lecture = assign(:lecture, Lecture.create!(
9+
name: "Name",
10+
enrollment_key: "Enrollment Key",
11+
status: "running",
12+
lecturer: FactoryBot.create(:user, :lecturer),
13+
course: @course,
14+
date: Date.today,
15+
start_time: DateTime.now,
16+
end_time: DateTime.now + 20.minutes
17+
))
18+
end
19+
20+
describe "as a lecturer" do
21+
before(:each) do
22+
@current_user = @lecture.lecturer
23+
sign_in @lecture.lecturer
24+
end
25+
26+
it "shows list of participating students" do
27+
user = FactoryBot.create(:user, :student, email: "student@mail.com")
28+
@course.join_course(user)
29+
@lecture.join_lecture(user)
30+
render
31+
expect(rendered).to have_text("student@mail.com")
32+
end
33+
end
34+
end

0 commit comments

Comments
 (0)