Example #1
0
    def eventCreation(self):
        user = User.objects.create_user(username='******', password='******')
        login = self.client.login(username='******', password='******')
        Command.update()
        habit1 = create_habit(user=user, name='habit1')
        habit2 = create_habit(user=user, name='habit2')
        habit3 = create_habit(user=user, name='habit3')
        habits = [habit2, habit3]
        habit1.update()
        event = Event.objects.get(date=datetime.date.today())
        self.assertIs(Event.objects.all().count(), 1)
        self.assertIs(event.habits.all().count(), 3)
        self.assertEqual(event.status, 'None')

        habit1.complete()
        habit1.update()
        event = Event.objects.get(date=datetime.date.today())

        self.assertEqual(event.status, 'Partial')
        for habit in habits:
            habit.complete()
            habit.update()
            self.assertTrue(habit.completed)

        event = Event.objects.get(date=datetime.date.today())

        self.assertEqual(event.status, 'Perfect')
Example #2
0
 def testDuplicateHabit(self):
     user = User.objects.create_user(username='******', password='******')
     login = self.client.login(username='******', password='******')
     Command.update()
     habit = create_habit(user=user)
     with transaction.atomic():
         self.assertRaises(IntegrityError, lambda: create_habit(user=user))
Example #3
0
 def testUpdate_noUpdate(self):
     """ Tests that habit attributes do not update during the same day. """
     user = User.objects.create_user(username='******', password='******')
     login = self.client.login(username='******', password='******')
     Command.update()
     habit = create_habit(user=user)
     habit.update()
     today = datetime.datetime.now().date()
     self.assertIs(habit.current_streak, 0)
     self.assertEqual(habit.start_date, today)
     self.assertIs(habit.completed, False)
Example #4
0
    def test_no_habits(self):
        user = User.objects.create_user(username='******', password='******')
        login = self.client.login(username='******', password='******')
        Command.update()
        response = self.client.get(reverse('index'))
        self.assertEqual(response.status_code, 200)
        completed = response.context['complete_habit']
        incompleted = response.context['incomplete_habit']

        self.assertQuerysetEqual(completed, [])
        self.assertQuerysetEqual(incompleted, [])
Example #5
0
    def testUpdate_update_notcompleted(self):
        """ Tests non-completed case of update method """
        user = User.objects.create_user(username='******', password='******')
        login = self.client.login(username='******', password='******')
        Command.update()
        habit = create_habit(user=user)
        today = datetime.datetime.now().date()
        self.assertIs(habit.current_streak, 0)

        tomorrow = today + datetime.timedelta(days = 1)
        with freeze_time(tomorrow):
            Command.update()
            habit.update()
            self.assertIs(habit.current_streak, 0)
            self.assertEqual(habit.start_date, tomorrow)
Example #6
0
    def test_complete_habits(self):
        user = User.objects.create_user(username='******', password='******')
        login = self.client.login(username='******', password='******')
        Command.update()
        habit1 = create_habit(user=user, name='habit1', completed=True)
        habit2 = create_habit(user=user, name='habit2', completed=True)
        habit3 = create_habit(user=user, name='habit3')

        response = self.client.get(reverse('index'))
        self.assertEqual(response.status_code, 200)

        completed = response.context['complete_habit']
        incompleted = response.context['incomplete_habit']

        self.assertQuerysetEqual(completed, ['<Habit: habit1>', '<Habit: habit2>'])
        self.assertQuerysetEqual(incompleted, ['<Habit: habit3>'])
Example #7
0
    def testLongestStreak(self):
        user = User.objects.create_user(username='******', password='******')
        login = self.client.login(username='******', password='******')
        Command.update()
        habit = create_habit(user=user, current_streak=5, longest_streak=7)
        today = datetime.date.today()
        tomorrow = today + datetime.timedelta(days=1)
        tomorrowmorrow = today + datetime.timedelta(days=2)
        tomorrowmorrowmorrow = today + datetime.timedelta(days=3)
        self.assertFalse(habit.completed)
        habit.complete()
        habit.update()
        self.assertTrue(habit.completed)
        self.assertIs(habit.current_streak, 6)
        self.assertIs(habit.longest_streak, 7)

        with freeze_time(tomorrow):
            Command.update()
            habit.update()
            habit.complete()
            habit.update()
            self.assertTrue(habit.completed)
            self.assertIs(habit.current_streak, 7)
            self.assertIs(habit.longest_streak, 7)

        with freeze_time(tomorrowmorrow): #increment longest streak
            Command.update()
            habit.update()
            habit.complete()
            habit.update()
            self.assertTrue(habit.completed)
            self.assertIs(habit.current_streak, 8)
            self.assertIs(habit.longest_streak, 8)

        with freeze_time(tomorrowmorrowmorrow):
            Command.update()
            habit.update()
            self.assertFalse(habit.completed)
            self.assertIs(habit.current_streak, 8)
            self.assertIs(habit.longest_streak, 8)

        with freeze_time(tomorrowmorrowmorrow + datetime.timedelta(days=1)): #current streak resets
            Command.update()
            habit.update()
            self.assertFalse(habit.completed)
            self.assertIs(habit.current_streak, 0)
            self.assertIs(habit.longest_streak, 8)
Example #8
0
    def test_priority_order(self):
        user = User.objects.create_user(username='******', password='******')
        login = self.client.login(username='******', password='******')
        Command.update()
        habit1 = create_habit(user=user, name='habit1', priority = Habit.LOW)
        habit2 = create_habit(user=user, name='habit2', priority = Habit.NORMAL)
        habit3 = create_habit(user=user, name='habit3', priority = Habit.HIGH)
        habit1c = create_habit(user=user, name='habit1c', priority = Habit.LOW, completed=True)
        habit2c = create_habit(user=user, name='habit2c', priority = Habit.NORMAL, completed=True)
        habit3c = create_habit(user=user, name='habit3c', priority = Habit.HIGH, completed=True)


        response = self.client.get(reverse('index'))
        self.assertEqual(response.status_code, 200)
        completed = response.context['complete_habit']
        incompleted = response.context['incomplete_habit']
        self.assertQuerysetEqual(incompleted, ['<Habit: habit3>', '<Habit: habit2>', '<Habit: habit1>'])
        self.assertQuerysetEqual(completed, ['<Habit: habit3c>', '<Habit: habit2c>', '<Habit: habit1c>'])
Example #9
0
    def trackedDays1(self):
        user = User.objects.create_user(username='******', password='******')
        login = self.client.login(username='******', password='******')
        Command.update()
        habit = create_habit(user=user, tracked_days=['0', '1']) #monday and tuesday
        start = datetime.date(2019, 1, 14) #Monday
        with freeze_time(start): #Monday
            Command.update()
            habit.update()
            self.assertTrue(habit.active)
            habit.complete()

        with freeze_time(start + datetime.timedelta(days=1)): #Tuesday
            Command.update()
            habit.update()
            self.assertTrue(habit.active)
            self.assertIs(habit.current_streak, 1)
            habit.complete()
            self.assertIs(habit.current_streak, 2)

        with freeze_time(start + datetime.timedelta(days=2)): #Wednesday
            Command.update()
            habit.update()
            self.assertFalse(habit.active)
            self.assertIs(habit.current_streak, 2)
            habit.complete()
            self.assertIs(habit.current_streak, 2)

        with freeze_time(start + datetime.timedelta(days=3)): #Thursday
            Command.update()
            habit.update()
            self.assertFalse(habit.active)

        with freeze_time(start + datetime.timedelta(days=7)): #Monday
            Command.update()
            habit.update()
            self.assertTrue(habit.active)
            self.assertIs(habit.current_streak, 2)
            habit.complete()
            self.assertIs(habit.current_streak, 3)