def test_time_goal_and_time_contributed(self): steve = TestModels.create_steve() db.session.add(steve) db.session.commit() # create a project new_project = Project(user=steve.id, name='Learn Swedish') db.session.add(new_project) db.session.commit() # create a goal for this project # 30 minutes every day new_goal = Goal(project=new_project.id, days=0b1111111, time=30) db.session.add(new_goal) db.session.commit() # test Project.time_goal self.assertTrue(new_project.time_goal() == 30) # create another goal # 15 minutes on weekdays weekday_goal = Goal(project=new_project.id, days=0b0011111, time=15) db.session.add(weekday_goal) db.session.commit() # test Project.time_goal weekday = date(2015, 10, 26) weekend = date(2015, 10, 25) self.assertTrue(new_project.time_goal(weekday) == 45) self.assertTrue(new_project.time_goal(weekend) == 30) # create a new contribution new_contribution = Contribution(project=new_project.id, time=60) db.session.add(new_contribution) db.session.commit() self.assertTrue(new_project.time_contributed() == 60) # create an old contribution old_date = date(2015, 06, 10) contribution = Contribution(project=new_project.id, time=20, date=old_date) db.session.add(contribution) db.session.commit() self.assertTrue(new_project.time_contributed() == 80) # test time_contributed with date range start_date = date(2015, 06, 01) end_date = date(2015, 07, 01) self.assertTrue( new_project.time_contributed(start=start_date, end=end_date) == 20)