def setUp(self): """Set the environment for the tests up.""" super().setUp() self.absence_credits = AbsenceCreditFactory.create_batch( 5, user=self.user) AbsenceCreditFactory.create_batch(5)
def test_absence_credit_get_superuser(superadmin_client): AbsenceCreditFactory.create_batch(2) AbsenceCreditFactory.create(user=superadmin_client.user) url = reverse("absence-credit-list") result = superadmin_client.get(url) assert result.status_code == status.HTTP_200_OK json = result.json() assert len(json["data"]) == 3
def test_absence_credit_get_authenticated(auth_client): AbsenceCreditFactory.create_batch(2) absence_credit = AbsenceCreditFactory.create(user=auth_client.user) url = reverse("absence-credit-list") result = auth_client.get(url) assert result.status_code == status.HTTP_200_OK json = result.json() assert len(json["data"]) == 1 assert json["data"][0]["id"] == str(absence_credit.id)
def test_absence_credit_balance(self): """Should calculate an absence credit balance.""" absence_credit = AbsenceCreditFactory.create( user=self.user, duration=timedelta(hours=30)) EmploymentFactory.create(user=self.user, start_date=absence_credit.date - timedelta(days=1), worktime_per_day=timedelta(hours=8)) AbsenceFactory.create(user=self.user, type=absence_credit.absence_type, date=absence_credit.date + timedelta(days=1)) AbsenceFactory.create(user=self.user, type=absence_credit.absence_type, date=absence_credit.date - timedelta(days=1), duration=timedelta(hours=8)) url = reverse('absence-credit-detail', args=[absence_credit.id]) res = self.client.get(url) result = self.result(res) assert result['data']['attributes']['duration'] == '1 06:00:00' assert result['data']['attributes']['used'] == '08:00:00' assert result['data']['attributes']['balance'] == '22:00:00'
def test_absence_balance_full_day(auth_client, django_assert_num_queries): day = date(2017, 2, 28) user = auth_client.user EmploymentFactory.create(user=user, start_date=day) absence_type = AbsenceTypeFactory.create() AbsenceCreditFactory.create(date=day, user=user, days=5, absence_type=absence_type) # credit on different user, may not show up AbsenceCreditFactory.create(date=date.today(), absence_type=absence_type) AbsenceFactory.create(date=day, user=user, type=absence_type) AbsenceFactory.create(date=day - timedelta(days=1), user=user, type=absence_type) url = reverse('absence-balance-list') with django_assert_num_queries(7): result = auth_client.get(url, data={ 'date': '2017-03-01', 'user': user.id, 'include': 'absence_credits,absence_type' }) assert result.status_code == status.HTTP_200_OK json = result.json() assert len(json['data']) == 1 entry = json['data'][0] assert (entry['id'] == '{0}_{1}_2017-03-01'.format(user.id, absence_type.id)) assert entry['attributes']['credit'] == 5 assert entry['attributes']['used-days'] == 2 assert entry['attributes']['used-duration'] is None assert entry['attributes']['balance'] == 3 assert len(json['included']) == 2
def test_absence_balance_full_day(auth_client, django_assert_num_queries): day = date(2017, 2, 28) user = auth_client.user EmploymentFactory.create(user=user, start_date=day) absence_type = AbsenceTypeFactory.create() AbsenceCreditFactory.create(date=day, user=user, days=5, absence_type=absence_type) # credit on different user, may not show up AbsenceCreditFactory.create(date=date.today(), absence_type=absence_type) AbsenceFactory.create(date=day, user=user, type=absence_type) AbsenceFactory.create(date=day - timedelta(days=1), user=user, type=absence_type) url = reverse("absence-balance-list") with django_assert_num_queries(6): result = auth_client.get( url, data={ "date": "2017-03-01", "user": user.id, "include": "absence_credits,absence_type", }, ) assert result.status_code == status.HTTP_200_OK json = result.json() assert len(json["data"]) == 1 entry = json["data"][0] assert entry["id"] == "{0}_{1}_2017-03-01".format(user.id, absence_type.id) assert entry["attributes"]["credit"] == 5 assert entry["attributes"]["used-days"] == 2 assert entry["attributes"]["used-duration"] is None assert entry["attributes"]["balance"] == 3 assert len(json["included"]) == 2
def test_absence_credit_get_supervisor(auth_client): user = UserFactory.create() auth_client.user.supervisees.add(user) AbsenceCreditFactory.create_batch(1) AbsenceCreditFactory.create(user=auth_client.user) AbsenceCreditFactory.create(user=user) url = reverse("absence-credit-list") result = auth_client.get(url) assert result.status_code == status.HTTP_200_OK json = result.json() assert len(json["data"]) == 2
def test_user_absence_types(self): absence_type = AbsenceTypeFactory.create() credit = AbsenceCreditFactory.create(date=date.today(), user=self.user, days=5, absence_type=absence_type) AbsenceFactory.create(date=date.today(), user=self.user, type=absence_type) AbsenceFactory.create(date=date.today() - timedelta(days=1), user=self.user, type=absence_type) url = reverse('user-detail', args=[ self.user.id ]) res = self.client.get(url, {'include': 'user_absence_types'}) assert res.status_code == HTTP_200_OK result = self.result(res) rel = result['data']['relationships'] inc = result['included'] assert len(rel['user-absence-types']['data']) == 1 assert len(inc) == 1 assert ( inc[0]['id'] == '{0}-{1}'.format(self.user.id, credit.absence_type.id) ) assert inc[0]['attributes']['credit'] == 5 assert inc[0]['attributes']['balance'] == 3 assert inc[0]['attributes']['used-days'] == 2 assert inc[0]['attributes']['used-duration'] is None