class Adapter(): def __init__(self): self.myCommandmanager = CommandManager() self.myCommandFactory = CommandFactory() def update_all_now(self): for counselor in Counselor.objects.all(): command = self.myCommandFactory.new_ScrapeCommand(datetime.datetime.now(),counselor.url,counselorMatchDict,self.save_counselor_info) self.myCommandmanager.enqueue_command(command) def update_now(self, counselor): command = self.myCommandFactory.new_ScrapeCommand(datetime.datetime.now(),counselor.url,counselorMatchDict,self.save_counselor_info) self.myCommandmanager.enqueue_command(command) def schedule_update(self, datetime, counselorUrl): command = self.myCommandFactory.new_ScrapeCommand(datetime,counselorUrl,counselorMatchDict,self.save_counselor_info) self.myCommandmanager.enqueue_command(command) def save_counselor_info(self, infoDict, counselorUrl): dbTarget = Counselor.objects.get(url = counselorUrl) infoDict = convert_bad_encodings(infoDict) if dbTarget != None: dbTarget.name = infoDict["name"][0] dbTarget.email = infoDict["email"][0] dbTarget.office = infoDict["office"][0] dbTarget.studyArea = infoDict["studyarea"][0] dbTarget.save() def find_new_counselors(self, executionTime): cmd = self.myCommandFactory.new_FindNewCounselorsCommand(executionTime) self.myCommandmanager.enqueue_command(cmd) def get_scheduled_updates_info(self): info_list = [] id = 0 for cmd in self.myCommandmanager.commandQueue: command_info_dict = { "id": id, "name": str(type(cmd).__name__), "executionTime": str(cmd.executionTime) } info_list.append(command_info_dict) id += 1 return info_list def delete_scheduled_update(self,cmdIndex): self.myCommandmanager.delete_command(cmdIndex) def clear_all_scheduled_updates(self): self.myCommandmanager.commandQueue = []
class Test_CommandManager(ut.TestCase): def setUp(self): self.instance = CommandManager() self.instance.myTimer.cancel() #__init__: inits def test_init(self): self.instance = CommandManager() self.assertTrue(type(self.instance), CommandManager) self.instance.myTimer.cancel() #__init__: contains commandQueue def test_contains_commandQueue(self): self.instance = CommandManager() self.assertTrue(type(self.instance.commandQueue), list) self.instance.myTimer.cancel() #__init__: commandQueue is empty on init def test_is_commandQueue_empty(self): self.instance = CommandManager() self.instance.myTimer.cancel() #__init__: contains myTimer def test_contains_myTimer(self): self.instance = CommandManager() self.assertTrue(type(self.instance.myTimer), datetime) self.instance.myTimer.cancel() #enqueue_command: commandQueue is +1 longer after enqueue_command def test_que_is_longer(self): self.instance = CommandManager() startLength = len(self.instance.commandQueue) command = ICommand(datetime(2017, 1, 5)) self.instance.enqueue_command(command) endLength = len(self.instance.commandQueue) self.assertTrue((startLength != endLength), True) self.instance.myTimer.cancel() #enqueue_command: commandQueue contains the queued command def test_que_contains_new_command(self): self.instance = CommandManager() command = ICommand(datetime(2017, 1, 5)) self.instance.enqueue_command(command) self.assertTrue((command in self.instance.commandQueue), True) self.instance.myTimer.cancel() #delete_command: commandQueue is -1 longer after delete_command def test_que_is_shorter(self): self.instance = CommandManager() command = ICommand(datetime(2017, 1, 5)) self.instance.enqueue_command(command) startLength = len(self.instance.commandQueue) self.instance.delete_command(0) endLength = len(self.instance.commandQueue) self.assertFalse((startLength == endLength), False) self.instance.myTimer.cancel() #delete_command: commandQueue does not contain the deleted command def test_que_excludes_command(self): self.instance = CommandManager() command = ICommand(datetime(2017, 1, 5)) self.instance.enqueue_command(command) startContains = (command in self.instance.commandQueue) self.instance.delete_command(0) endContains = (command in self.instance.commandQueue) self.assertFalse(endContains, startContains) self.instance.myTimer.cancel() #create_new_timer: sets a new timer def test_sets_new_timer(self): self.instance = CommandManager() oldTimer = copy.copy(self.instance.myTimer) command = ICommand(datetime(2017, 1, 5)) self.instance.commandQueue.append(command) self.instance.create_new_timer() newTimer = copy.copy(self.instance.myTimer) self.assertFalse((oldTimer == newTimer), False) self.instance.myTimer.cancel() #execute_command: Head is not the same after execute has been run def test_head_is_not_same(self): self.instance = CommandManager() command = ICommand(datetime(2017, 1, 5)) command2 = ICommand(datetime(2018, 1, 5)) self.instance.enqueue_command(command) self.instance.enqueue_command(command2) oldHead = (self.instance.commandQueue[:])[0] self.instance.execute_command() startHead = (self.instance.commandQueue[:])[0] self.assertTrue((oldHead != startHead), True) self.instance.myTimer.cancel() #execute_command: myTimer is updated after execute has been run def test_myTimer_is_updated(self): self.instance = CommandManager() command = ICommand(datetime(2017, 1, 5)) command2 = ICommand(datetime(2018, 1, 5)) self.instance.enqueue_command(command) self.instance.enqueue_command(command2) startTimer = copy.copy(self.instance.myTimer) self.instance.execute_command() endTimer = copy.copy(self.instance.myTimer) self.assertTrue((startTimer != endTimer), True) self.instance.myTimer.cancel() #main_loop: if there is something in the que it should be executed def test_is_head_executed(self): self.instance = CommandManager() command = ICommand(datetime(2017, 1, 5)) self.instance.enqueue_command(command) head = copy.copy(self.instance.commandQueue[0]) self.instance.main_loop() try: self.instance.commandQueue[0] self.fail("head is not executed") self.instance.myTimer.cancel() except IndexError: self.assertTrue(True, True) self.instance.myTimer.cancel() #main_loop: if commandQueue.length == 0 nothing should happen def test_empty_queue_behaviour(self): self.instance = CommandManager() startQue = copy.copy(self.instance.commandQueue) self.instance.main_loop() endQue = copy.copy(self.instance.commandQueue) self.assertTrue((startQue == endQue), True) self.instance.myTimer.cancel() #main_loop: if commandQueue.length > 1 the timer should be updated def test_is_myTimer_updated(self): self.instance = CommandManager() command = ICommand(datetime(2017, 1, 5)) command2 = ICommand(datetime(2018, 1, 5)) self.instance.enqueue_command(command) self.instance.enqueue_command(command2) startTimer = copy.copy(self.instance.myTimer) self.instance.main_loop endTimer = copy.copy(self.instance.myTimer) self.assertTrue((startTimer != endTimer), True) self.instance.myTimer.cancel() #main_loop: if commandQueue.length == 1 the timer should not be updated def test_myTimer_is_not_updated(self): self.instance = CommandManager() command = ICommand(datetime(2017, 1, 5)) self.instance.enqueue_command(command) startTimer = self.instance.myTimer self.instance.main_loop() endTimer = self.instance.myTimer self.assertTrue((startTimer == endTimer), True) self.instance.myTimer.cancel()
class Test_CommandManager(ut.TestCase): def setUp(self): self.instance = CommandManager() self.instance.myTimer.cancel() #__init__: inits def test_init(self): self.instance = CommandManager() self.assertTrue(type(self.instance),CommandManager) self.instance.myTimer.cancel() #__init__: contains commandQueue def test_contains_commandQueue(self): self.instance = CommandManager() self.assertTrue(type(self.instance.commandQueue),list) self.instance.myTimer.cancel() #__init__: commandQueue is empty on init def test_is_commandQueue_empty(self): self.instance = CommandManager() self.instance.myTimer.cancel() #__init__: contains myTimer def test_contains_myTimer(self): self.instance = CommandManager() self.assertTrue(type(self.instance.myTimer),datetime) self.instance.myTimer.cancel() #enqueue_command: commandQueue is +1 longer after enqueue_command def test_que_is_longer(self): self.instance = CommandManager() startLength = len(self.instance.commandQueue) command = ICommand(datetime(2017,1,5)) self.instance.enqueue_command(command) endLength = len(self.instance.commandQueue) self.assertTrue((startLength != endLength), True) self.instance.myTimer.cancel() #enqueue_command: commandQueue contains the queued command def test_que_contains_new_command(self): self.instance = CommandManager() command = ICommand(datetime(2017,1,5)) self.instance.enqueue_command(command) self.assertTrue((command in self.instance.commandQueue), True) self.instance.myTimer.cancel() #delete_command: commandQueue is -1 longer after delete_command def test_que_is_shorter(self): self.instance = CommandManager() command = ICommand(datetime(2017,1,5)) self.instance.enqueue_command(command) startLength = len(self.instance.commandQueue) self.instance.delete_command(0) endLength = len(self.instance.commandQueue) self.assertFalse((startLength == endLength), False) self.instance.myTimer.cancel() #delete_command: commandQueue does not contain the deleted command def test_que_excludes_command(self): self.instance = CommandManager() command = ICommand(datetime(2017,1,5)) self.instance.enqueue_command(command) startContains = (command in self.instance.commandQueue) self.instance.delete_command(0) endContains = (command in self.instance.commandQueue) self.assertFalse(endContains,startContains) self.instance.myTimer.cancel() #create_new_timer: sets a new timer def test_sets_new_timer(self): self.instance = CommandManager() oldTimer = copy.copy(self.instance.myTimer) command = ICommand(datetime(2017,1,5)) self.instance.commandQueue.append(command) self.instance.create_new_timer() newTimer = copy.copy(self.instance.myTimer) self.assertFalse((oldTimer == newTimer),False) self.instance.myTimer.cancel() #execute_command: Head is not the same after execute has been run def test_head_is_not_same(self): self.instance = CommandManager() command = ICommand(datetime(2017,1,5)) command2 = ICommand(datetime(2018,1,5)) self.instance.enqueue_command(command) self.instance.enqueue_command(command2) oldHead = (self.instance.commandQueue[:])[0] self.instance.execute_command() startHead = (self.instance.commandQueue[:])[0] self.assertTrue((oldHead != startHead),True) self.instance.myTimer.cancel() #execute_command: myTimer is updated after execute has been run def test_myTimer_is_updated(self): self.instance = CommandManager() command = ICommand(datetime(2017,1,5)) command2 = ICommand(datetime(2018,1,5)) self.instance.enqueue_command(command) self.instance.enqueue_command(command2) startTimer = copy.copy(self.instance.myTimer) self.instance.execute_command() endTimer = copy.copy(self.instance.myTimer) self.assertTrue((startTimer != endTimer),True) self.instance.myTimer.cancel() #main_loop: if there is something in the que it should be executed def test_is_head_executed(self): self.instance = CommandManager() command = ICommand(datetime(2017,1,5)) self.instance.enqueue_command(command) head = copy.copy(self.instance.commandQueue[0]) self.instance.main_loop() try: self.instance.commandQueue[0] self.fail("head is not executed") self.instance.myTimer.cancel() except IndexError: self.assertTrue(True,True) self.instance.myTimer.cancel() #main_loop: if commandQueue.length == 0 nothing should happen def test_empty_queue_behaviour(self): self.instance = CommandManager() startQue = copy.copy(self.instance.commandQueue) self.instance.main_loop() endQue = copy.copy(self.instance.commandQueue) self.assertTrue((startQue == endQue), True) self.instance.myTimer.cancel() #main_loop: if commandQueue.length > 1 the timer should be updated def test_is_myTimer_updated(self): self.instance = CommandManager() command = ICommand(datetime(2017,1,5)) command2 = ICommand(datetime(2018,1,5)) self.instance.enqueue_command(command) self.instance.enqueue_command(command2) startTimer = copy.copy(self.instance.myTimer) self.instance.main_loop endTimer = copy.copy(self.instance.myTimer) self.assertTrue((startTimer != endTimer), True) self.instance.myTimer.cancel() #main_loop: if commandQueue.length == 1 the timer should not be updated def test_myTimer_is_not_updated(self): self.instance = CommandManager() command = ICommand(datetime(2017,1,5)) self.instance.enqueue_command(command) startTimer = self.instance.myTimer self.instance.main_loop() endTimer = self.instance.myTimer self.assertTrue((startTimer == endTimer), True) self.instance.myTimer.cancel()