Esempio n. 1
0
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 = []
Esempio n. 2
0
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()