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')
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))
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)
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, [])
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)
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>'])
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)
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>'])
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)