chore: init commit
in worker.../repo/GITFOLDER.zip is the .git folder.
This commit is contained in:
@@ -0,0 +1,176 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "test_helper"
|
||||
|
||||
class TeachersControllerTest < ActionDispatch::IntegrationTest
|
||||
test "index" do
|
||||
admin = create(:admin)
|
||||
sign_in(admin)
|
||||
|
||||
get admin_teachers_path
|
||||
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "new" do
|
||||
admin = create(:admin)
|
||||
sign_in(admin)
|
||||
|
||||
get new_admin_teacher_path
|
||||
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "show" do
|
||||
teacher = create(:teacher)
|
||||
admin = create(:admin)
|
||||
sign_in(admin)
|
||||
|
||||
get admin_teacher_path(teacher)
|
||||
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "edit" do
|
||||
teacher = create(:teacher)
|
||||
admin = create(:admin)
|
||||
sign_in(admin)
|
||||
|
||||
get edit_admin_teacher_path(teacher)
|
||||
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "update" do
|
||||
teacher = create(:teacher)
|
||||
admin = create(:admin)
|
||||
sign_in(admin)
|
||||
|
||||
params = { teacher: { name: "Jane Smith" } }
|
||||
assert_changes "teacher.reload.updated_at" do
|
||||
patch admin_teacher_path(teacher), params: params
|
||||
end
|
||||
|
||||
assert_redirected_to admin_teacher_path(teacher)
|
||||
end
|
||||
|
||||
test "create creates a teacher, associates classroom, sends reset email, and redirects with notice" do
|
||||
admin = create(:admin)
|
||||
classroom = create(:classroom)
|
||||
sign_in(admin)
|
||||
ActionMailer::Base.deliveries.clear
|
||||
|
||||
params = {
|
||||
teacher: {
|
||||
email: "t1@example.com",
|
||||
username: "teacher1",
|
||||
classroom_ids: [classroom.id]
|
||||
}
|
||||
}
|
||||
|
||||
assert_difference %w[Teacher.count ActionMailer::Base.deliveries.size], 1 do
|
||||
post admin_teachers_path, params: params
|
||||
end
|
||||
|
||||
teacher = Teacher.find_by!(email: "t1@example.com")
|
||||
assert_redirected_to admin_teacher_path(teacher)
|
||||
assert_not_nil flash[:notice]
|
||||
assert_includes teacher.classrooms, classroom
|
||||
|
||||
teacher.reload
|
||||
|
||||
assert_not_nil teacher.reset_password_sent_at, "reset_password_instructions should be sent"
|
||||
assert teacher.encrypted_password.present?, "temp password should be set"
|
||||
end
|
||||
|
||||
test "create with no classroom id still creates teacher, and does not associate classroom" do
|
||||
admin = create(:admin)
|
||||
sign_in(admin)
|
||||
ActionMailer::Base.deliveries.clear
|
||||
|
||||
params = {
|
||||
teacher: {
|
||||
email: "t2@example.com",
|
||||
username: "teacher2"
|
||||
}
|
||||
}
|
||||
|
||||
assert_difference %w[Teacher.count ActionMailer::Base.deliveries.size], 1 do
|
||||
post admin_teachers_path, params: params
|
||||
end
|
||||
|
||||
teacher = Teacher.find_by!(email: "t2@example.com")
|
||||
assert_redirected_to admin_teacher_path(teacher)
|
||||
assert_equal 0, teacher.classrooms.count, "no classroom should be associated"
|
||||
end
|
||||
|
||||
test "create sends email with password reset link" do
|
||||
admin = create(:admin)
|
||||
sign_in(admin)
|
||||
|
||||
params = {
|
||||
teacher: {
|
||||
email: "newteacher@example.com",
|
||||
username: "newteacher"
|
||||
}
|
||||
}
|
||||
|
||||
emails = capture_emails do
|
||||
post admin_teachers_path, params: params
|
||||
end
|
||||
|
||||
assert_equal 1, emails.size
|
||||
email = emails.first
|
||||
assert_equal ["newteacher@example.com"], email.to
|
||||
assert_match(/reset_password_token=/, email.body.encoded)
|
||||
assert_match(/Change my password/, email.body.encoded)
|
||||
end
|
||||
|
||||
test "teacher can set password via reset link from creation email" do
|
||||
admin = create(:admin)
|
||||
sign_in(admin)
|
||||
ActionMailer::Base.deliveries.clear
|
||||
|
||||
post admin_teachers_path, params: {
|
||||
teacher: { email: "resettest@example.com", username: "resettest" }
|
||||
}
|
||||
|
||||
email = ActionMailer::Base.deliveries.last
|
||||
token = email.body.encoded.match(/reset_password_token=([^"]+)/)[1]
|
||||
|
||||
sign_out(admin)
|
||||
|
||||
# Teacher follows the link from the email
|
||||
get edit_user_password_path(reset_password_token: token)
|
||||
assert_response :success
|
||||
|
||||
# Teacher sets a new password
|
||||
put user_password_path, params: {
|
||||
user: {
|
||||
reset_password_token: token,
|
||||
password: "newpassword123",
|
||||
password_confirmation: "newpassword123"
|
||||
}
|
||||
}
|
||||
|
||||
teacher = Teacher.find_by!(email: "resettest@example.com")
|
||||
assert teacher.valid_password?("newpassword123")
|
||||
end
|
||||
|
||||
test "create with invalid params renders unprocessable_entity and does not create teacher" do
|
||||
admin = create(:admin)
|
||||
sign_in(admin)
|
||||
|
||||
params = {
|
||||
teacher: {
|
||||
email: ""
|
||||
}
|
||||
}
|
||||
|
||||
assert_no_difference "Teacher.count" do
|
||||
post admin_teachers_path, params: params
|
||||
end
|
||||
|
||||
assert_response :unprocessable_entity
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user