Exemplo n.º 1
0
    def test_due_date(self):
        self.assertEquals(self.i1.compute_due_date(), self.today + datetime.timedelta(days=1))

        weekly_goal_text = "Do a timed mile run every week"

        weekly_goal = Goal()
        weekly_goal.user = self.user
        weekly_goal.parse(weekly_goal_text)
        weekly_goal.save()

        instance = ScheduledInstance(goal=weekly_goal, date=self.today)
        self.assertEquals(instance.compute_due_date(), self.today + datetime.timedelta(weeks=1))

        byday_goal_text = "Do something every tuesday and thursday"
        byday_goal = Goal()
        byday_goal.user = self.user
        byday_goal.parse(byday_goal_text)
        byday_goal.save()
        byday_goal.create_scheduled_instances(self.today - datetime.timedelta(weeks=1), 5)

        byday_instance = byday_goal.scheduledinstance_set.all()[0]
        self.assertEquals(byday_instance.compute_due_date(), byday_instance.date + datetime.timedelta(days=1))

        bymonthday_goal_text = "Pay rent every first of the month"
        bymonth_goal = Goal()
        bymonth_goal.user = self.user
        bymonth_goal.parse(bymonthday_goal_text)
        bymonth_goal.save()

        bymonth_goal.create_scheduled_instances(self.today, 5)

        bymonth_instance = bymonth_goal.scheduledinstance_set.all()[0]
        self.assertEquals(bymonth_instance.compute_due_date(), bymonth_instance.date + datetime.timedelta(days=1))
Exemplo n.º 2
0
def new_goal(request):
    error_message = None

    try:
        goal_text = request.POST['goal_text']

        g = Goal()

        g.user = request.user

        try:
            g.parse(goal_text)

        except Exception:
            messages.error(request, "Invalid goal. Please enter a correctly formatted goal.")

            return HttpResponseRedirect(reverse("habits.views.main"))

        g.save()
        g.create_scheduled_instances(Goal.beginning_today(request.user), 5)

        return HttpResponseRedirect(reverse("habits.views.main"))

    except KeyError:
        error_message = "Please enter a valid goal"
        return render_to_response("main.html", standard_data(request, error_message),
            context_instance=RequestContext(request))
Exemplo n.º 3
0
    def test_splitting_input(self):

        goal = Goal()
        goal.user = self.user

        goal.parse("2 hours of studying every day")

        self.assertEqual(goal.creation_text, "2 hours of studying every day")
        self.assertEqual(goal.description, "2 hours of studying")
        self.assertEqual(goal.rrule,
            'DTSTART:' + self.today.strftime("%Y%m%d") + '\nRRULE:FREQ=DAILY;INTERVAL=1')
        self.assertEqual(goal.dtstart, Goal.beginning_today(self.user))
        self.assertEqual(goal.freq, "daily")
        self.assertEqual(goal.byday, None)
Exemplo n.º 4
0
    def test_day_string(self):

        self.assertEquals(self.simple_goal.day_string(), "Every day")

        weekday_goal = Goal()
        weekday_goal.user = self.user
        weekday_goal.parse("Pet a kitty every weekday")

        self.assertEquals(weekday_goal.day_string(), "Weekdays")

        self.assertEquals(self.byday_goal.day_string(), "Monday, Wednesday, Friday")

        interval_goal = Goal()
        interval_goal.user = self.user
        interval_goal.user = self.user
        interval_goal.parse("Pet a kitty every other day")

        self.assertEquals(interval_goal.day_string(), "Every other day")

        interval_goal2 = Goal()
        interval_goal2.user = self.user
        interval_goal2.parse("Pet a kitty every 3 days")

        self.assertEquals(interval_goal2.day_string(), "Every 3 days")

        weekly_goal = Goal()
        weekly_goal.user = self.user
        weekly_goal.parse("do a thing every week")

        self.assertEquals(weekly_goal.day_string(), "Every week")

        bymonthday_goal_text = "Pay rent every first of the month"
        bymonth_goal = Goal()
        bymonth_goal.user = self.user
        bymonth_goal.parse(bymonthday_goal_text)

        self.assertEquals(bymonth_goal.day_string(), "Every month (day 1)")
Exemplo n.º 5
0
    def test_complain_invalid_input(self):
        """
        Tests that parsing complains on invalid input.
        """

        goal = Goal()
        goal.user = self.user

        self.assertRaises(InvalidInput, goal.parse, "Herp a derp on Monday")

        self.assertRaises(InvalidInput, goal.parse, "Do something every hour")
        self.assertRaises(InvalidInput, goal.parse, "Do something every minute")
        self.assertRaises(InvalidInput, goal.parse, "Do something every second")

        self.assertRaises(InvalidInput, goal.parse, "Go to the doctor once a decade")
Exemplo n.º 6
0
    def test_international_user_goal_creation(self):
        intl_user = User(username="******", password="******")
        intl_user.save()
        profile = intl_user.userprofile

        profile.timezone = 'Europe/London'
        profile.save()

        intl_goal_text = "Do a thing every day"
        intl_goal = Goal()
        intl_goal.user = intl_user
        intl_goal.parse(intl_goal_text)
        intl_goal.save()

        intl_goal.create_scheduled_instances(timezone.now(), 5)

        print "intl_goal due_date =", intl_goal.scheduledinstance_set.all()[0].due_date
        self.assertEquals(intl_goal.scheduledinstance_set.all()[0].due_date.hour, 0)
Exemplo n.º 7
0
    def test_parse_incremental_goal(self):
        """
        Tests parsing goals like 'go to the gym 3 times every week'.
        """

        incremental_goal = Goal()
        incremental_goal.user = self.user
        incremental_goal.parse("Go to the gym 3 times every week")
        incremental_goal.save()

        self.assertEqual(incremental_goal.creation_text, "Go to the gym 3 times every week")
        self.assertEqual(incremental_goal.description, "Go to the gym 3 times")
        self.assertEqual(incremental_goal.rrule,
            'DTSTART:' + self.today.strftime("%Y%m%d") + '\nRRULE:FREQ=WEEKLY;INTERVAL=1')
        self.assertEqual(incremental_goal.dtstart, self.today)
        self.assertEqual(incremental_goal.freq, "weekly")
        self.assertEqual(incremental_goal.byday, None)

        self.assertEqual(incremental_goal.incremental, True)

        self.assertEqual(incremental_goal.goal_amount, 3)

        incremental_goal.create_scheduled_instances(self.today, 1)

        instance = incremental_goal.scheduledinstance_set.all()[0]
        self.assertEqual(instance.current_progress, 0)
        self.assertEqual(instance.completed, False)

        instance.progress()

        self.assertEqual(instance.current_progress, 1)

        instance.progress()
        instance.progress()

        self.assertEqual(instance.current_progress, 3)
        self.assertEqual(instance.completed, True)