def setup(self):
		WorkoutCategoryModel("Running", True).save(commit=False)
		WorkoutCategoryModel("Fitness", False).save()
		self.running_workout_category = WorkoutCategoryModel.get_by_id(1)
		self.fitness_workout_category = WorkoutCategoryModel.get_by_id(2)
		GoalCategoryModel("Cumulative distance", "km", 1).save(commit=False)
		GoalCategoryModel("Number of workouts", "#", 1).save(commit=False)
		GoalCategoryModel("Number of workouts", "#", 2).save(commit=False)
		GoalCategoryModel("Cumulative climb", "m", 1).save(commit=False)
		GoalCategoryModel("Weight loss", "kg", None).save()
		self.cumulative_distance_goal_category = GoalCategoryModel.get_by_id(1)
		self.num_of_running_workouts_goal_category = GoalCategoryModel.get_by_id(2)
		self.num_of_fitness_workouts_goal_category = GoalCategoryModel.get_by_id(3)
		self.cumulative_climb_goal_category = GoalCategoryModel.get_by_id(4)
		self.weight_loss_goal_category = GoalCategoryModel.get_by_id(5)
		two_days_ago = dt.datetime.utcnow() - dt.timedelta(days=2)
		two_days_from_now = dt.datetime.utcnow() + dt.timedelta(days=2)
		GoalModel(self.profile_id, self.cumulative_distance_goal_category, two_days_ago, two_days_from_now, 0, 100, 0).save(commit=False)
		GoalModel(self.profile_id, self.num_of_running_workouts_goal_category, two_days_ago, two_days_from_now, 0, 10, 0).save(commit=False)
		GoalModel(self.profile_id, self.num_of_fitness_workouts_goal_category, two_days_ago, two_days_from_now, 0, 10, 0).save(commit=False)
		GoalModel(self.profile_id, self.cumulative_climb_goal_category, two_days_ago, two_days_from_now, 0, 500, 0).save(commit=False)
		GoalModel(self.profile_id, self.weight_loss_goal_category, two_days_ago, two_days_from_now, 80, 70, 78).save()
		self.cumulative_distance_goal = GoalModel.get_by_id(1)
		self.running_workouts_goal = GoalModel.get_by_id(2)
		self.fitness_workouts_goal = GoalModel.get_by_id(3)
		self.cumulative_climb_goal = GoalModel.get_by_id(4)
		self.weight_loss_goal = GoalModel.get_by_id(5)
Beispiel #2
0
    def test_get_workouts_for_goal_excludes_other_workout_categories(self):
        # register category for goal, connected to "running"
        goal_category = GoalCategoryModel("Distance", "km", 1)
        goal_category.save(commit=False)
        # register category for goal, not connected to "running
        goal_category_other = GoalCategoryModel("Distance", "km", 2)
        goal_category_other.save()
        #register goal
        goal = GoalModel(1, goal_category,
                         dt.datetime.utcnow() - dt.timedelta(days=4),
                         dt.datetime.utcnow() + dt.timedelta(days=4))
        goal.save()
        # register workout for workout category "Running", within goal limits
        running_category = WorkoutCategoryModel.get_by_id(1)
        run_workout = WorkoutModel(1, running_category, "Run",
                                   dt.datetime.utcnow(), 1000, 200, 0, None,
                                   False)
        run_workout.save(commit=False)
        # register workout for workout category "Hiking"
        hiking_category = WorkoutCategoryModel.get_by_id(2)
        hiking_workout = WorkoutModel(
            1, hiking_category, "Hike",
            dt.datetime.utcnow() + dt.timedelta(days=1), 1000, 200, 0, None,
            False)
        hiking_workout.save(commit=True)

        goal_workouts = WorkoutModel.get_workouts_for_goal(goal)
        assert (len(goal_workouts) == 1)
        assert (goal_workouts[0] == run_workout)
Beispiel #3
0
 def test_default_resource_path_and_edited(self):
     category = WorkoutCategoryModel.get_by_id(1)
     new_workout = WorkoutModel(1, category, "Hike 1", dt.datetime.utcnow(),
                                1234, 234, 123)
     new_workout.save()
     assert (new_workout.resource_path is None)
     assert (new_workout.edited == False)
Beispiel #4
0
 def test_workout_category_link(self):
     category = WorkoutCategoryModel.get_by_id(2)
     new_workout = WorkoutModel(1, category, "Hike 1", dt.datetime.utcnow(),
                                1234, 234, 123)
     new_workout.save()
     assert (new_workout.category.id == 2)
     assert (new_workout.category.name == 'Hiking')
Beispiel #5
0
 def test_get_by_id(self):
     category = WorkoutCategoryModel.get_by_id(1)
     new_workout = WorkoutModel(1, category, "Run 1", dt.datetime.utcnow(),
                                1234, 234, 123)
     new_workout.save()
     retrieved_workout = WorkoutModel.get_by_id(new_workout.id)
     assert (retrieved_workout == new_workout)
Beispiel #6
0
    def test_get_workouts_for_goal_excludes_other_users_workouts(self):
        # register category for goal, connected to "running"
        goal_category = GoalCategoryModel("Distance", "km", 1)
        goal_category.save()
        #register goal
        goal = GoalModel(1, goal_category,
                         dt.datetime.utcnow() - dt.timedelta(days=4),
                         dt.datetime.utcnow() + dt.timedelta(days=4))
        goal.save()
        # register workout for workout category "Running", within goal limits
        running_category = WorkoutCategoryModel.get_by_id(1)
        run_workout_1 = WorkoutModel(1, running_category, "Run 1",
                                     dt.datetime.utcnow(), 1000, 200, 0, None,
                                     False)
        run_workout_1.save(commit=False)
        # register workout for workout category "Running", within goal limits, but other user
        run_workout_2 = WorkoutModel(
            2, running_category, "Run 2",
            dt.datetime.utcnow() + dt.timedelta(days=1), 1000, 200, 0, None,
            False)
        run_workout_2.save(commit=True)

        goal_workouts = WorkoutModel.get_workouts_for_goal(goal)
        assert (len(goal_workouts) == 1)
        assert (goal_workouts[0] == run_workout_1)
Beispiel #7
0
 def test_get_workouts_for_goal_excludes_too_old_and_too_new_workouts(self):
     # register category for goal, connected to "running"
     goal_category = GoalCategoryModel("Distance", "km", 1)
     goal_category.save()
     #register goal
     goal = GoalModel(1, goal_category,
                      dt.datetime.utcnow() - dt.timedelta(days=4),
                      dt.datetime.utcnow() + dt.timedelta(days=4))
     goal.save()
     # register workouts for workout category "Running", within goal limits
     running_category = WorkoutCategoryModel.get_by_id(1)
     run_workout_1 = WorkoutModel(1, running_category, "Run 1",
                                  dt.datetime.utcnow(), 1000, 200, 0, None,
                                  False)
     run_workout_1.save(commit=False)
     run_workout_2 = WorkoutModel(
         1, running_category, "Run 2",
         dt.datetime.utcnow() + dt.timedelta(days=1), 1000, 200, 0, None,
         False)
     run_workout_2.save(commit=False)
     # register workout completed before goal started
     WorkoutModel(1, running_category, "Too early",
                  dt.datetime.utcnow() - dt.timedelta(days=5), 1000, 200, 0,
                  None, False).save(commit=False)
     # register workout completed after goal ended
     WorkoutModel(1, running_category, "Too late",
                  dt.datetime.utcnow() + dt.timedelta(days=5), 1000, 200, 0,
                  None, False).save(commit=True)
     goal_workouts = WorkoutModel.get_workouts_for_goal(goal)
     assert (len(goal_workouts) == 2)
     assert (goal_workouts[0] == run_workout_1)
     assert (goal_workouts[1] == run_workout_2)
Beispiel #8
0
 def test_two_goals_with_same_category_and_profile(self):
     category = WorkoutCategoryModel.get_by_id(1)
     new_workout1 = WorkoutModel(1, category, "Hike 1",
                                 dt.datetime.utcnow(), 1234, 234, 123)
     new_workout1.save()
     new_workout2 = WorkoutModel(1, category, "Hike 2",
                                 dt.datetime.utcnow(), 1234, 234, 123)
     new_workout2.save()
     assert (WorkoutModel.query.count() == 2)
Beispiel #9
0
 def test_pace_and_speed(self):
     category = WorkoutCategoryModel.get_by_id(1)
     new_workout1 = WorkoutModel(1, category, "Run 1", dt.datetime.utcnow(),
                                 10000, 3600, 0)
     new_workout1.save()
     assert (new_workout1.average_speed == 10.0)
     assert (new_workout1.average_pace == "06:00")
     new_workout2 = WorkoutModel(1, category, "Run 2", dt.datetime.utcnow(),
                                 4567, 1627, 0)
     new_workout2.save()
     assert (new_workout2.average_speed == 10.11)
     assert (new_workout2.average_pace == "05:56")
Beispiel #10
0
 def test_resource_file(self):
     category = WorkoutCategoryModel.get_by_id(1)
     new_workout1 = WorkoutModel(1, category, "Run 1", dt.datetime.utcnow(),
                                 10000, 3600, 0, None)
     new_workout1.save(commit=False)
     new_workout2 = WorkoutModel(1, category, "Run 2", dt.datetime.utcnow(),
                                 4567, 1627, 0, '/path/to/file')
     new_workout2.save()
     assert (new_workout1.resource_path is None)
     assert (new_workout1.resource_file is None)
     assert (new_workout2.resource_path == "/path/to/file")
     assert (new_workout2.resource_file == "file")
Beispiel #11
0
 def test_values(self):
     category = WorkoutCategoryModel.get_by_id(1)
     now = dt.datetime.utcnow()
     item = WorkoutModel(3, category, "Run 1", now, 1234, 234, 123,
                         '/path/to/file.gpx', True)
     assert (item.profile_id == 3)
     assert (item.category.id == 1)
     assert (item.category_name == "Running")
     assert (item.name == "Run 1")
     assert (item.start_at == now)
     assert (item.distance == 1234)
     assert (item.duration == 234)
     assert (item.climb == 123)
     assert (item.resource_path == '/path/to/file.gpx')
     assert (item.edited == True)
Beispiel #12
0
 def test_get_by_id(self):
     new_item = WorkoutCategoryModel("Running", True)
     new_item.save()
     retrieved_item = WorkoutCategoryModel.get_by_id(new_item.id)
     assert (retrieved_item == new_item)