Example #1
0
    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)