Example #1
0
    def test_get_record(self):
        """
        Returns the fastest time for men and women in the given event.
        """
        team = test.create_team(self.user)
        swimmer1 = test.create_swimmer(team)
        swimmer2 = test.create_swimmer(team, first='Jane', last='Doe', gender='F')
        event1 = test.create_event(swimmer1, '50 free', timedelta(seconds=22.32))
        event2 = test.create_event(swimmer1, '50 free', timedelta(seconds=22.96))
        event3 = test.create_event(swimmer2, '50 free', timedelta(seconds=23.51))
        event1.set_gender()
        event1.team = team
        event1.save()
        event2.set_gender()
        event2.team = team
        event2.save()
        event3.set_gender()
        event3.team = team
        event3.save()

        records1 = team.get_record(('50 free', '50 Freestyle'))
        records2 = team.get_record(('100 free', '100 Freestyle'))

        self.assertEqual(records1, ('50 Freestyle', event1, event3))
        self.assertEqual(records2, ('100 Freestyle', None, None))
Example #2
0
    def test_calculate_intervals(self):
        """
        Calculates intervals for a set and returns nothing.
        """
        week = test.create_week()
        week.populate()
        team = test.create_team(self.user)
        swimmer1 = test.create_swimmer(team)
        swimmer2 = test.create_swimmer(team, first='Dave', last='Thornton')
        base1_free = test.create_event(swimmer1, 'base free',
                                       timedelta(seconds=25))
        base2_free = test.create_event(swimmer2, 'base free',
                                       timedelta(seconds=24))

        training_model = test.create_training_model(team)
        training_mult = test.create_training_multiplier(training_model,
                                                        multiplier=0.07)

        practice = test.create_practice(team, week)
        setInstance = test.create_set(practice, swimmers=[swimmer1, swimmer2])
        rep1 = test.create_rep(setInstance)

        funct.calculate_intervals(setInstance, training_model)
        intervals = Interval.objects.filter(rep=rep1)
        self.assertEqual(intervals[0].swimmer.l_name, 'Gridley')
        self.assertEqual(intervals[1].swimmer.l_name, 'Thornton')
        self.assertEqual(intervals[0].time, timedelta(seconds=55))
        self.assertEqual(intervals[1].time, timedelta(seconds=55))
Example #3
0
    def test_team_manager_results_upload_error(self):
        """
        An error message is displayed if results can't be uploaded, or files or
        the meet date can't be found.
        """
        swimmer1 = test.create_swimmer(team=self.team)
        swimmer2 = test.create_swimmer(team=self.team,
                                       first='David',
                                       last='Thornton')
        with open(
                '/Users/hgridley/Documents/Code/projects/CoachMate/teams/tests/test_files/RED-NE-Results005_bad_date.zip',
                'r') as f:
            tm = TeamManager(team=self.team, zip_file=f)
            msg = tm.load_results()
            self.assertEqual(msg[0], ('error', 'Couldn\'t find meet date'))

        with open(
                '/Users/hgridley/Documents/Code/projects/CoachMate/teams/tests/test_files/RED-NE-Results005_bad_events.zip',
                'r') as f:
            tm = TeamManager(team=self.team, zip_file=f)
            msg = tm.load_results()
            self.assertEqual(
                msg[0], ('error', 'Couldn\'t import event for David Thornton'))
            self.assertEqual(
                msg[1], ('error', 'Couldn\'t import event for David Thornton'))
            self.assertEqual(
                msg[2], ('error', 'Couldn\'t import event for Henry Gridley'))

        with open(
                '/Users/hgridley/Documents/Code/projects/CoachMate/teams/tests/test_files/fftlighttest-Results.zip'
        ) as f:
            tm = TeamManager(team=self.team, zip_file=f)
            msg = tm.load_results()
            self.assertEqual(msg[0],
                             ('error', 'Couldn\'t find .HY3 file in zip file'))
Example #4
0
    def test_get_practices_and_dates(self):
        """
        Returns a list of practices and a list of dates.
        """
        weeks = funct.get_or_create_weeks(0)
        team = test.create_team(user=self.user)
        swimmer1 = test.create_swimmer(team)
        base_free = test.create_event(swimmer1,
                                      event='base free',
                                      time=timedelta(seconds=25))
        swimmer2 = test.create_swimmer(team, first='Dave', last='Thornton')
        practice = test.create_practice(team, weeks['current'])
        setInstance = test.create_set(practice=practice,
                                      swimmers=[swimmer1, swimmer2])
        rep1 = test.create_rep(setInstance)

        training_model = test.create_training_model(team)
        training_mult = test.create_training_multiplier(training_model,
                                                        multiplier=0.07)
        funct.calculate_intervals(setInstance, training_model)

        practices, dates = funct.get_practices_and_dates(team, weeks)

        test_dates = []
        for day in weeks['current'].date_range():
            test_dates.append(day)

        intervals = Interval.objects.filter(rep=rep1)
        self.assertEqual(practices, [
            ((practice, [(setInstance, [(swimmer1, [(rep1, intervals[0])]),
                                        (swimmer2, [(rep1, None)])])
                         ]), 'monday'),
            ((None, (None, (None, (None, None)))), 'tuesday'),
            ((None, (None, (None, (None, None)))), 'wednesday'),
            ((None, (None, (None, (None, None)))), 'thursday'),
            ((None, (None, (None, (None, None)))), 'friday'),
            ((None, (None, (None, (None, None)))), 'saturday'),
            ((None, (None, (None, (None, None)))), 'sunday'),
        ])
        self.assertEqual(dates, [
            ('monday', test_dates[0]),
            ('tuesday', test_dates[1]),
            ('friday', test_dates[4]),
            ('wednesday', test_dates[2]),
            ('thursday', test_dates[3]),
            ('sunday', test_dates[6]),
            ('saturday', test_dates[5]),
        ])
Example #5
0
    def test_team_manager_load_results(self):
        """
        Loads meet results from a .HY3 file in the zip file.
        """
        swimmer = test.create_swimmer(team=self.team)
        with open(
                '/Users/hgridley/Documents/Code/projects/CoachMate/teams/tests/test_files/RED-NE-Results005.zip',
                'r') as f:
            tm = TeamManager(team=self.team, zip_file=f)
            msg = tm.load_results()
            self.assertEqual(msg[0], ('success', 'Results imported'))

        events = Event.objects.filter(swimmer=swimmer)
        self.assertEqual(events[0].name, 'Henry Gridley')
        self.assertEqual(events[0].gender, 'M')
        self.assertEqual(events[0].team, self.team)
        self.assertEqual(events[0].event, '50 breast')
        self.assertEqual(events[0].time, timedelta(seconds=35.88))
        self.assertEqual(events[0].place, 7)
        self.assertEqual(events[0].date, date(2017, 2, 4))
        self.assertEqual(events[1].name, 'Henry Gridley')
        self.assertEqual(events[1].gender, 'M')
        self.assertEqual(events[1].team, self.team)
        self.assertEqual(events[1].event, '50 free')
        self.assertEqual(events[1].time, timedelta(seconds=23.34))
        self.assertEqual(events[1].place, 1)
        self.assertEqual(events[1].date, date(2017, 2, 4))
Example #6
0
    def test_team_records(self):
        """
        Returns the team's top time in each event or None for both men and women.
        """
        team = test.create_team(self.user)
        swimmer1 = test.create_swimmer(team)
        swimmer2 = test.create_swimmer(team,
                                       first='Jane',
                                       last='Doe',
                                       gender='F')
        record1 = test.create_record(swimmer=swimmer1,
                                     event='50 free',
                                     time=timedelta(seconds=22.96))
        record2 = test.create_record(swimmer=swimmer1,
                                     event='50 free',
                                     time=timedelta(seconds=22.32))
        record3 = test.create_record(swimmer=swimmer2,
                                     event='50 free',
                                     time=timedelta(seconds=25.14))
        record4 = test.create_record(swimmer=swimmer1,
                                     event='100 free',
                                     time=timedelta(seconds=49.86))
        record5 = test.create_record(swimmer=swimmer2,
                                     event='100 free',
                                     time=timedelta(seconds=54.85))

        records = funct.get_team_records(team)

        self.assertEqual(records, [
            ('50 Freestyle', record2, record3),
            ('100 Freestyle', record4, record5),
            ('200 Freestyle', None, None),
            ('500 Freestyle', None, None),
            ('1000 Freestyle', None, None),
            ('50 Backstroke', None, None),
            ('100 Backstroke', None, None),
            ('200 Backstroke', None, None),
            ('50 Breaststroke', None, None),
            ('100 Breaststroke', None, None),
            ('200 Breaststroke', None, None),
            ('50 Butterfly', None, None),
            ('100 Butterfly', None, None),
            ('200 Butterfly', None, None),
            ('100 IM', None, None),
            ('200 IM', None, None),
            ('400 IM', None, None),
        ])
Example #7
0
 def test_set_age(self):
     """
     Age function should return current age of swimmer.
     """
     team = test.create_team(self.user)
     swimmer = test.create_swimmer(team, 'Henry', 'Gridley', 'M')
     birth_date = date(1996,9,21)
     age = int((date.today() - birth_date).days / 365.2425)
     self.assertEqual(swimmer.set_age(), age)
Example #8
0
    def test_set_name(self):
        """
        Set event name from swimmer name.
        """
        team = test.create_team(self.user)
        swimmer = test.create_swimmer(team)
        event = test.create_event(swimmer=swimmer)

        event.set_name()
        self.assertEqual(event.name, 'Henry Gridley')
Example #9
0
 def test_best_time(self):
     """
     Returns the best time in the given event.
     """
     team = test.create_team(user=self.user)
     swimmer = test.create_swimmer(team=team)
     test.create_event(swimmer=swimmer)
     test.create_event(swimmer=swimmer, time=timedelta(seconds=22.96))
     self.assertEqual(swimmer.get_best_time(event='50 free').time, timedelta(seconds=22.32))
     self.assertNotEqual(swimmer.get_best_time(event='50 free').time, timedelta(seconds=22.96))
Example #10
0
    def test_set_gender(self):
        """
        Set event gender from swimmer gender.
        """
        team = test.create_team(self.user)
        swimmer = test.create_swimmer(team)
        event = test.create_event(swimmer=swimmer)

        event.set_gender()
        self.assertEqual(event.gender, 'M')
Example #11
0
    def test_get_zipped_set(self):
        """
        Returns list of tuples containing the rep, swimmer, and interval.
        """
        week = test.create_week()
        week.populate()
        team = test.create_team(self.user)
        swimmer1 = test.create_swimmer(team)
        swimmer2 = test.create_swimmer(team, first='Dave', last='Thornton')
        base1_free = test.create_event(swimmer1, 'base free',
                                       timedelta(seconds=25))
        base2_free = test.create_event(swimmer2, 'base free',
                                       timedelta(seconds=24))

        practice = test.create_practice(team, week)
        setInstance = test.create_set(practice, swimmers=[swimmer1, swimmer2])
        rep1 = test.create_rep(setInstance)

        training_model = test.create_training_model(team)

        funct.calculate_intervals(setInstance, training_model)
        intervals = Interval.objects.filter(rep=rep1)
        set_zip = funct.get_zipped_set(setInstance)

        self.assertEqual(set_zip, [
            (swimmer1, [(rep1, None)]),
            (swimmer2, [(rep1, None)]),
        ])

        training_mult = test.create_training_multiplier(training_model,
                                                        multiplier=0.07)

        funct.calculate_intervals(setInstance, training_model)
        intervals = Interval.objects.filter(rep=rep1)
        set_zip = funct.get_zipped_set(setInstance)

        self.assertEqual(set_zip, [
            (swimmer1, [(rep1, intervals[0])]),
            (swimmer2, [(rep1, intervals[1])]),
        ])
Example #12
0
    def test_get_swimmer_records(self):
        """
        Returns a swimmer's top time in each event or None.
        """
        team = test.create_team(self.user)
        swimmer = test.create_swimmer(team)
        record1 = test.create_record(swimmer=swimmer,
                                     event='50 free',
                                     time=timedelta(seconds=22.96))
        record2 = test.create_record(swimmer=swimmer,
                                     event='50 free',
                                     time=timedelta(seconds=22.32))
        record3 = test.create_record(swimmer=swimmer,
                                     event='100 free',
                                     time=timedelta(seconds=49.86))
        record4 = test.create_record(swimmer=swimmer,
                                     event='100 free',
                                     time=timedelta(seconds=50.58))
        record5 = test.create_record(swimmer=swimmer,
                                     event='200 free',
                                     time=timedelta(seconds=124.04))

        records = funct.get_swimmer_records(swimmer)
        times = []
        for record in records:
            if record[1]:
                times.append(record[1].time.total_seconds())
            else:
                times.append(None)
        self.assertEqual(records, [
            ('50 Freestyle', record2),
            ('100 Freestyle', record3),
            ('200 Freestyle', record5),
            ('500 Freestyle', None),
            ('1000 Freestyle', None),
            ('50 Backstroke', None),
            ('100 Backstroke', None),
            ('200 Backstroke', None),
            ('50 Breaststroke', None),
            ('100 Breaststroke', None),
            ('200 Breaststroke', None),
            ('50 Butterfly', None),
            ('100 Butterfly', None),
            ('200 Butterfly', None),
            ('100 IM', None),
            ('200 IM', None),
            ('400 IM', None),
        ])
        self.assertEqual(times, [
            22.32, 49.86, 124.04, None, None, None, None, None, None, None,
            None, None, None, None, None, None, None
        ])
Example #13
0
    def test_get_base(self):
        """
        Returns the base for the given swimmer depending on the pace specified.
        """
        team = test.create_team(self.user)
        swimmer = test.create_swimmer(team)
        base_free = test.create_event(swimmer, 'base free', timedelta(seconds=25))
        race_free = test.create_event(swimmer, '100 free', timedelta(seconds=49.86))

        base_train = swimmer.get_base('train', 'free')
        base_race = swimmer.get_base('race', 'free')
        none_race = swimmer.get_base('race', 'back')
        self.assertEqual(base_train, timedelta(seconds=25))
        self.assertEqual(base_race, timedelta(seconds=24.93))
        self.assertEqual(none_race, None)
Example #14
0
 def setUp(self):
     user = test.create_user('user', 'password')
     self.team = test.create_team(user=user)
     self.swimmer = test.create_swimmer(self.team)