Exemple #1
0
    def testUpdateAlreadyClosedEntry(self):
        #--------------------------------------------------
        # 3. ENTRY THAT IS ALREADY CLOSED
        id = 3
        now = datetime.now()
        values = {'project': 2,
                  'activity': 2,
                  'start_time': ffd(now + timedelta(hours=-2)),
                  'end_time': ffd(now),
                  'comments': 'New comments'}

        # make sure the entry is already closed
        entry = Entry.objects.get(pk=id)
        self.assertTrue(entry.is_closed)
        self.assertFalse(entry.is_paused)

        # try to update the new entry with not enough information
        response = self.post_response(id, {})
        self.assertEquals(response.status_code, 200)

        # try various combinations of incomplete data
        response = self.post_response(id, {'project': values['project']})
        self.assertEquals(response.status_code, 200)

        response = self.post_response(id, {'project': values['project'],
                                           'activity': values['activity']})
        self.assertEquals(response.status_code, 200)

        response = self.post_response(id, {'project': values['project'],
                                           'activity': values['activity'],
                                           'start_time': values['start_time']})
        self.assertEquals(response.status_code, 200)

        response = self.post_response(id, {'activity': values['activity'],
                                           'start_time': values['start_time'],
                                           'end_time': values['end_time']})
        self.assertEquals(response.status_code, 200)

        #response = self.post_response(id, {'project': values['project'],
        #                                   'start_time': values['start_time'],
        #                                   'end_time': values['end_time']})
        #self.assertEquals(response.status_code, 200)

        response = self.post_response(id, {'project': values['project'],
                                           'activity': values['activity'],
                                           'end_time': values['end_time']})
        self.assertEquals(response.status_code, 200)

        # update the entry with new information
        response = self.post_response(id, values)
        self.assertEquals(response.status_code, 302)

        # make sure the information is just as I want it to be
        entry = Entry.objects.get(pk=id)
        self.assertEquals(entry.project.id, values['project'])
        self.assertEquals(entry.activity.id, values['activity'])
        self.assertEquals(ffd(entry.start_time), values['start_time'])
        self.assertEquals(ffd(entry.end_time), values['end_time'])
        self.assertEquals(entry.comments, values['comments'])
Exemple #2
0
    def testUpdateOpenUnpausedEntry(self):
        #--------------------------------------------------
        # 4. ENTRY THAT IS OPEN AND NOT PAUSED
        id = 4
        now = datetime.now()

        # get an open entry, and make sure it's not paused
        entry = Entry.objects.get(pk=id)
        self.assertFalse(entry.is_closed)
        self.assertFalse(entry.is_paused)

        # try to get the form to update its information
        response = self.get_response(id)
        self.assertEquals(response.status_code, 302)

        # try to update it with no information specified
        response = self.post_response(id, {})
        self.assertEquals(response.status_code, 302)

        # try to update it with a little information specified
        response = self.post_response(id, {'project': 2,
                                           'comments': 'Updating the entry'})
        self.assertEquals(response.status_code, 302)

        # try to update it with all required information
        response = self.post_response(id, {'project': 1,
                                           'activity': 1,
                                           'start_time': ffd(now + timedelta(hours=-5)),
                                           'end_time': ffd(now)})
        self.assertEquals(response.status_code, 302)

        # pull back the entry, and make sure it hasn't changed
        again = Entry.objects.get(pk=id)
        self.assertEquals(entry.project, again.project)
        self.assertEquals(entry.activity, again.activity)
        self.assertEquals(entry.start_time, again.start_time)
        self.assertEquals(entry.end_time, again.end_time)
        self.assertEquals(entry.comments, again.comments)

        # now update it again, just to make sure
        values = {'project': 1,
                  'activity': 1,
                  'start_time': ffd(now + timedelta(hours=-2)),
                  'end_time': ffd(now + timedelta(hours=-1)),
                  'comments': 'New comments'}
        response = self.post_response(id, values)
        self.assertEquals(response.status_code, 302)

        # pull back the entry, and make sure it has changed
        again = Entry.objects.get(pk=id)
        self.assertNotEquals(again.project.id, values['project'])
        self.assertNotEquals(again.activity.id, values['activity'])
        self.assertNotEquals(again.start_time, values['start_time'])
        self.assertNotEquals(again.end_time, values['end_time'])
        self.assertNotEquals(again.comments, values['comments'])
Exemple #3
0
    def testAddJustEnoughEntry(self):
        now = datetime.now()
        start_count = Entry.objects.all().count()

        # try adding an entry with just enough information
        response = self.post_response({'project': 1,
                                       'activity': 1,
                                       'start_time': ffd(now + timedelta(hours=-5)),
                                       'end_time': ffd(now)
                                      })
        self.assertEquals(response.status_code, 302)

        # just make sure that no entries were actually added
        end_count = Entry.objects.all().count()
        self.assertEquals(start_count + 1, end_count)
Exemple #4
0
    def testUpdateOtherUsersEntry(self):
        #--------------------------------------------------
        # 1. ENTRY THAT BELONGS TO OTHER USER
        id = 1
        now = datetime.now()

        # check to make sure that log entry isn't closed
        entry = Entry.objects.get(pk=id)
        self.assertFalse(entry.is_closed)

        # try to get the form to update it
        response = self.get_response(id)
        self.assertEquals(response.status_code, 302)

        # try to manually post information
        response = self.post_response(id, {'start_time': ffd(now + timedelta(hours=-5)),
                                           'end_time': ffd(now)})
        self.assertEquals(response.status_code, 302)

        again = Entry.objects.get(pk=id)
        self.assertEquals(entry.start_time, again.start_time)
        self.assertEquals(entry.end_time, again.end_time)
Exemple #5
0
    def testSetStartAfterEnd(self):
        """
        Try to update a good, closed entry to start after it ends
        """
        id = 3
        now = datetime.now()
        values = {'project': 2,
                  'activity': 2,
                  'start_time': ffd(now + timedelta(hours=2)),
                  'end_time': ffd(now),
                  'comments': 'New comments'}

        response = self.post_response(id, values)
        self.assertEquals(response.status_code, 200)

        # make sure the information is still as in the fixture
        entry = Entry.objects.get(pk=id)
        self.assertNotEquals(entry.project.id, values['project'])
        self.assertNotEquals(entry.activity.id, values['activity'])
        self.assertNotEquals(ffd(entry.start_time), values['start_time'])
        self.assertNotEquals(ffd(entry.end_time), values['end_time'])
        self.assertNotEquals(entry.comments, values['comments'])
Exemple #6
0
    def testUpdatePausedEntry(self):
        #--------------------------------------------------
        # 2. ENTRY THAT IS PAUSED
        id = 2
        now = datetime.now()

        # get a paused entry, and make sure it's paused
        entry = Entry.objects.get(pk=id)
        self.assertTrue(entry.is_paused)

        # try to get the form to update its information
        response = self.get_response(id)
        self.assertEquals(response.status_code, 302)

        # try to update it with no information specified
        response = self.post_response(id, {})
        self.assertEquals(response.status_code, 302)

        # try to update it with a little information specified
        response = self.post_response(id, {'project': 2,
                                           'comments': 'Updating the entry'})
        self.assertEquals(response.status_code, 302)

        # try to update it with all required information
        response = self.post_response(id, {'project': 1,
                                           'activity': 1,
                                           'start_time': ffd(now + timedelta(hours=-5)),
                                           'end_time': ffd(now)})
        self.assertEquals(response.status_code, 302)

        # pull back the entry, and make sure it hasn't changed
        again = Entry.objects.get(pk=id)
        self.assertEquals(entry.project, again.project)
        self.assertEquals(entry.activity, again.activity)
        self.assertEquals(entry.start_time, again.start_time)
        self.assertEquals(entry.end_time, again.end_time)
        self.assertEquals(entry.comments, again.comments)
Exemple #7
0
    def testAddWithInvalidDates(self):
        now = datetime.now()
        start_count = Entry.objects.all().count()

        # try adding an entry with a start time in the future
        response = self.post_response({'project': 1,
                                       'activity': 1,
                                       'start_time': ffd(now + timedelta(days=5)),
                                       'end_time': ffd(now + timedelta(days=5, hours=1))
                                      })
        self.assertEquals(response.status_code, 200)

        # try adding an entry with an end time in the future
        response = self.post_response({'project': 1,
                                       'activity': 1,
                                       'start_time': ffd(now),
                                       'end_time': ffd(now + timedelta(hours=5))
                                      })
        self.assertEquals(response.status_code, 200)

        # try adding an entry with a start time after the end time
        response = self.post_response({'project': 1,
                                       'activity': 1,
                                       'start_time': ffd(now + timedelta(hours=5)),
                                       'end_time': ffd(now)
                                      })
        self.assertEquals(response.status_code, 200)

        # try adding an entry with the same start and end time
        response = self.post_response({'project': 1,
                                       'activity': 1,
                                       'start_time': ffd(now),
                                       'end_time': ffd(now)
                                      })
        self.assertEquals(response.status_code, 200)

        # just make sure that no entries were actually added
        end_count = Entry.objects.all().count()
        self.assertEquals(start_count, end_count)