Esempio n. 1
0
class TestResetVotes(TestCase):
    yesterday = dateManager.today() + datetime.timedelta(days=-1)

    def test_reset_things_from_last_vote_day(self):
        team = Team.objects.create(team_name="testTeam")
        other_team = Team.objects.create(team_name="otherTeam")
        User.objects.all().delete()
        Restaurant.objects.all().delete()
        Vote.objects.all().delete()
        Absence.objects.all().delete()

        first = User.objects.create(username="******", team=team)
        second = User.objects.create(username="******", team=other_team)
        restaurant = Restaurant.objects.create(
            restaurant_name="test_restaurant", restaurant_for_team=other_team)
        Absence.objects.create(user=first,
                               absenceFrom=self.yesterday,
                               absenceTo=self.yesterday,
                               reason=Reasons.OUT.value)
        Vote.objects.create(restaurant=restaurant, user=second)

        self.assertEqual(len(User.objects.all()), 2)
        self.assertEqual(Restaurant.objects.exists(), True)
        self.assertEqual(Absence.objects.exists(), True)
        self.assertEqual(Vote.objects.exists(), True)
        self.assertEqual(ChoicesOfTheWeek.objects.exists(), False)

        resetVotes.reset_things_from_last_vote_day()

        self.assertEqual(Absence.objects.exists(), False)
        self.assertEqual(Vote.objects.exists(), False)
        self.assertEqual(ChoicesOfTheWeek.objects.exists(), True)
Esempio n. 2
0
class AbsenceFromTest(TestCase):
    today = dateManager.today()
    tomorrow = dateManager.tomorrow()
    yesterday = today + datetime.timedelta(days=-1)
    day_before_yesterday = today + datetime.timedelta(days=-2)

    def test_absence_form(self):
        form_data = {'absenceFrom': self.tomorrow, 'absenceTo': self.today}
        form = AbsenceForm(data=form_data)
        self.assertFalse(form.is_valid())

        form_data = {
            'absenceFrom': self.day_before_yesterday,
            'absenceTo': self.yesterday
        }
        form = AbsenceForm(data=form_data)
        self.assertFalse(form.is_valid())

        form_data = {'absenceFrom': self.today, 'absenceTo': self.tomorrow}
        form = AbsenceForm(data=form_data)
        self.assertTrue(form.is_valid())

        form_data = {'absenceFrom': self.yesterday, 'absenceTo': self.tomorrow}
        form = AbsenceForm(data=form_data)
        self.assertFalse(form.is_valid())
Esempio n. 3
0
def update_forecast():
    json = get_forecast_json()
    today = dateManager.today().strftime("%Y-%m-%d 12:00:00")
    tomorrow = dateManager.tomorrow().strftime("%Y-%m-%d 12:00:00")
    try:
        logger.debug("process forecast information in json")
        if json is not None:
            for json in json['list']:
                if json['dt_txt'] == tomorrow and dateManager.is_after_noon():
                    save_new_forecast(json)

                elif json['dt_txt'] == today and not dateManager.is_after_noon(
                ):
                    save_new_forecast(json)
    except:
        pass
Esempio n. 4
0
class AbsenceDaoTest(TestCase):
    absence_dao = AbsenceDAO()
    today = dateManager.today()

    def setUp(self):
        team = Team.objects.create(team_name="TestTeam")
        first_Test_User = User.objects.create(username='******', is_staff=True)
        first_Test_User.set_password('12345')
        first_Test_User.team = team
        first_Test_User.save()

    def test_set_absence_for_User(self):
        user = User.objects.get(username='******')

        self.absence_dao.set_absence_for_user(user, self.today, self.today, Reasons.ABSENT)
        user_absence = Absence.objects.filter(user=user,
                                              absenceFrom=self.today,
                                              absenceTo=self.today,
                                              reason=Reasons.ABSENT.value)

        self.assertEqual(len(user_absence), 1)

    def test_delete_absence(self):
        user = User.objects.get(username='******')
        absence = Absence.objects.filter(user=user)
        self.absence_dao.delete_absence(absence)
        self.assertEqual(len(Absence.objects.all()), 0)

    def test_get_absences_from_user(self):
        user = User.objects.get(username='******')
        Absence.objects.create(user=user,
                               absenceFrom=self.today,
                               absenceTo=self.today,
                               reason=Reasons.ABSENT.value)
        absences = Absence.objects.filter(user=user)
        self.assertEquals(len(absences), 1)

    def test_get_absences_for_reason(self):
        user = User.objects.get(username='******')
        absence = Absence.objects.create(user=user,
                                         absenceFrom=self.today,
                                         absenceTo=self.today,
                                         reason=Reasons.ABSENT.value)
        absences_for_reason = self.absence_dao.get_absences_from_team_for_reason(Reasons.ABSENT, user.team)

        self.assertEqual(absence, absences_for_reason.get())
Esempio n. 5
0
class AbsenceLogicTest(TestCase):
    absence_logic = AbsenceLogic()
    absence_dao = AbsenceDAO()

    today = dateManager.today()
    tomorrow = dateManager.tomorrow()
    yesterday = dateManager.today() + datetime.timedelta(days=-1)
    current_vote_date = dateManager.current_vote_day()

    def setUp(self):
        team = Team.objects.create(team_name="TestTeam")
        test_user = User.objects.create(username='******', is_staff=True)
        test_user.set_password('12345')
        test_user.team = team
        test_user.save()
        test_user_second = User.objects.create(username='******', is_staff=True)
        test_user_second.set_password('12345')
        test_user_second.team = team
        test_user_second.save()
        test_user_third = User.objects.create(username='******', is_staff=True)
        test_user_third.set_password('12345')
        test_user_third.team = team
        test_user_third.save()

        Absence.objects.create(user=test_user,
                               absenceFrom=self.today,
                               absenceTo=self.today,
                               reason=Reasons.OUT.value)
        Absence.objects.create(user=test_user_second,
                               absenceFrom=self.tomorrow,
                               absenceTo=self.tomorrow,
                               reason=Reasons.OUT.value)

        Absence.objects.create(user=test_user_third,
                               absenceFrom=self.yesterday,
                               absenceTo=self.yesterday,
                               reason=Reasons.OUT.value)
        # other User absence with different team does not effect absences for TestTeam
        other_team = Team.objects.create(team_name="other_team")
        other_user = User.objects.create(username='******', is_staff=True)
        other_user.set_password('12345')
        other_user.team = team
        Absence.objects.create(user=other_user,
                               absenceFrom=self.today,
                               absenceTo=self.today,
                               reason=Reasons.OUT.value)

    def test_check_if_a_absence_is_active_for_date(self):
        absence = [Absence.objects.get(user__username='******')]

        self.assertTrue(self.absence_logic.check_if_a_absence_is_active_for_date(absence, self.today))
        self.assertFalse(self.absence_logic.check_if_a_absence_is_active_for_date(absence, self.tomorrow))

    def test_delete_old_absence_for_user(self):
        absence_first_user = Absence.objects.get(user__username='******')
        absence_second_user = Absence.objects.get(user__username='******')
        firstUser = User.objects.get(username='******')
        secondUser = User.objects.get(username='******')

        self.absence_logic.delete_old_and_current_absences_for_user(firstUser)
        self.assertNotIn(absence_first_user, self.absence_dao.get_absences_from_user(firstUser))

        Absence.objects.create(user=firstUser,
                               absenceFrom=self.today,
                               absenceTo=self.today,
                               reason=Reasons.OUT.value)
        self.absence_logic.delete_old_and_current_absences_for_user(firstUser)
        self.assertIn(absence_second_user, self.absence_dao.get_absences_from_user(secondUser))

    def test_set_todays_absence_for_user(self):
        self.refresh_absence_databse()
        # User does not have any absence -> is after noon absence for tomorrow else for today / reason does not matter
        fresh_user = User.objects.create(username='******', is_staff=True)
        fresh_user.set_password('12345')
        fresh_user.save()

        self.absence_logic.set_vote_absence_for_user(user=fresh_user, reason=Reasons.OUT)
        absence_from_fresh_user = Absence.objects.filter(user=fresh_user)
        self.assertEqual(absence_from_fresh_user.get().absenceFrom, self.current_vote_date)
        self.absence_logic.set_vote_absence_for_user(user=fresh_user, reason=Reasons.OUT)
        absence_from_fresh_user = Absence.objects.filter(user=fresh_user)
        self.assertEqual(absence_from_fresh_user.filter(user=fresh_user).get().absenceFrom, self.current_vote_date)

        # Start with clear database
        self.refresh_absence_databse()
        self.absence_logic.set_vote_absence_for_user(user=fresh_user, reason=Reasons.OUT)
        out_absence = Absence.objects.get(user=fresh_user)
        self.absence_logic.set_vote_absence_for_user(user=fresh_user, reason=Reasons.DONOTCARE)
        all_absences = Absence.objects.all()
        # Old absence should be deleted
        self.assertNotIn(out_absence, all_absences)
        # New absence should be there
        do_not_care_absence = Absence.objects.get(user=fresh_user)
        self.assertIn(do_not_care_absence, all_absences)

    def test_delete_absences_for_user(self):
        absences = Absence.objects.all()
        self.assertEqual(len(absences), 4)
        for a in absences:
            self.absence_logic.delete_absences_for_user(a.user, [a.__str__()])

        absences = Absence.objects.all()
        self.assertEqual(len(absences), 0)

    def test_get_active_absent_absences(self):
        team = Team.objects.get(team_name="TestTeam")
        user = User.objects.get(username='******')
        absent = Absence.objects.create(user=user,
                                        absenceFrom=self.today,
                                        absenceTo=self.tomorrow,
                                        reason=Reasons.ABSENT.value)

        active_absences = self.absence_logic.get_active_absent_absences_from_team(team)
        self.assertEqual(active_absences, [absent])

    def test_delete_all_inactive_absences(self):
        first_absence = Absence.objects.get(user__username='******')
        second_absence = Absence.objects.get(user__username='******')
        third_absence = Absence.objects.get(user__username='******')
        other_absence = Absence.objects.get(user__username='******')

        self.assertEquals([first_absence, second_absence, third_absence, other_absence], list(Absence.objects.all()))
        self.absence_logic.delete_all_inactive_absences()
        self.assertIn(second_absence, list(Absence.objects.all()))

    def test_get_sorted_absent_absences(self):
        team = Team.objects.get(team_name="TestTeam")
        user = User.objects.get(username='******')
        user_two = User.objects.get(username='******')

        absence = Absence.objects.create(user=user,
                                         absenceFrom=self.today,
                                         absenceTo=self.today,
                                         reason=Reasons.ABSENT.value)
        absence_two = Absence.objects.create(user=user_two,
                                             absenceFrom=self.tomorrow,
                                             absenceTo=self.tomorrow,
                                             reason=Reasons.ABSENT.value)

        absences = self.absence_logic.get_sorted_absent_absences_for_team(team)
        self.assertEqual(absences, {'test_user': [absence], 'test_user_second': [absence_two]})

    def test_delete_vote_absence_for_user(self):
        self.refresh_absence_databse()
        user = User.objects.get(username='******')
        absence = Absence.objects.create(user=user,
                                         absenceFrom=self.today,
                                         absenceTo=self.today,
                                         reason=Reasons.OUT.value)

        self.absence_logic.delete_vote_absence_for_user(user, self.yesterday)
        self.assertEqual(list(Absence.objects.all()), [])

    def refresh_absence_databse(self):
        for a in Absence.objects.all():
            a.delete()
Esempio n. 6
0
 def test_today(self):
     self.assertEqual(dateManager.today(), datetime.date.today())
Esempio n. 7
0
class AbsenceIndexTest(TestCase):
    today = dateManager.today()
    tomorrow = dateManager.tomorrow()
    yesterday = today + datetime.timedelta(days=-1)

    def setUp(self):
        Forecast.objects.create(temperature=12, description="sunny")
        team = Team.objects.create(team_name="TestTeam")
        another_test_user = User.objects.create(username='******',
                                                is_staff=True)
        another_test_user.set_password('12345')
        another_test_user.team = team
        another_test_user.save()

        Absence.objects.create(user=another_test_user,
                               absenceFrom=self.tomorrow,
                               absenceTo=self.tomorrow,
                               reason=Reasons.ABSENT.value)

    def test_absenceIndex(self):
        absence = Absence.objects.get(user__username='******')
        self.client.post('/admin/login/?next=/', {
            'username': '******',
            'password': '******'
        })
        response = self.client.get(reverse('main:absenceIndex'))

        self.assertEquals(response.status_code, 200)
        self.assertEquals(
            response.context[-1]['weather_context'], {
                'temperature_in_c': Decimal('12.00'),
                'weather_group': '',
                'description': 'sunny',
                'icon': ''
            })
        self.assertEquals(response.context[-1]['absences_from_users'],
                          {'another_test_user': [absence]})

    def test_save_new_absence(self):
        user = User.objects.get(username='******')
        self.assertEqual(len(Absence.objects.all()), 1)

        login = self.client.post('/admin/login/?next=/save_new_absence', {
            'username': '******',
            'password': '******'
        })
        self.assertRedirects(login, '/save_new_absence', status_code=302)
        response = self.client.post('/save_new_absence', {
            'user': user,
            'absenceFrom': self.today,
            'absenceTo': self.today
        })
        self.assertEqual(len(Absence.objects.all()), 2)
        response = self.client.post(
            '/save_new_absence', {
                'user': user,
                'absenceFrom': self.yesterday,
                'absenceTo': self.yesterday
            })
        self.assertEqual(len(Absence.objects.all()), 2)

    def test_delete_absences(self):
        user = User.objects.get(username='******')
        absence = Absence.objects.get(user__username='******')

        self.assertEqual(Absence.objects.all().get(), absence)
        self.assertEqual(len(Absence.objects.all()), 1)

        login = self.client.post('/admin/login/?next=/delete_absences', {
            'username': '******',
            'password': '******'
        })
        self.assertRedirects(login,
                             '/delete_absences',
                             status_code=302,
                             target_status_code=302)

        response = self.client.post('/delete_absences', {
            'user': user,
            'absenceBox': absence.__str__()
        })

        self.assertEqual(len(Absence.objects.all()), 0)