def test_duplicate_seminar_different_convenor(self): system = EMS() user = system.get_user('4119998') seminar = (1,1,'Test Seminar',4119993,'Testing','2018-12-10 22:00:00',\ 'UNSW','2019-01-01 22:00:00','2019-01-30 22:00:00','2018-12-01 22:00:00',1,100,2) dbInserter.insert_Seminar(seminar) session = (1,'Hi','Tommy','Hi',50,0,1,1) dbInserter.insert_Session(session) session = (2,'Bye','Tommy','Bye',50,0,1,1) dbInserter.insert_Session(session) seminar = system.create_seminar(user, 'Test','tested',\ '2018-12-10 22:00:00','UNSW Law Library','2019-01-01 22:00:00','2019-01-30 22:00:00',\ '2018-12-1 22:00:00',1) self.assertTrue(seminar, 1) self.assertEqual(system.create_session(seminar, 'Hi','Hi','Tommy',50), 1) self.assertEqual(system.create_session(seminar, 'Bye','Bye','Tommy',50), 1) self.assertTrue(len(seminar.sessions) == 2) self.assertEqual(system.add_seminar(seminar), 1) self.assertEqual(system.add_sessions(seminar), 1) seminar_list = dbHandler.select_all_products("Seminar") session_list = dbHandler.select_all_products("Session") self.assertTrue(len(seminar_list) == 2) self.assertTrue(len(session_list) == 4) sem1 = (2,1,'Test',4119998,'tested','2018-12-10 22:00:00','UNSW Law Library',\ '2019-01-01 22:00:00','2019-01-30 22:00:00','2018-12-01 22:00:00',1,100,2) self.assertEqual(seminar_list[1], sem1) session3 = (3,'Hi','Tommy','Hi',50,0,2,1) session4 = (4,'Bye','Tommy','Bye',50,0,2,1) self.assertEqual(session_list[2], session3) self.assertEqual(session_list[3], session4)
def test_successful_create_seminar(self): system = EMS() user = system.get_user('4119993') sem = (1,1,'Test',4119993,'Testing','2018-12-10 22:00:00',\ 'UNSW','2019-01-01 22:00:00','2019-01-30 22:00:00','2018-12-01 22:00:00',1,100,2) session1 = (1,'Hi','Hi','Hi',50,1,1,1) session2 = (2,'Bye','Bye','Bye',50,1,1,1) seminar = system.create_seminar(user, 'Test','Testing',\ '2018-12-10 22:00:00','UNSW','2019-01-01 22:00:00','2019-01-30 22:00:00',\ '2018-12-01 22:00:00',1) self.assertEqual(system.create_session(seminar, 'Hi','Hi','Hi', 50), 1) self.assertEqual(system.create_session(seminar, 'Bye','Bye','Bye',50), 1) self.assertTrue(len(seminar.sessions) == 2) self.assertEqual(system.add_seminar(seminar), 1) self.assertEqual(system.add_sessions(seminar), 1) seminar_list = dbHandler.select_all_products("Seminar") session_list = dbHandler.select_all_products("Session") self.assertTrue(seminar_list != []) self.assertTrue(session_list != []) self.assertEqual(seminar_list[0], sem) self.assertEqual(session_list[0], session1) self.assertEqual(session_list[1], session2)
def test_invalid_num_sessions(self): system = EMS() user = system.get_user('4119993') seminar = system.create_seminar(user, 'Test','Testing',\ '2018-12-10 22:00:00','UNSW','2019-01-01 22:00:00','2019-01-30 22:00:00',\ '2018-12-1 22:00:00',1) self.assertEqual(system.create_session(seminar, 'Hi','Hi','Hi', 50), 1) self.assertTrue(len(seminar.sessions) == 1) self.assertEqual(system.add_seminar(seminar), 0) seminar_list = dbHandler.select_all_products("Seminar") session_list = dbHandler.select_all_products("Session") self.assertTrue(seminar_list == []) self.assertTrue(session_list == [])
def events_list(self, event_type): """ Produces a list of all events regradless of the status Input: event_type(string) Output: List(event) """ events = dbHandler.select_all_products(event_type) eventList = [] for event in events: eventList.append(self.converter(event_type, event)) return eventList
def test_duplicate_seminar(self): system = EMS() user = system.get_user('4119993') seminar = (1,1,'Test Seminar',4119993,'Testing','2018-12-10 22:00:00','UNSW','2019-01-01 22:00:00','2019-01-30 22:00:00','2018-12-1 22:00:00',1,100,2) dbInserter.insert_Seminar(seminar) session = (1,'Hi','Tommy','Hi',50,1,1,1) dbInserter.insert_Session(session) session = (2,'Bye','Tommy','Bye',50,1,1,1) dbInserter.insert_Session(session) seminar = system.create_seminar(user, 'Test','tested',\ '2018-12-10 22:00:00','UNSW Law Library','2019-01-01 22:00:00','2019-01-30 22:00:00',\ '2018-12-1 22:00:00',1) self.assertTrue(seminar, 0) seminar_list = dbHandler.select_all_products("Seminar") session_list = dbHandler.select_all_products("Session") self.assertTrue(len(seminar_list) == 1) self.assertTrue(len(session_list) == 2)
def add_user(self, name, zID, email, password, role): """ Adds Users Input: {name, email, password, role}->string, {zID}->int Output: int """ user_list = dbHandler.select_all_products('User') for user in user_list: if email in user: return 0 user = (name, zID, email, password, role) dbInserter.insert_User(user) return 1
def test_active_register_seminar(self): system = EMS() user = system.get_user('6119988') date_format = "%Y-%m-%d %H:%M:%S" yesterday = str(datetime.strftime(datetime.now() - timedelta(1), date_format)) tomorrow = str(datetime.strftime(datetime.now() + timedelta(1), date_format)) seminar = (1,1,'Test Seminar',4119993,'Testing','2018-12-10 22:00:00','UNSW',yesterday,tomorrow,'2018-12-1 22:00:00',1,100,0) dbInserter.insert_Seminar(seminar) session = (1,'Hi','Tommy','Hi',50,0,1,1) dbInserter.insert_Session(session) session = (2,'Bye','Tommy','Bye',50,0,1,1) dbInserter.insert_Session(session) test_sess = system.get_event('Session', 1) with pytest.raises(Exception) as e_info: updated = system.update_attendees('register', test_sess, 'Session', user.email) seminar_registration = dbHandler.select_all_products("User_Seminar") self.assertEqual(seminar_registration, []) session_registration = dbHandler.select_all_products("User_Session") self.assertEqual(session_registration, [])
def test_successful_register_seminar(self): system = EMS() user = system.get_user('6119988') seminar = (1,1,'Test Seminar',4119993,'Testing','2018-12-10 22:00:00','UNSW','2019-01-01 22:00:00','2019-01-30 22:00:00','2018-12-1 22:00:00',1,100,0) dbInserter.insert_Seminar(seminar) session = (1,'Hi','Tommy','Hi',50,0,1,1) dbInserter.insert_Session(session) session = (2,'Bye','Tommy','Bye',50,0,1,1) dbInserter.insert_Session(session) test_sess = system.get_event('Session', 1) self.assertTrue(system.update_attendees('register', test_sess, 'Session', user.email) != 0) test_sess = system.get_event('Session',1) self.assertEqual(test_sess.noAttendees, 1) session1 = (1,'Hi','Tommy','Hi',50,1,1,1) session_list = dbHandler.select_all_products("Session") self.assertEqual(session_list[0], session1) seminar_registration = dbHandler.select_all_products("User_Seminar") self.assertEqual(seminar_registration[0], ('*****@*****.**',1,1)) session_registration = dbHandler.select_all_products("User_Session") self.assertEqual(session_registration[0], ('*****@*****.**',1,1,1))
def add_sessions(self, seminar): """ Creates a session entry in the database Input: {seminar}->seminar object Output: N/A """ SessionID = len(dbHandler.select_all_products('Session')) for session in seminar.sessions: SessionID += 1 data = (SessionID, session.topic, session.presenter, session.detail,\ session.capacity, session.noAttendees, seminar.event_id, session.status) dbInserter.insert_Session(data) self.update_attendees('register', session, "Session", session.presenter) return 1
def createCourse(self, user, name, detail, deregister, capacity, venue, start_date, end_date, early_bird, register_fee): """ Creates a course entry in the database Input: {user}->user object, {name, detail, venue, deregister, start_date, end_date}->string, {capacity}->int Output: boolean value to confirm success or failure """ if isinstance(start_date, str): date_format = "%Y-%m-%d %H:%M:%S" start_date = datetime.strptime(start_date, date_format) end_date = datetime.strptime(end_date, date_format) deregister = datetime.strptime(deregister, date_format) early_bird = datetime.strptime(Early_Bird, date_format) if capacity < 1: raise capacityError("The capacity must at least be 1.") elif datetime.now() > start_date: raise startDateError( "The start date must before the current date.") elif early_bird > deregister: raise EarlyBirdError( "The early bird period must be before the deregister period.") elif end_date < start_date: raise periodError( period, "The start date must before or equal to the end date.") elif start_date < deregister: raise deregisterError( d_period, "The deregister period cannot after the start date.") elif user.role != 'trainer': raise invalidCreator("Unauthorised Creator") elif register_fee < 0: raise invalidFee("Register fee must at least be 0.") else: courseList = dbHandler.select_all_products('Course') CourseID = len(courseList) + 1 for course in courseList: if user.zID in course and name in course and course[1] == 1: return 0 Status = 1 noAttendees = 0 data = (CourseID, Status, name, user.zID, detail, deregister, capacity, \ noAttendees, venue, start_date, end_date, early_bird, register_fee) dbInserter.insert_Course(data) return 1
def create_seminar(self, user, name, detail, deregister, venue, start_date, end_date, early_bird, register_fee): """ Creates a seminar object stored in system temporarily Input: {user}->user object, {name, detail, venue, deregister, start_date, end_date}->string, {capacity}->int Output: boolean value confirm success or failure """ if isinstance(start_date, str): date_format = "%Y-%m-%d %H:%M:%S" start_date = datetime.strptime(start_date, date_format) end_date = datetime.strptime(end_date, date_format) deregister = datetime.strptime(deregister, date_format) early_bird = datetime.strptime(early_bird, date_format) if datetime.now() > start_date: raise startDateError( "The start date must before the current date.") elif early_bird > deregister: raise EarlyBirdError( "The early bird period must be before the deregister period.") elif end_date < start_date: raise periodError( period, "The start date must br before or equal to the end date.") elif start_date < deregister < 0: raise deregisterError( d_period, "The deregister period cannot be after the start date.") elif user.role != 'trainer': raise invalidCreator("Unauthorised Creator") elif register_fee < 0: raise invalidFee("Register fee must at least be 0.") else: seminarList = dbHandler.select_all_products('Seminar') SeminarID = len(seminarList) + 1 for seminar in seminarList: if user.zID in seminar and name in seminar and seminar[1] == 1: return 0 Status = 1 info = (SeminarID, Status, name, user.zID, detail, deregister, venue,\ start_date, end_date, early_bird, register_fee) new_seminar = self.converter('Seminar', info) self.tmpSeminar = new_seminar return new_seminar
def test_close_registrations(self): system = EMS() user = system.get_user('4119998') seminar = (1,0,'Test Seminar',4119993,'Testing','2018-12-10 22:00:00','UNSW','2019-01-01 22:00:00','2019-01-30 22:00:00','2018-12-1 22:00:00',1,100,0) dbInserter.insert_Seminar(seminar) session1 = (1,'Hi','Tommy','Hi',50,0,1,0) dbInserter.insert_Session(session1) session2 = (2,'Bye','Tommy','Bye',50,0,1,0) dbInserter.insert_Session(session2) test_sess = system.get_event('Session', 1) with pytest.raises(Exception) as e_info: updated = system.update_attendees('register', test_sess, 'Session', user.email) test_sess = system.get_event('Session',1) self.assertEqual(test_sess.noAttendees, 0) session_list = dbHandler.select_all_products("Session") self.assertEqual(session_list[0], session1)