Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import unittest
- import os
- #from authenticated import *
- #from question_add import *
- from question_class2 import *
- from response_class import *
- from survey_class3 import *
- import sqlite3
- from sqlalchemy import exc,orm
- import csv
- # not sure how to test authentication ...
- class TestAuthentication(unittest.TestCase):
- pass
- class TestQuestionClass(unittest.TestCase):
- def setUp(self):
- con = sqlite3.connect("test_library.db")
- cur = con.cursor()
- ############### test_question_pool ########################
- cur.execute("CREATE TABLE IF NOT EXISTS question_pool (QID,Question,Option1,Option2,Option3,Option4,Option5,Option6,Option7,Option8);")
- with open("questionexample.csv","r") as fin:
- dr = csv.DictReader(fin)
- to_db = [(i["QID"],i["Question"],i["Option1"],i["Option2"],i["Option3"],i["Option4"],i["Option5"],i["Option6"],i["Option7"],i["Option8"]) for i in dr]
- cur.executemany("INSERT INTO question_pool (QID,Question,Option1,Option2,Option3,Option4,Option5,Option6,Option7,Option8) VALUES (?,?,?,?,?,?,?,?,?,?);", to_db)
- con.commit()
- ###########################################################
- # QID,Question,Option1,Option2,Option3,Option4,Option5,Option6,Option7,Option8
- # 1,What did you have for lunch?,test1,test2,test3,test4
- # 2,Test question,a1,a2,a3,a4,a5,a6,a7,a8
- # 3,Another question,__input
- ###########################################################
- # I'm not sure how test no question title because 'itm1' will be interpreted as the title
- def test_add_question_no_title(self):
- with self.assertRaises(TypeError):
- self.question.add_question('itm1','itm2','itm3','itm4','itm5','itm6','itm7','itm8')
- def test_add_question_no_options(self):
- with self.assertRaises(TypeError):
- self.question.add_question('title')
- def test_add_question_with_invalid_title_and_options(self):
- with self.assertRaises(orm.exc.NoResultFound):
- self.question.add_question() # you cannot make a question with no title or options
- def test_successful_question_add(self):
- # add a question with correct inputs
- self.question.question_add('succcess','0','1','2','3','4','5','6','7')
- # check title
- self.assertEqual(question.question,'success')
- # check options
- self.assertEqual(question.answer[0],'0')
- self.assertEqual(question.answer[1],'1')
- self.assertEqual(question.answer[2],'2')
- self.assertEqual(question.answer[3],'3')
- self.assertEqual(question.answer[4],'4')
- self.assertEqual(question.answer[5],'5')
- self.assertEqual(question.answer[6],'6')
- self.assertEqual(question.answer[7],'7')
- def tearDown(self):
- con = sqlite3.connect("test_library.db")
- cur = con.cursor()
- cur.execute("DROP TABLE IF EXISTS question_pool;")
- con.commit()
- con.close()
- class TestResponseClass(unittest.TestCase):
- def setUp(self):
- # add a few dummy responses
- con = sqlite3.connect("test_library.db")
- cur = con.cursor()
- ############### test_survey_pool #########################
- cur.execute("CREATE TABLE IF NOT EXISTS response_pool (SID,userID,option1,option2,option3,option4,option5,ioption6,option7,option8);")
- with open("responseexample.csv","r") as fin:
- dr = csv.DictReader(fin)
- to_db = [(i["SID"],i["userID"],i["Option1"],i["Option2"],i["Option3"],i["Option4"],i["Option5"],i["Option6"],i["Option7"],i["Option8"]) for i in dr]
- cur.executemany("INSERT INTO response_pool (SID,userID,Option1,Option2,Option3,Option4,Option5,Option6,Option7,Option8) VALUES (?,?,?,?,?,?,?,?,?,?);", to_db)
- con.commit()
- ###########################################################
- # SID,userID,Option1,Option2,Option3,Option4,Option5,Option6,Option7,Option8
- # 1,123,1,1,1,1,1,1,1,1
- # 1,124,2,2,2,2,2,2,2,2
- # 1,125,3,3,3,3,3,3,3,3
- ###########################################################
- def test_duplicate_survey_response_same_user(self):
- with self.assertRaises(exc.IntegrityError):
- # creating a user 123 answering survey SID 1 again
- self.response_dup = Response()
- reponse_dup.add_response('1','123','dup1','dup2','dup3','dup4','dup5','dup6','dup7','dup8')
- def tearDown(self):
- con = sqlite3.connect("test_library.db")
- cur = con.cursor()
- cur.execute("DROP TABLE IF EXISTS response_pool;")
- con.commit()
- con.close()
- class TestSurveyClass(unittest.TestCase):
- def setUp(self):
- con = sqlite3.connect("test_library.db")
- cur = con.cursor()
- ############### test_survey_pool #########################
- cur.execute("CREATE TABLE IF NOT EXISTS survey_pool (SID,Name,Course,Offering,QIDs,Active);")
- with open("surveyexample.csv","r") as fin:
- dr = csv.DictReader(fin)
- to_db = [(i["SID"],i["Name"],i["Course"],i["Offering"],i["QIDs"],i["Active"]) for i in dr]
- cur.executemany("INSERT INTO survey_pool (SID,Name,Course,Offering,QIDs,Active) VALUES (?,?,?,?,?,?);", to_db)
- con.commit()
- ###########################################################
- # SID,Name,Course,Offering,QIDs,Active
- # 1,Survey 1,COMP1000,17S2,1 2,1
- # 2,Survey 2,SENG2011,18s2,3,0
- # 3,Survey 3,COMP1521,17s2,1 2 3,1
- ############### test_question_pool ########################
- cur.execute("CREATE TABLE IF NOT EXISTS question_pool (QID,Question,Option1,Option2,Option3,Option4,Option5,Option6,Option7,Option8);")
- with open("questionexample.csv","r") as fin:
- dr = csv.DictReader(fin)
- to_db = [(i["QID"],i["Question"],i["Option1"],i["Option2"],i["Option3"],i["Option4"],i["Option5"],i["Option6"],i["Option7"],i["Option8"]) for i in dr]
- cur.executemany("INSERT INTO question_pool (QID,Question,Option1,Option2,Option3,Option4,Option5,Option6,Option7,Option8) VALUES (?,?,?,?,?,?,?,?,?,?);", to_db)
- con.commit()
- ###########################################################
- # QID,Question,Option1,Option2,Option3,Option4,Option5,Option6,Option7,Option8
- # 1,What did you have for lunch?,test1,test2,test3,test4
- # 2,Test question,a1,a2,a3,a4,a5,a6,a7,a8
- # 3,Another question,__input
- # can't make a survey for a course offering that does not exist
- def test_invalid_course_offering(self):
- with self.assertRaises(exc.IntegrityError):
- self.survey_dup = Survey('fake survey','FAKE1000','17s2','1')
- survey_dup.add_survey('fake survey','FAKE1000','17s2','1',)
- # can't make a survey if a course offering already has a survey
- def test_duplicate_course_offering_survey(self):
- with self.assertRaises(exc.IntegrityError):
- self.survey_dup = Survey('duplicate','COMP1521','17s2','1')
- survey_dup.add_survey('duplicate','COMP1521','17s2','1')
- def tearDown(self):
- con = sqlite3.connect("test_library.db")
- cur = con.cursor()
- cur.execute("DROP TABLE IF EXISTS survey_pool;")
- con.commit()
- cur.execute("DROP TABLE IF EXISTS question_pool;")
- con.commit()
- con.close()
- if __name__=="__main__":
- unittest.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement