diff --git a/assets/js/__test__/components/Vacancy-test.jsx b/assets/js/__test__/components/Vacancy-test.jsx index 9f1e253be4d99c08928d497fd48ffa00f183b6c3..7a4d61b7f7d3c0ba4a65fa458f94c3af65fd5a98 100644 --- a/assets/js/__test__/components/Vacancy-test.jsx +++ b/assets/js/__test__/components/Vacancy-test.jsx @@ -8,6 +8,7 @@ describe('Vacancy', () => { const fetchMock = require('fetch-mock'); const response = { close_time: '2019-03-28T05:55:42Z', + apply_before: '28 March 2019' company: { address: 'kebayoran baru', id: 1, @@ -17,7 +18,7 @@ describe('Vacancy', () => { created: '2017-03-28T07:05:47.128672Z', description: 'Lorem ipsum dolbh.', id: 3, - name: 'Software Engineer', + name: 'Software Engineer', open_time: '2017-03-28T05:55:38Z', updated: '2017-03-28T07:34:13.122093Z', verified: true, @@ -25,6 +26,7 @@ describe('Vacancy', () => { const response2 = { close_time: '2019-03-28T05:55:42Z', + apply_before: '28 March 2019' company: { address: 'kebayoran baru', id: 1, @@ -44,6 +46,7 @@ describe('Vacancy', () => { role: 'company', data: { url: 'http://localhost:8001/api/users/8/', + username: 'Tutuplapak', email: '', is_staff: false, diff --git a/assets/js/components/Vacancy.jsx b/assets/js/components/Vacancy.jsx index a755cca4af553ec413c1e6dd5eb80bd977b7811f..11077dce7768f1dab3fb38ccbb5cc122afea0dfd 100644 --- a/assets/js/components/Vacancy.jsx +++ b/assets/js/components/Vacancy.jsx @@ -125,7 +125,7 @@ export default class Vacancy extends React.Component { <h4>{ this.props.data.name }</h4> { this.props.data.company.name }<br /> { this.props.data.company.address }<br /><br /> - <b>{`Ditutup ${moment(moment(this.props.data.close_time)).fromNow()}`}</b> + <b>{this.props.data.apply_before}</b> </Grid.Column> <Grid.Column floated="right" > <Grid.Row textAlign="center"> diff --git a/core/models/vacancies.py b/core/models/vacancies.py index f2b5dc4956206082a74c1e656b05a698d8c01d18..44ddc83f6e0291960533fa57cafa69cb15d79f05 100644 --- a/core/models/vacancies.py +++ b/core/models/vacancies.py @@ -1,7 +1,8 @@ from django.db import models from core.models.accounts import Company, Student - +import datetime +from django.utils import timezone class Vacancy(models.Model): company = models.ForeignKey(Company, related_name="vacancies", null=False) @@ -13,6 +14,12 @@ class Vacancy(models.Model): updated = models.DateTimeField(auto_now=True) name = models.CharField(max_length=100, null=False) + @property + def apply_before(self): + if(self.close_time<timezone.now()): + return "Pendaftaran ditutup" + return "Daftar sebelum "+self.close_time.strftime('%d')+" "+self.close_time.strftime('%B')+" "+self.close_time.strftime('%Y') + class Meta: ordering = ['-updated'] @@ -32,3 +39,4 @@ class Application(models.Model): class Meta: unique_together = (("student", "vacancy"),) + diff --git a/core/serializers/vacancies.py b/core/serializers/vacancies.py index 313f2064622806a59994a83eba2ea82f0eb7a4a8..eb2b1b8521218b1e64f5c9783b9eed8bce222c5c 100644 --- a/core/serializers/vacancies.py +++ b/core/serializers/vacancies.py @@ -32,7 +32,7 @@ class VacancySerializer(serializers.ModelSerializer): class Meta: model = Vacancy - fields = ['company', 'verified', 'open_time', 'description', 'close_time', 'created', 'updated', 'name', \ + fields = ['company', 'verified', 'open_time', 'description', 'close_time', 'created','apply_before', 'updated', 'name', \ 'status', 'bookmarked', 'id'] diff --git a/core/tests/__init__.py b/core/tests/__init__.py index e8d87c6482286bd702d604fd44d22315c9d42b2c..00530978ffb05843347b6e219bf410138f1dd30d 100755 --- a/core/tests/__init__.py +++ b/core/tests/__init__.py @@ -1,4 +1,4 @@ # __init__.py from core.tests.test_accounts import LoginTests, RegisterTests -from core.tests.test_vacancies import ApplicationTests, BookmarkApplicationTests, CompanyListsTests +from core.tests.test_vacancies import ApplicationTests, BookmarkApplicationTests, CompanyListsTests, VacancyTest from core.tests.test_feedbacks import FeedbacksTests diff --git a/core/tests/test_vacancies.py b/core/tests/test_vacancies.py index 1667ac14aaed6ec90c9f50562ea9c96ea363b47d..12fff282c2a22df10ab9e10a71ba3049b21dd3f1 100644 --- a/core/tests/test_vacancies.py +++ b/core/tests/test_vacancies.py @@ -7,6 +7,8 @@ from rest_framework.test import APITestCase from core.models.accounts import Company, Student, Supervisor from core.models.vacancies import Vacancy, Application +from datetime import timedelta +from django.utils import timezone class ApplicationTests(APITestCase): @@ -165,6 +167,7 @@ class VacancyTest(APITestCase): response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) + def test_unverified_vacancy_list(self): superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') self.client.force_authenticate(user=superuser) @@ -173,12 +176,42 @@ class VacancyTest(APITestCase): response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) + def test_fail_on_unverified_user_vacancy_list(self): url = '/api/vacancies/' response = self.client.post(url, format='json') self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) + + def test_vacancy_is_closed(self): + superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, + address=None) + + new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), + description="lalala", close_time=timezone.now() - timedelta(minutes = 10)) + self.client.force_authenticate(user=superuser) + + response = new_vacancy.apply_before + + self.assertEqual(response, "Pendaftaran ditutup") + + def test_vacancy_is_closed(self): + superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, + address=None) + + new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), + description="lalala", close_time=timezone.now() + timedelta(minutes = 10)) + self.client.force_authenticate(user=superuser) + + response = new_vacancy.apply_before + + self.assertNotEqual(response, "Pendaftaran ditutup") + + + class CompanyListsTests(APITestCase): def test_company_vacancy_list(self): new_user = User.objects.create_user('dummy.company3', 'dummy.company3@company.com', 'lalala123') diff --git a/core/views/vacancies.py b/core/views/vacancies.py index 39f7422e70863a92c50a6f623b391ed8e4d8209b..e909d3da9535103046d63d1fbfdee734717e6092 100644 --- a/core/views/vacancies.py +++ b/core/views/vacancies.py @@ -40,6 +40,8 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): if verified.lower() in {"no", "false", "f", "0"}: vacancies = vacancies.filter(verified=False) page = self.paginate_queryset(vacancies) + print(vacancies) + print(request) if page is not None: return self.get_paginated_response(VacancySerializer(page, many=True, context={'request': request}).data) return Response(VacancySerializer(vacancies, many=True, context={'request': request}).data)