|
@@ -0,0 +1,76 @@
|
|
|
+require 'test_helper'
|
|
|
+
|
|
|
+class LecturesControllerTest < ActionDispatch::IntegrationTest
|
|
|
+ def setup
|
|
|
+ @lecture = lectures(:two)
|
|
|
+ @course = courses(:two)
|
|
|
+ @student_user = users(:billy)
|
|
|
+ @teacher_user = users(:ben)
|
|
|
+ @school_admin = users(:daniel)
|
|
|
+ @global_admin = users(:admin)
|
|
|
+ end
|
|
|
+
|
|
|
+ test "should show lecture" do
|
|
|
+ log_in_as @student_user
|
|
|
+ get lecture_path @lecture
|
|
|
+ assert_response :success
|
|
|
+ end
|
|
|
+
|
|
|
+ test "student should not edit lecture" do
|
|
|
+ log_in_as @student_user
|
|
|
+ get edit_lecture_path @lecture
|
|
|
+ assert_redirected_to root_url
|
|
|
+ end
|
|
|
+
|
|
|
+ test "teacher should edit and update lecture" do
|
|
|
+ log_in_as @teacher_user
|
|
|
+ get edit_lecture_path @lecture
|
|
|
+ assert_response :success
|
|
|
+ patch lecture_path(@lecture), params: { lecture: { description: "New Lorem Ipsum" } }
|
|
|
+ assert_redirected_to @lecture
|
|
|
+ assert_equal "New Lorem Ipsum", @lecture.reload.description
|
|
|
+ end
|
|
|
+
|
|
|
+ test "school admin should create new lecture" do
|
|
|
+ log_in_as @school_admin
|
|
|
+ get new_lecture_path
|
|
|
+ assert_response :success
|
|
|
+ assert_difference "Lecture.count", 1 do
|
|
|
+ post lectures_path, params: { lecture: { description: "Lorem Ipsum",
|
|
|
+ location: "1A",
|
|
|
+ course_id: @course.id,
|
|
|
+ starts_at: 2.days.ago,
|
|
|
+ ends_at: 2.days.since } }
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ test "global admin should create new lecture" do
|
|
|
+ log_in_as @global_admin
|
|
|
+ get new_lecture_path
|
|
|
+ assert_response :success
|
|
|
+ assert_difference "Lecture.count", 1 do
|
|
|
+ post lectures_path, params: { lecture: { description: "New Lecture",
|
|
|
+ location: "1A",
|
|
|
+ course_id: @course.id,
|
|
|
+ starts_at: 2.days.ago,
|
|
|
+ ends_at: 2.days.since } }
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ test "unauthorized should not create lecture" do
|
|
|
+ log_in_as @student_user
|
|
|
+ assert_no_difference "Lecture.count" do
|
|
|
+ # With valid course id
|
|
|
+ post lectures_path, params: { lecture: { description: "New Lecture",
|
|
|
+ location: "1A",
|
|
|
+ course_id: @course.id,
|
|
|
+ starts_at: 2.days.ago,
|
|
|
+ ends_at: 2.days.since } }
|
|
|
+ # Without course id
|
|
|
+ post lectures_path, params: { lecture: { description: "New Lecture",
|
|
|
+ location: "1A",
|
|
|
+ starts_at: 2.days.ago,
|
|
|
+ ends_at: 2.days.since } }
|
|
|
+ end
|
|
|
+ end
|
|
|
+end
|