Ejemplo n.º 1
0
 def setUp(self):
     self.client = RESTClient()
Ejemplo n.º 2
0
class StatisticsRESTActionsTestCase(TestCase):
    fixtures = ['auth.json','slip.json', 'slice.json', 'team.json']

    def setUp(self):
        self.client = RESTClient()

    # note, the User/Team tests are very much alike, only difference is the time period - a week, a  month, from/to two dates, and if they display a team with users or a user.
    def testUserWeekView(self):
        for pk in range(2,7):
            user = User.objects.get(pk=pk)
            for week in range(1,53):
                year = 2008
                # Before we log in, we should be redirected to the login page.
                response = self.client.get('/statistics/user/%s/year/%s/week/%s/' % (user.id, year, week))
                self.failUnlessEqual(response.status_code, 302)
        
                 # Then log in
                response = self.client.post('/accounts/login/',
                                            {'username': user.username, 'password': '******'})
                # TODO: Properly check if we're logged in instead of just checking for redirect.
                self.failUnlessEqual(response.status_code, 302)
        
                # Test to see if access to a different user's statistic is denied:
                response = self.client.get('/statistics/user/%s/year/%s/week/%s/' % (user.id-1, year, week))
                self.failUnlessEqual(response.status_code, 403)
        
                # view the data source:
                response = self.client.get('/statistics/data/user/%s/year/%s/week/%s/' % (user.id, year, week))
        
                # converting the data in the content from json to python dictionaries and lists
                json_content = json.loads(response.content)
        
                # test to see if the value is shown as is should. This work by getting the value(s) from the fixture DB and comparing to the json_content
                # first get the timetimes and put the slip into the dict if it's not there:
                slice_set = user.timeslices.filter(week_number=week)
                slip_dict = {}
                for slic in slice_set:
                    if not slip_dict.has_key(slic.begin.date()):
                        slip_dict[slic.begin.date()] = [slic.slip]
                    else:
                        if slic.slip not in slip_dict[slic.begin.date()]:
                             slip_dict[slic.begin.date()].append(slic.slip)
        
                start_date = datetime.date(year, 1, 1) + datetime.timedelta(days = (week-2)*7)
                while start_date.isocalendar()[1] != week:
                    start_date += datetime.timedelta(days=1)
                                
                # make a list of all the dates for the chosen week:
                end_date = start_date + datetime.timedelta(days=6)
                w_date = start_date
                all_dates_list = []
                while w_date != end_date + datetime.timedelta(days=1):
                    all_dates_list.append(w_date)
                    w_date += datetime.timedelta(days=1)
    
                # iterate over the dates, if the date is not in the slip_dict, the value should be [0].
                # If the date is in the slip_dict, the value should be the slips display_days_time (rounded to 1 dec).    
                for date in all_dates_list:
                    if date not in slip_dict.keys():
                        self.failUnlessEqual(json_content['elements'][0]['values'][date.weekday()], [0])
                    else:
                        for number in range(len(slip_dict[date])):
                            self.failUnlessEqual(json_content['elements'][0]['values'][date.weekday()][number]['val'], round(slip_dict[date][number].display_days_time(date), 1))
        
                # test to see if graph type is bar_stack:
                self.failUnlessEqual(json_content['elements'][0]['type'], 'bar_stack')
        
                # test to see if the labels on the x-axis is correct
                # it sould be monday-sunday which dec 1-7 also is.
                for numb in range(7):
                    self.failUnlessEqual(json_content['x_axis']['labels']['labels'][numb], datetime.datetime.strftime(datetime.datetime(2008,12,numb+1), '%A'))
                
                self.failUnlessEqual(json_content['title']['text'], '%s Week: %s Year: %s' % (user.username, week, year))
                    
                # logout when finished testing a user, to create simelar starting points for every user.
                self.client.get('/accounts/logout/')


    def testUserMonthView(self):
        # This is basicly the same as UserWeelView.
        for pk in range(2,7):
            user = User.objects.get(pk=pk)
            for month in range(1,13):
                year = 2008
                response = self.client.get('/statistics/user/%s/year/%s/month/%s/' % (user.id, year, month))
                self.failUnlessEqual(response.status_code, 302)
        
                response = self.client.post('/accounts/login/',
                                            {'username': user.username, 'password': '******'})
                self.failUnlessEqual(response.status_code, 302)
        
                response = self.client.get('/statistics/user/%s/year/%s/month/%s/' % (user.id-1, year, month))
                self.failUnlessEqual(response.status_code, 403)
        
                response = self.client.get('/statistics/data/user/%s/year/%s/month/%s/' % (user.id, year, month))
        
                json_content = json.loads(response.content)
                
                start_date = datetime.date(year, month, 1)
                end_date = start_date + datetime.timedelta(days=30)
                while end_date.month != start_date.month:
                    end_date -= datetime.timedelta(days=1)        
                
                slice_set = user.timeslices.filter(begin__range=(start_date, end_date))
                slip_dict = {}
                for slic in slice_set:
                    if not slip_dict.has_key(slic.begin.date()):
                        slip_dict[slic.begin.date()] = [slic.slip]
                    else:
                        if slic.slip not in slip_dict[slic.begin.date()]:
                             slip_dict[slic.begin.date()].append(slic.slip)
                                
                # make a list of all the dates for the chosen month:
                w_date = start_date
                all_dates_list = []
                while w_date != end_date + datetime.timedelta(days=1):
                    all_dates_list.append(w_date)
                    w_date += datetime.timedelta(days=1)
        
                for date in all_dates_list:
                    if date not in slip_dict.keys():
                        self.failUnlessEqual(json_content['elements'][0]['values'][date.day-1], [0])
                    else:
                        for number in range(len(slip_dict[date])):
                            self.failUnlessEqual(json_content['elements'][0]['values'][date.day-1][number]['val'], round(slip_dict[date][number].display_days_time(date), 1))
            
                for numb in range(1, end_date.day+1):
                     self.failUnlessEqual(json_content['x_axis']['labels']['labels'][numb-1], str(numb))
                     
                self.failUnlessEqual(json_content['title']['text'], '%s %s %s' % (user.username, datetime.datetime.strftime(start_date, '%B'), year))
            
                self.client.get('/accounts/logout/')
                
                
    def testUserDateView(self):
        for pk in range(2,7):
            user = User.objects.get(pk=pk)
            year = 2008
            for random_generator in range(12):
                start_date = datetime.date(year, random.randrange(1,13), random.randrange(1,29))
                end_date = start_date + datetime.timedelta(days=random.randrange(1,61))
                
                response = self.client.get('/statistics/user/%s/date/%s/%s/' % (user.id, start_date, end_date))
                self.failUnlessEqual(response.status_code, 302)
        
                response = self.client.post('/accounts/login/',
                                            {'username': user.username, 'password': '******'})
                self.failUnlessEqual(response.status_code, 302)
        
                response = self.client.get('/statistics/user/%s/date/%s/%s/' % (user.id-1, start_date, end_date))
                self.failUnlessEqual(response.status_code, 403)
        
                response = self.client.get('/statistics/data/user/%s/date/%s/%s/' % (user.id, start_date, end_date))
                json_content = json.loads(response.content)
                
                slice_set = user.timeslices.filter(begin__range=(start_date, end_date))
                slip_dict = {}
                for slic in slice_set:
                    if not slip_dict.has_key(slic.begin.date()):
                        slip_dict[slic.begin.date()] = [slic.slip]
                    else:
                        if slic.slip not in slip_dict[slic.begin.date()]:
                             slip_dict[slic.begin.date()].append(slic.slip)
                                
                # make a list of all the dates for the chosen time period:
                w_date = start_date
                all_dates_list = []
                while w_date != end_date + datetime.timedelta(days=1):
                    all_dates_list.append(w_date)
                    w_date += datetime.timedelta(days=1)
        
                for date in all_dates_list:
                    if date not in slip_dict.keys():
                        self.failUnlessEqual(json_content['elements'][0]['values'][(date-start_date).days], [0])
                    else:
                        for number in range(len(slip_dict[date])):
                            self.failUnlessEqual(json_content['elements'][0]['values'][(date-start_date).days][number]['val'], round(slip_dict[date][number].display_days_time(date), 1))
            
                for numb in range((end_date-start_date).days):
                     self.failUnlessEqual(json_content['x_axis']['labels']['labels'][numb], str(all_dates_list[numb].day))
                     
                self.failUnlessEqual(json_content['title']['text'], '%s %s to %s' % (user.username, start_date, end_date))
            
                self.client.get('/accounts/logout/')
                
                
    def testTeamWeekView(self):
        for pk in range(2,4):
            team = Team.objects.get(pk=pk)
            year = 2008
            for week in range(1,53):            
                response = self.client.get('/statistics/team/%s/year/%s/week/%s/' % (team.id, year, week))
                self.failUnlessEqual(response.status_code, 302)
        
                response = self.client.post('/accounts/login/',
                                            {'username': team.creator.username, 'password': '******'})
                self.failUnlessEqual(response.status_code, 302)
        
                response = self.client.get('/statistics/team/%s/year/%s/week/%s/' % (team.id-1, year, week))
                self.failUnlessEqual(response.status_code, 403)
        
                response = self.client.get('/statistics/data/team/%s/year/%s/week/%s/' % (team.id, year, week))
        
                json_content = json.loads(response.content)
                
                members = team.members.all()
                members_id = []
                for member in members:
                    members_id.append(member.id)
                slice_set = TimeSlice.objects.filter(week_number=week, begin__year=year, user__in=members_id)
                
                slip_dict = {}
                for slic in slice_set:
                    if not slip_dict.has_key(slic.begin.date()):
                        slip_dict[slic.begin.date()] = [slic.slip]
                    else:
                        if slic.slip not in slip_dict[slic.begin.date()]:
                             slip_dict[slic.begin.date()].append(slic.slip)
        
                start_date = datetime.date(year, 1, 1) + datetime.timedelta(days = (week-2)*7)
                while start_date.isocalendar()[1] != week:
                    start_date += datetime.timedelta(days=1)
                                
                end_date = start_date + datetime.timedelta(days=6)
                w_date = start_date
                all_dates_list = []
                while w_date != end_date + datetime.timedelta(days=1):
                    all_dates_list.append(w_date)
                    w_date += datetime.timedelta(days=1)
        
                for date in all_dates_list:
                    if date not in slip_dict.keys():
                        self.failUnlessEqual(json_content['elements'][0]['values'][date.weekday()], [0])
                    else:
                        for number in range(len(slip_dict[date])):
                            self.failUnlessEqual(json_content['elements'][0]['values'][date.weekday()][number]['val'], round(slip_dict[date][number].display_days_time(date), 1))
        
                self.failUnlessEqual(json_content['elements'][0]['type'], 'bar_stack')
        
                for numb in range(7):
                    self.failUnlessEqual(json_content['x_axis']['labels']['labels'][numb], datetime.datetime.strftime(datetime.datetime(2008,12,numb+1), '%A'))
                
                self.failUnlessEqual(json_content['title']['text'], '%s Week: %s Year: %s' % (team.name, week, year))
                    
                self.client.get('/accounts/logout/')
                
                
    def testTeamMonthView(self):
        for pk in range(2,4):
            team = Team.objects.get(pk=pk)
            year = 2008
            for month in range(1,13):
                response = self.client.get('/statistics/team/%s/year/%s/month/%s/' % (team.id, year, month))
                self.failUnlessEqual(response.status_code, 302)
        
                response = self.client.post('/accounts/login/',
                                            {'username': team.creator.username, 'password': '******'})
                self.failUnlessEqual(response.status_code, 302)
        
                response = self.client.get('/statistics/team/%s/year/%s/month/%s/' % (team.id-1, year, month))
                self.failUnlessEqual(response.status_code, 403)
        
                response = self.client.get('/statistics/data/team/%s/year/%s/month/%s/' % (team.id, year, month))
        
                json_content = json.loads(response.content)
        
                start_date = datetime.date(year, month, 1)
                end_date = start_date + datetime.timedelta(days=30)
                while end_date.month != start_date.month:
                    end_date -= datetime.timedelta(days=1)
                members = team.members.all()
                members_id = []
                for member in members:
                    members_id.append(member.id)
                slice_set = TimeSlice.objects.filter(begin__range=(start_date, end_date), user__in=members_id)
                
                slip_dict = {}
                for slic in slice_set:
                    if not slip_dict.has_key(slic.begin.date()):
                        slip_dict[slic.begin.date()] = [slic.slip]
                    else:
                        if slic.slip not in slip_dict[slic.begin.date()]:
                             slip_dict[slic.begin.date()].append(slic.slip)
                                
                # make a list of all the dates for the chosen month:
                w_date = start_date
                all_dates_list = []
                while w_date != end_date + datetime.timedelta(days=1):
                    all_dates_list.append(w_date)
                    w_date += datetime.timedelta(days=1)
        
                for date in all_dates_list:
                    if date not in slip_dict.keys():
                        self.failUnlessEqual(json_content['elements'][0]['values'][date.day-1], [0])
                    else:
                        for number in range(len(slip_dict[date])):
                            self.failUnlessEqual(json_content['elements'][0]['values'][date.day-1][number]['val'], round(slip_dict[date][number].display_days_time(date), 1))
            
                for numb in range(1, end_date.day+1):
                     self.failUnlessEqual(json_content['x_axis']['labels']['labels'][numb-1], str(numb))
                     
                self.failUnlessEqual(json_content['title']['text'], '%s %s %s' % (team.name, datetime.datetime.strftime(start_date, '%B'), year))
            
                self.client.get('/accounts/logout/')
                
                
    def testTeamDateView(self):
        for  pk in range (2,4):
            team = Team.objects.get(pk=pk)
            year = 2008
            for random_generator in range(20):
                start_date = datetime.date(year, random.randrange(1,13), random.randrange(1,29))
                end_date = start_date + datetime.timedelta(days=random.randrange(1,61))
        
                response = self.client.get('/statistics/team/%s/date/%s/%s/' % (team.id, start_date, end_date))
                self.failUnlessEqual(response.status_code, 302)
        
                response = self.client.post('/accounts/login/',
                                            {'username': team.creator.username, 'password': '******'})
                self.failUnlessEqual(response.status_code, 302)
        
                response = self.client.get('/statistics/team/%s/date/%s/%s/' % (team.id-1, start_date, end_date))
                self.failUnlessEqual(response.status_code, 403)
        
                response = self.client.get('/statistics/data/team/%s/date/%s/%s/' % (team.id, start_date, end_date))
                json_content = json.loads(response.content)
                
                members = team.members.all()
                members_id = []
                for member in members:
                    members_id.append(member.id)
                
                slice_set = TimeSlice.objects.filter(begin__range=(start_date, end_date), user__in=members_id)
                slip_dict = {}
                for slic in slice_set:
                    if not slip_dict.has_key(slic.begin.date()):
                        slip_dict[slic.begin.date()] = [slic.slip]
                    else:
                        if slic.slip not in slip_dict[slic.begin.date()]:
                             slip_dict[slic.begin.date()].append(slic.slip)
                                
                # make a list of all the dates for the chosen time period:
                w_date = start_date
                all_dates_list = []
                while w_date != end_date + datetime.timedelta(days=1):
                    all_dates_list.append(w_date)
                    w_date += datetime.timedelta(days=1)
        
                for date in all_dates_list:
                    if date not in slip_dict.keys():
                        self.failUnlessEqual(json_content['elements'][0]['values'][(date-start_date).days], [0])
                    else:
                        for number in range(len(slip_dict[date])):
                            self.failUnlessEqual(json_content['elements'][0]['values'][(date-start_date).days][number]['val'], round(slip_dict[date][number].display_days_time(date), 1))
            
                for numb in range((end_date-start_date).days):
                     self.failUnlessEqual(json_content['x_axis']['labels']['labels'][numb], str(all_dates_list[numb].day))
                     
                self.failUnlessEqual(json_content['title']['text'], '%s %s to %s' % (team.name, start_date, end_date))
            
                self.client.get('/accounts/logout/')
                
                
    def testTeamStatWeekView(self):
        for pk in range(2,4):
            team = Team.objects.get(pk=pk)
            year = 2008
            for week in range(1,53):
                response = self.client.get('/statistics/team_stat/%s/year/%s/week/%s/' % (team.id, year, week))
                self.failUnlessEqual(response.status_code, 302)
        
                response = self.client.post('/accounts/login/',
                                            {'username': team.creator.username, 'password': '******'})
                self.failUnlessEqual(response.status_code, 302)
        
                response = self.client.get('/statistics/team_stat/%s/year/%s/week/%s/' % (team.id-1, year, week))
                self.failUnlessEqual(response.status_code, 403)
        
                response = self.client.get('/statistics/data/team_stat/%s/year/%s/week/%s/' % (team.id, year, week))
        
                json_content = json.loads(response.content)
                
                members = team.members.all()
                members_id = []
                for member in members:
                    members_id.append(member.id)
                
                slice_set = TimeSlice.objects.filter(week_number=week, begin__year=year, user__in=members_id)
                
                # new slip_dict has keys equal to the team members id, and values equal to a new dict.
                slip_dict = {}
                for member in members_id:
                    slip_dict[member] = {}
                   
                start_date = datetime.date(year, 1, 1) + datetime.timedelta(days = (week-2)*7)
                while start_date.isocalendar()[1] != week:
                    start_date += datetime.timedelta(days=1)
                end_date = start_date + datetime.timedelta(days=6)
                    
                w_date = start_date
                all_dates_list = []
                # this loop generates all the dates in a list and keys for all the dates in each members dict in the slip_dict.
                # each date_key is a new dict with two keys, slip, a list to hold the slips, for checking and 'value' default 0 which is the value for that day for that user.
                while w_date != end_date + datetime.timedelta(days=1):
                    all_dates_list.append(w_date)
                    for member in members_id:
                        slip_dict[member][w_date] = {'slip' : [], 'value': 0}
                    w_date += datetime.timedelta(days=1)
                
                # this loop checks if the timeslice's slip has been processed, if it hasn't it appends the slip to the slip_key list,
                # and adds the value to the value_key int/float
                for slic in slice_set:
                    if not slic.slip in slip_dict[slic.user_id][slic.begin.date()]['slip']:
                        slip_dict[slic.user_id][slic.begin.date()]['slip'].append(slic.slip)
                        slip_dict[slic.user_id][slic.begin.date()]['value'] += slic.slip.display_days_time(slic.begin.date())
                
                counter = -1
                # this loops over members and then loops over the dates in the all_dates_list, a counter is used to keep track of the members
                # so first member looped, has counter 0, 2nd counter 1 ect. This is used to pick the dictionary in the elements list.
                for member in members_id:
                    counter += 1
                    self.failUnlessEqual(json_content['elements'][counter]['type'], 'bar') 
                    for date in all_dates_list:
                        # this statement checks to see if the value is a float or not(= int). When it is a int, rounding isn't nessesary as the value
                        # will be 0, but to keep it more simple, all numbers will be rounded, floats with 1, and ints with 0
                        if type(json_content['elements'][counter]['values'][date.weekday()]) == type(float()):
                            rounding = 1
                        else:
                            rounding = 0
                        self.failUnlessEqual(json_content['elements'][counter]['values'][date.weekday()], round(slip_dict[member][date]['value'], rounding))
                
                for numb in range(7):
                    self.failUnlessEqual(json_content['x_axis']['labels']['labels'][numb], datetime.datetime.strftime(datetime.datetime(2008,12,numb+1), '%A'))
                
                self.failUnlessEqual(json_content['title']['text'], '%s Week: %s Year: %s' % (team.name, week, year))
                    
                self.client.get('/accounts/logout/')
                
    def testTeamStatMonthView(self):
        for pk in range(2,4):
            team = Team.objects.get(pk=pk)
            year = 2008
            for month in range(1,13):
                response = self.client.get('/statistics/team_stat/%s/year/%s/month/%s/' % (team.id, year, month))
                self.failUnlessEqual(response.status_code, 302)
        
                response = self.client.post('/accounts/login/',
                                            {'username': team.creator.username, 'password': '******'})
                self.failUnlessEqual(response.status_code, 302)
        
                response = self.client.get('/statistics/team_stat/%s/year/%s/month/%s/' % (team.id-1, year, month))
                self.failUnlessEqual(response.status_code, 403)
        
                response = self.client.get('/statistics/data/team_stat/%s/year/%s/month/%s/' % (team.id, year, month))
        
                json_content = json.loads(response.content)
                
                members = team.members.all()
                members_id = []
                for member in members:
                    members_id.append(member.id)
                
                start_date = datetime.date(year, month, 1)
                end_date = start_date + datetime.timedelta(days=30)
                while end_date.month != start_date.month:
                    end_date -= datetime.timedelta(days=1)
        
                slice_set = TimeSlice.objects.filter(begin__range=(start_date, end_date), user__in=members_id)
                
        
                slip_dict = {}
                for member in members_id:
                    slip_dict[member] = {}
                    
                w_date = start_date
                all_dates_list = []
                while w_date != end_date + datetime.timedelta(days=1):
                    all_dates_list.append(w_date)
                    for member in members_id:
                        slip_dict[member][w_date] = {'slip' : [], 'value': 0}
                    w_date += datetime.timedelta(days=1)
                
                for slic in slice_set:
                    if not slic.slip in slip_dict[slic.user_id][slic.begin.date()]['slip']:
                        slip_dict[slic.user_id][slic.begin.date()]['slip'].append(slic.slip)
                        slip_dict[slic.user_id][slic.begin.date()]['value'] += slic.slip.display_days_time(slic.begin.date())
                
                counter = -1
                
                for member in members_id:
                    counter += 1
                    self.failUnlessEqual(json_content['elements'][counter]['type'], 'scatter_line') 
                    for date in all_dates_list:
                        if type(json_content['elements'][counter]['values'][date.day-1]) == type(float()):
                            rounding = 1
                        else:
                            rounding = 0
                        self.failUnlessEqual(json_content['elements'][counter]['values'][date.day-1]['y'], round(slip_dict[member][date]['value'], rounding))
                        self.failUnlessEqual(json_content['elements'][counter]['values'][date.day-1]['x'], date.day)
                
                self.failUnlessEqual(json_content['x_axis']['min'], start_date.day)
                self.failUnlessEqual(json_content['x_axis']['max'], end_date.day)        
                self.failUnlessEqual(json_content['title']['text'], '%s, %s %s' % (team.name, datetime.datetime.strftime(start_date, '%B'), year))
                    
                self.client.get('/accounts/logout/')
        
    def testTeamStatDateView(self):
        for pk in range(2,4):
            team = Team.objects.get(pk=pk)
            year = 2008
            for random_generator in range(20):
                start_date = datetime.date(year, random.randrange(1,13), random.randrange(1,29))
                end_date = start_date + datetime.timedelta(days=random.randrange(1,61))
        
                response = self.client.get('/statistics/team_stat/%s/date/%s/%s/' % (team.id, start_date, end_date))
                self.failUnlessEqual(response.status_code, 302)
        
                response = self.client.post('/accounts/login/',
                                            {'username': team.creator.username, 'password': '******'})
                self.failUnlessEqual(response.status_code, 302)
        
                response = self.client.get('/statistics/team_stat/%s/date/%s/%s/' % (team.id-1, start_date, end_date))
                self.failUnlessEqual(response.status_code, 403)
        
                response = self.client.get('/statistics/data/team_stat/%s/date/%s/%s/' % (team.id, start_date, end_date))
                json_content = json.loads(response.content)
        
                members = team.members.all()
                members_id = []
                for member in members:
                    members_id.append(member.id)
        
                slice_set = TimeSlice.objects.filter(begin__range=(start_date, end_date), user__in=members_id)
                                
                slip_dict = {}
                for member in members_id:
                    slip_dict[member] = {}
                    
                w_date = start_date
                all_dates_list = []
                while w_date != end_date + datetime.timedelta(days=1):
                    all_dates_list.append(w_date)
                    for member in members_id:
                        slip_dict[member][w_date] = {'slip' : [], 'value': 0}
                    w_date += datetime.timedelta(days=1)
                
                for slic in slice_set:
                    if not slic.slip in slip_dict[slic.user_id][slic.begin.date()]['slip']:
                        slip_dict[slic.user_id][slic.begin.date()]['slip'].append(slic.slip)
                        slip_dict[slic.user_id][slic.begin.date()]['value'] += slic.slip.display_days_time(slic.begin.date())
                
                counter = -1
                
                for member in members_id:
                    counter += 1
                    self.failUnlessEqual(json_content['elements'][counter]['type'], 'scatter_line') 
                    for date in all_dates_list:
                        if type(json_content['elements'][counter]['values'][(date-start_date).days]) == type(float()):
                            rounding = 1
                        else:
                            rounding = 0
                        self.failUnlessEqual(json_content['elements'][counter]['values'][(date-start_date).days]['y'], round(slip_dict[member][date]['value'], rounding))
                        self.failUnlessEqual(json_content['elements'][counter]['values'][(date-start_date).days]['x'], time.mktime(date.timetuple())) #unix time stamp
                
                self.failUnlessEqual(json_content['x_axis']['min'], time.mktime(start_date.timetuple()))
                self.failUnlessEqual(json_content['x_axis']['max'], time.mktime(end_date.timetuple()))
                self.failUnlessEqual(json_content['x_axis']['steps'], 86400)
                self.failUnlessEqual(json_content['title']['text'], '%s: From %s to %s' % (team.name, start_date, end_date))
                    
                self.client.get('/accounts/logout/')