2024-09-24 09:09:54 +08:00
|
|
|
from helper import login, logout
|
2024-09-22 11:28:02 +08:00
|
|
|
import time
|
2024-09-25 16:10:55 +08:00
|
|
|
import pytest
|
2024-09-22 10:50:49 +08:00
|
|
|
from selenium.webdriver.common.by import By
|
|
|
|
from selenium.webdriver.support.wait import WebDriverWait
|
|
|
|
from selenium.webdriver.support import expected_conditions as EC
|
2024-09-22 11:28:02 +08:00
|
|
|
|
2024-09-22 10:50:49 +08:00
|
|
|
|
|
|
|
def test_admin_can_create_lecturer_account(driver, url, admin_username, admin_password, restore_database):
|
|
|
|
# Administrator (admin@qq.com, password 123) logs in
|
|
|
|
driver.maximize_window()
|
|
|
|
login(driver, url, admin_username, admin_password)
|
|
|
|
|
2024-09-22 11:28:02 +08:00
|
|
|
# Create a Lecturer account for Mr Lan (mrlan@qq.com, password [123Abc!])
|
2024-09-22 10:50:49 +08:00
|
|
|
tab = driver.find_element(By.ID, 'tab_ins_accounts')
|
|
|
|
tab.click()
|
|
|
|
elem = driver.find_element(By.NAME, 'fullname')
|
|
|
|
elem.send_keys('Mr Lan')
|
|
|
|
elem = driver.find_element(By.NAME, 'email')
|
|
|
|
elem.send_keys('mrlan@qq.com')
|
|
|
|
elem = driver.find_element(By.NAME, 'password')
|
|
|
|
elem.send_keys('123Abc!!')
|
|
|
|
radio_button = driver.find_element(By.NAME, 'type')
|
2024-09-24 09:09:54 +08:00
|
|
|
radio_button.click()
|
2024-09-22 10:50:49 +08:00
|
|
|
button = driver.find_element(By.NAME, 'create_btn')
|
|
|
|
button.click()
|
|
|
|
|
2024-09-22 11:28:02 +08:00
|
|
|
# Log out Admin account
|
2024-09-24 09:09:54 +08:00
|
|
|
logout(driver)
|
|
|
|
|
2024-09-22 11:28:02 +08:00
|
|
|
# Log in Lecturer account
|
2024-09-22 10:50:49 +08:00
|
|
|
login(driver, url, 'mrlan@qq.com', '123Abc!!')
|
|
|
|
elems = driver.find_elements(By.CLASS_NAME, 'nav-link')
|
|
|
|
assert '(Lecturer)' in elems[0].text
|
2024-09-22 11:28:02 +08:00
|
|
|
assert 'Mr Lan' in elems[0].text
|
2024-09-22 10:50:49 +08:00
|
|
|
driver.quit()
|
2024-09-25 16:10:55 +08:00
|
|
|
|
2024-09-22 10:50:49 +08:00
|
|
|
|
2024-09-24 09:09:54 +08:00
|
|
|
def test_lecturer_can_create_course(driver, url, restore_database):
|
|
|
|
# Lecturer lanhui@qq.com logs in
|
|
|
|
driver.maximize_window()
|
|
|
|
login(driver, url, 'lanhui@qq.com', '123')
|
|
|
|
|
2024-09-22 10:50:49 +08:00
|
|
|
# Create a course called CSC1001 Advanced Software Engineering, 2024
|
2024-09-24 09:09:54 +08:00
|
|
|
elem = driver.find_element(By.NAME, 'name')
|
|
|
|
elem.send_keys('Advanced Software Engineering')
|
|
|
|
elem = driver.find_element(By.NAME, 'code')
|
|
|
|
elem.send_keys('CSC1001')
|
|
|
|
elem = driver.find_element(By.NAME, 'academic')
|
|
|
|
elem.send_keys('2004')
|
|
|
|
elem = driver.find_element(By.NAME, 'faculty')
|
|
|
|
elem.send_keys('School of Computer Science and Technology')
|
|
|
|
elem = driver.find_element(By.CLASS_NAME, 'btn-primary')
|
|
|
|
elem.click()
|
|
|
|
elems = driver.find_elements(By.CLASS_NAME, 'btn-default')
|
|
|
|
last_elem = elems[-1]
|
|
|
|
assert 'Advanced Software Engineering' in last_elem.text
|
|
|
|
assert '(CSC1001)' in last_elem.text
|
|
|
|
|
|
|
|
# Logout
|
|
|
|
logout(driver)
|
|
|
|
driver.quit()
|
2024-09-22 10:50:49 +08:00
|
|
|
|
|
|
|
|
2024-09-25 16:10:55 +08:00
|
|
|
def test_lecturer_can_post_assignment(driver, url, restore_database):
|
2024-09-22 10:50:49 +08:00
|
|
|
# Lecturer mrlan@qq.com logs in
|
2024-09-25 16:10:55 +08:00
|
|
|
driver.maximize_window()
|
|
|
|
login(driver, url, 'lanhui@qq.com', '123')
|
|
|
|
|
|
|
|
# Create an assignment called Take-home quiz 1 for course (P.M2019) - Project Management
|
|
|
|
elems = driver.find_elements(By.CLASS_NAME, 'btn-default')
|
|
|
|
elems[1].click()
|
|
|
|
elem = driver.find_element(By.NAME, 'deadlinedate')
|
|
|
|
elem.send_keys('002024/12/30')
|
|
|
|
elem = driver.find_element(By.NAME, 'deadlinetime')
|
|
|
|
elem.send_keys('23:59')
|
|
|
|
elem = driver.find_element(By.NAME, 'title')
|
|
|
|
elem.send_keys('Take-home quiz 1')
|
|
|
|
elem = driver.find_element(By.NAME, 'instructions')
|
|
|
|
elem.send_keys('This is a closed-book quiz.')
|
|
|
|
elem = driver.find_element(By.NAME, 'marks')
|
|
|
|
elem.send_keys('10')
|
|
|
|
radio_button = driver.find_element(By.NAME, 'type')
|
|
|
|
radio_button.click()
|
|
|
|
elem = driver.find_element(By.CLASS_NAME, 'btn-primary')
|
|
|
|
elem.click()
|
|
|
|
|
|
|
|
# Check if the assignment has been successfully posted
|
|
|
|
elem = driver.find_element(By.CLASS_NAME, 'card-title')
|
|
|
|
assert 'Take-home quiz 1 (10 Marks, Individual)' in elem.text
|
|
|
|
elem = driver.find_element(By.CLASS_NAME, 'text-muted')
|
|
|
|
assert 'Deadline: 2024-12-30' in elem.text
|
2024-09-22 10:50:49 +08:00
|
|
|
|
|
|
|
|
2024-09-25 16:10:55 +08:00
|
|
|
@pytest.mark.skip()
|
2024-09-22 10:50:49 +08:00
|
|
|
def test_lecturer_can_add_student_numbers():
|
|
|
|
# Lecturer mrlan@qq.com logs in
|
|
|
|
# Add 6 ASE student numbers
|
|
|
|
assert True
|
|
|
|
|
|
|
|
|
2024-09-25 16:10:55 +08:00
|
|
|
@pytest.mark.skip()
|
2024-09-22 10:50:49 +08:00
|
|
|
def test_student_can_sign_up():
|
|
|
|
# Student with recognizable student number can sign up an account
|
|
|
|
assert True
|
|
|
|
|
|
|
|
|
2024-09-25 16:10:55 +08:00
|
|
|
@pytest.mark.skip()
|
2024-09-22 10:50:49 +08:00
|
|
|
def test_student_can_join_course():
|
|
|
|
# Student can join CSC1001 Advanced Software Engineering
|
|
|
|
assert True
|
|
|
|
|
|
|
|
|
2024-09-25 16:10:55 +08:00
|
|
|
@pytest.mark.skip()
|
2024-09-22 10:50:49 +08:00
|
|
|
def test_student_can_submit_assignment():
|
|
|
|
# Student can submit Take-home quiz 1 for CSC1001
|
|
|
|
assert True
|