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)
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)
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)
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')
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)
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)
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)
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)
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")
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")
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)
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)