From 925334ab5d6aec113a1f15ddee2aefba945c2a05 Mon Sep 17 00:00:00 2001 From: Farah Alhaniy Date: Sun, 6 Oct 2019 18:38:46 +0700 Subject: [PATCH 1/6] Add test for benefits attribute --- core/migrations/0020_merge_20191006_1812.py | 17 ++++++ core/tests/test_create_vacancies.py | 64 ++++++++++++++++++++ db.sqlite3 | Bin 36864 -> 0 bytes kape/settings.py | 2 +- 4 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 core/migrations/0020_merge_20191006_1812.py delete mode 100755 db.sqlite3 diff --git a/core/migrations/0020_merge_20191006_1812.py b/core/migrations/0020_merge_20191006_1812.py new file mode 100644 index 0000000..0a7e8c8 --- /dev/null +++ b/core/migrations/0020_merge_20191006_1812.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.17 on 2019-10-06 11:12 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0017_vacancy_amount'), + ('core', '0019_merge_20191006_0852'), + ('core', '0014_auto_20191004_1340'), + ] + + operations = [ + ] diff --git a/core/tests/test_create_vacancies.py b/core/tests/test_create_vacancies.py index 9d8cd65..a25a9ca 100644 --- a/core/tests/test_create_vacancies.py +++ b/core/tests/test_create_vacancies.py @@ -38,6 +38,21 @@ class CreateAndUpdateVacancyTest(APITestCase): vacancy = Vacancy.objects.first() self.assertEqual(vacancy.amount, 10) + def test_new_vacancy_with_benefits_success(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) + self.client.force_authenticate(user=superuser) + + url = '/api/vacancies/' + response = self.client.post(url, {'company': new_company.pk, 'open_time': datetime.fromtimestamp(0), + 'close_time': datetime.today(), 'name': 'new_vacancy', + 'description': 'new_vacancy ', 'amount': 10, 'benefits':'new_vacancy'}, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + + vacancy = Vacancy.objects.first() + self.assertEqual(vacancy.benefits, 'new_vacancy') + def test_new_vacancy_failed(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, @@ -67,6 +82,21 @@ class CreateAndUpdateVacancyTest(APITestCase): vacancies_count = Vacancy.objects.count() self.assertEqual(vacancies_count, 0) + def test_new_vacancy_with_benefits_failed(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) + self.client.force_authenticate(user=superuser) + + url = '/api/vacancies/' + response = self.client.post(url, {'company': new_company.pk, 'open_time': datetime.fromtimestamp(0), + 'close_time': datetime.today(), 'name': 'new_vacancy', + 'description': 'new_vacancy ', 'amount': 'sepuluh', 'benefits':'new_vacancy'}, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + + vacancies_count = Vacancy.objects.count() + self.assertEqual(vacancies_count, 0) + def test_update_vacancy_success(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, @@ -98,6 +128,23 @@ class CreateAndUpdateVacancyTest(APITestCase): vacancy = Vacancy.objects.first() self.assertEqual(vacancy.amount, 10) + def test_update_vacancy_with_benefits_success(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) + self.client.force_authenticate(user=superuser) + + new_vacancy = Vacancy.objects.create(company=new_company, verified=False, open_time=datetime.fromtimestamp(0), + description="lalala", close_time=datetime.today(), name='new_company') + + url = '/api/vacancies/' + str(new_vacancy.pk) + '/' + response = self.client.patch(url, {'open_time': datetime.fromtimestamp(0), 'close_time': datetime.today(), + 'name': 'new_vacancy2', 'description': 'new_vacancy2', 'amount': 10, 'benefits':'new_vacancy2'}, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + + vacancy = Vacancy.objects.first() + self.assertEqual(vacancy.benefits, 'new_vacancy2') + def test_update_vacancy_failed(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, @@ -128,3 +175,20 @@ class CreateAndUpdateVacancyTest(APITestCase): vacancy = Vacancy.objects.first() self.assertEqual(vacancy.amount, None) + + def test_update_vacancy_with_benefits_failed(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) + self.client.force_authenticate(user=superuser) + + new_vacancy = Vacancy.objects.create(company=new_company, verified=False, open_time=datetime.fromtimestamp(0), + description="lalala", close_time=datetime.today(), name='new_company') + + url = '/api/vacancies/' + str(new_vacancy.pk) + '/' + response = self.client.patch(url, {'open_time': datetime.fromtimestamp(0), 'close_time': datetime.today(), + 'name': 'new_vacancy2', 'description': 'new_vacancy2', 'amount': 'sepuluh', 'benefits':'new_vacancy2'}, format='json') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + vacancy = Vacancy.objects.first() + self.assertEqual(vacancy.amount, None) diff --git a/db.sqlite3 b/db.sqlite3 deleted file mode 100755 index f3a60bbb6b1e532ee1de2e0c6c38aaf677ad575a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36864 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 diff --git a/kape/settings.py b/kape/settings.py index 7529209..85215b7 100755 --- a/kape/settings.py +++ b/kape/settings.py @@ -159,7 +159,7 @@ USE_TZ = True STATIC_URL = '/assets/' STATIC_ROOT = '/home/kape/assets' MEDIA_URL = '/files/' -MEDIA_ROOT = '/home/kape/files' +MEDIA_ROOT = 'C://Users/user/Documents/Efa/Kuliah/PMPL/kape' REST_FRAMEWORK = { # Use Django's standard `django.contrib.auth` permissions, -- GitLab From e267b6c2722598097970b10b182c62e1fe13ad2f Mon Sep 17 00:00:00 2001 From: Farah Alhaniy Date: Sun, 6 Oct 2019 19:15:49 +0700 Subject: [PATCH 2/6] Add benefits to models and views --- core/models/vacancies.py | 1 + core/views/vacancies.py | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core/models/vacancies.py b/core/models/vacancies.py index bdb75cd..5795533 100644 --- a/core/models/vacancies.py +++ b/core/models/vacancies.py @@ -13,6 +13,7 @@ class Vacancy(models.Model): updated = models.DateTimeField(auto_now=True) name = models.CharField(max_length=100, null=False) amount = models.IntegerField(null=True) + benefits = models.TextField(blank=True) class Meta: ordering = ['-updated'] diff --git a/core/views/vacancies.py b/core/views/vacancies.py index f51cfd3..9afcc4e 100644 --- a/core/views/vacancies.py +++ b/core/views/vacancies.py @@ -57,9 +57,10 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): close_time = data['close_time'] name = data['name'] description = data['description'] + benefits = data['benefits'] if close_time < open_time: raise ValidationError('Waktu tutup lowongan harus lebih dari waktu buka lowongan!') - vacancy = Vacancy(company=company, open_time=open_time, close_time=close_time, name=name, description=description) + vacancy = Vacancy(company=company, open_time=open_time, close_time=close_time, name=name, description=description, benefits=benefits) if 'amount' in data: if isinstance(data['amount'], int): vacancy.amount = data['amount'] @@ -75,12 +76,14 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): close_time = data['close_time'] name = data['name'] description = data['description'] + benefits = data['benefits'] if close_time < open_time: raise ValidationError('Waktu tutup lowongan harus lebih dari waktu buka lowongan!') vacancy.open_time = open_time vacancy.close_time = close_time vacancy.name = name vacancy.description = description + vacancy.benefits = benefits if 'amount' in data: if isinstance(data['amount'], int): vacancy.amount = data['amount'] -- GitLab From 21085ab3b89b18e7854a861d968a6f12b5d1860b Mon Sep 17 00:00:00 2001 From: Farah Alhaniy Date: Sun, 6 Oct 2019 20:15:26 +0700 Subject: [PATCH 3/6] Implement benefits --- assets/js/CreateVacancy.jsx | 11 +++++++++++ assets/js/__test__/CreateVacancy-test.jsx | 6 ++++++ assets/js/__test__/VacancyPage-test.jsx | 1 + assets/js/__test__/components/VacancyList-test.jsx | 11 +++++++++++ assets/js/components/VerifyAdminModal.jsx | 7 +++++++ 5 files changed, 36 insertions(+) diff --git a/assets/js/CreateVacancy.jsx b/assets/js/CreateVacancy.jsx index b2bff53..8c79db1 100644 --- a/assets/js/CreateVacancy.jsx +++ b/assets/js/CreateVacancy.jsx @@ -32,12 +32,14 @@ export default class CreateVacancy extends React.Component { close_time: moment(), name: '', description: '', + benefits: '', }; if (this.state.vacancyId) { Server.get(`/vacancies/${this.state.vacancyId}/`).then((r) => { this.setState({ description: r.description, + benefits: r.benefits, name: r.name, open_time: moment(r.open_time), close_time: moment(r.close_time), @@ -63,6 +65,10 @@ export default class CreateVacancy extends React.Component { this.setState({ description: value }); } + handleEditor(value) { + this.setState({ benefits: value }); + } + handleSubmit = (e) => { e.preventDefault(); this.setState({ formLoading: true }); @@ -70,6 +76,7 @@ export default class CreateVacancy extends React.Component { const data = {}; data.name = this.state.name; data.description = this.state.description; + data.benefits = this.state.benefits; data.open_time = this.state.open_time.format(); data.close_time = this.state.close_time.format(); if (!this.state.vacancyId) { @@ -103,6 +110,10 @@ export default class CreateVacancy extends React.Component { { !this.state.loading && } + + { !this.state.loading && + } +
{ updated: '2017-03-28T07:30:10.535000Z', description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla aliquet semper neque a fermentum. Duis ac tellus vitae augue iaculis ultrices. Curabitur commodo et neque nec feugiat. Morbi ac diam vel nunc commodo cursus. Phasellus nulla sapien, hendrerit vitae bibendum at, sollicitudin eu ante. Maecenas maximus, ante eu sollicitudin convallis, mauris nunc posuere risus, eu porttitor diam lacus vitae enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse at lectus a elit sollicitudin tempor. Nullam condimentum, justo nec tincidunt maximus, neque mi vulputate leo, sit amet lacinia massa ex eget sem. Duis ac erat facilisis, fringilla mauris in, consequat neque. In et neque consequat, vehicula magna at, efficitur ante. Mauris ac lacinia nibh.\r\n\r\nProin sagittis, lectus quis maximus varius, libero justo sollicitudin augue, non lacinia risus orci a enim. Curabitur iaculis enim quis ullamcorper commodo. Vivamus id nisi rhoncus, dignissim tellus quis, interdum est. Fusce sollicitudin eu libero ac feugiat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas semper posuere ex, sed accumsan libero iaculis faucibus. Fusce laoreet ac ligula ut consectetur. Donec tortor mauris, rutrum at sodales et, viverra in dolor. Sed bibendum elit et maximus volutpat. Phasellus justo ipsum, laoreet sit amet faucibus eu, ultricies suscipit mauris. Nullam aliquam libero eu ante ultrices mattis. Donec non justo hendrerit neque volutpat placerat. Ut euismod est nec sem mollis, sit amet porttitor massa rhoncus. Aenean id erat sit amet nunc ultrices scelerisque non in ipsum. Curabitur sollicitudin nulla id mi accumsan venenatis.', verified: true, + benefits: 'Makan siang gratis, Waktu kerja fleksibel, Asuransi kesehatan, Liburan berbayar', logo: 'http://localhost:8001/files/company-logo/8a258a48-3bce-4873-b5d1-538b360d0059.png', address: 'Jl. Kebayoran Baru nomor 13, Jakarta Barat', }, @@ -71,6 +72,7 @@ describe('CreateVacancy', () => { createVacancy.setState({ name: 'stub', description: 'stub', + benefits: 'stub', }); createVacancy.handleChange({ target: { name: 'test', value: 'hue' } }); expect(createVacancy.state.test).to.equal('hue'); @@ -87,6 +89,7 @@ describe('CreateVacancy', () => { createVacancy.setState({ name: 'stub', description: 'stub', + benefits: 'stub', }); const openField = ReactTestUtils.findRenderedDOMComponentWithClass(createVacancy, 'open-time-field'); @@ -112,6 +115,7 @@ describe('CreateVacancy', () => { createVacancy.setState({ name: 'stub', description: 'stub', + benefits: 'stub', }); expect(createVacancy.state.formLoading).to.equal(false); @@ -130,6 +134,7 @@ describe('CreateVacancy', () => { createVacancy.setState({ name: 'stub', description: 'stub', + benefits: 'stub', }); const openField = ReactTestUtils.findRenderedDOMComponentWithClass(createVacancy, 'open-time-field'); @@ -157,6 +162,7 @@ describe('CreateVacancy', () => { createVacancy.setState({ name: 'stub', description: 'stub', + benefits: 'stub', }); expect(createVacancy.state.formLoading).to.equal(false); diff --git a/assets/js/__test__/VacancyPage-test.jsx b/assets/js/__test__/VacancyPage-test.jsx index dcccff1..d3295d6 100644 --- a/assets/js/__test__/VacancyPage-test.jsx +++ b/assets/js/__test__/VacancyPage-test.jsx @@ -61,6 +61,7 @@ describe('VacancyPage', () => { updated: '2017-03-28T07:30:10.535000Z', description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla aliquet semper neque a fermentum. Duis ac tellus vitae augue iaculis ultrices. Curabitur commodo et neque nec feugiat. Morbi ac diam vel nunc commodo cursus. Phasellus nulla sapien, hendrerit vitae bibendum at, sollicitudin eu ante. Maecenas maximus, ante eu sollicitudin convallis, mauris nunc posuere risus, eu porttitor diam lacus vitae enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse at lectus a elit sollicitudin tempor. Nullam condimentum, justo nec tincidunt maximus, neque mi vulputate leo, sit amet lacinia massa ex eget sem. Duis ac erat facilisis, fringilla mauris in, consequat neque. In et neque consequat, vehicula magna at, efficitur ante. Mauris ac lacinia nibh.\r\n\r\nProin sagittis, lectus quis maximus varius, libero justo sollicitudin augue, non lacinia risus orci a enim. Curabitur iaculis enim quis ullamcorper commodo. Vivamus id nisi rhoncus, dignissim tellus quis, interdum est. Fusce sollicitudin eu libero ac feugiat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas semper posuere ex, sed accumsan libero iaculis faucibus. Fusce laoreet ac ligula ut consectetur. Donec tortor mauris, rutrum at sodales et, viverra in dolor. Sed bibendum elit et maximus volutpat. Phasellus justo ipsum, laoreet sit amet faucibus eu, ultricies suscipit mauris. Nullam aliquam libero eu ante ultrices mattis. Donec non justo hendrerit neque volutpat placerat. Ut euismod est nec sem mollis, sit amet porttitor massa rhoncus. Aenean id erat sit amet nunc ultrices scelerisque non in ipsum. Curabitur sollicitudin nulla id mi accumsan venenatis.', verified: true, + benefits: 'Makan siang gratis, Waktu kerja fleksibel, Asuransi kesehatan, Liburan berbayar', logo: 'http://localhost:8001/files/company-logo/8a258a48-3bce-4873-b5d1-538b360d0059.png', address: 'Jl. Kebayoran Baru nomor 13, Jakarta Barat', }, diff --git a/assets/js/__test__/components/VacancyList-test.jsx b/assets/js/__test__/components/VacancyList-test.jsx index 0ac2b46..7fd2463 100644 --- a/assets/js/__test__/components/VacancyList-test.jsx +++ b/assets/js/__test__/components/VacancyList-test.jsx @@ -26,6 +26,7 @@ describe('VacancyList', () => { updated: '2017-03-28T07:30:10.535000Z', description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla aliquet semper neque a fermentum. Duis ac tellus vitae augue iaculis ultrices. Curabitur commodo et neque nec feugiat. Morbi ac diam vel nunc commodo cursus. Phasellus nulla sapien, hendrerit vitae bibendum at, sollicitudin eu ante. Maecenas maximus, ante eu sollicitudin convallis, mauris nunc posuere risus, eu porttitor diam lacus vitae enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse at lectus a elit sollicitudin tempor. Nullam condimentum, justo nec tincidunt maximus, neque mi vulputate leo, sit amet lacinia massa ex eget sem. Duis ac erat facilisis, fringilla mauris in, consequat neque. In et neque consequat, vehicula magna at, efficitur ante. Mauris ac lacinia nibh.\r\n\r\nProin sagittis, lectus quis maximus varius, libero justo sollicitudin augue, non lacinia risus orci a enim. Curabitur iaculis enim quis ullamcorper commodo. Vivamus id nisi rhoncus, dignissim tellus quis, interdum est. Fusce sollicitudin eu libero ac feugiat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas semper posuere ex, sed accumsan libero iaculis faucibus. Fusce laoreet ac ligula ut consectetur. Donec tortor mauris, rutrum at sodales et, viverra in dolor. Sed bibendum elit et maximus volutpat. Phasellus justo ipsum, laoreet sit amet faucibus eu, ultricies suscipit mauris. Nullam aliquam libero eu ante ultrices mattis. Donec non justo hendrerit neque volutpat placerat. Ut euismod est nec sem mollis, sit amet porttitor massa rhoncus. Aenean id erat sit amet nunc ultrices scelerisque non in ipsum. Curabitur sollicitudin nulla id mi accumsan venenatis.', verified: true, + benefits: 'Makan siang gratis, Waktu kerja fleksibel, Asuransi kesehatan, Liburan berbayar', logo: 'http://localhost:8001/files/company-logo/8a258a48-3bce-4873-b5d1-538b360d0059.png', address: 'Jl. Kebayoran Baru nomor 13, Jakarta Barat', }, @@ -129,12 +130,14 @@ describe('VacancyList', () => { updated: '2017-05-07T13:22:19.175033Z', description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla aliquet semper neque a fermentum. Duis ac tellus vitae augue iaculis ultrices. Curabitur commodo et neque nec feugiat. Morbi ac diam vel nunc commodo cursus. Phasellus nulla sapien, hendrerit vitae bibendum at, sollicitudin eu ante. Maecenas maximus, ante eu sollicitudin convallis, mauris nunc posuere risus, eu porttitor diam lacus vitae enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse at lectus a elit sollicitudin tempor. Nullam condimentum, justo nec tincidunt maximus, neque mi vulputate leo, sit amet lacinia massa ex eget sem. Duis ac erat facilisis, fringilla mauris in, consequat neque. In et neque consequat, vehicula magna at, efficitur ante. Mauris ac lacinia nibh.\r\n\r\nProin sagittis, lectus quis maximus varius, libero justo sollicitudin augue, non lacinia risus orci a enim. Curabitur iaculis enim quis ullamcorper commodo. Vivamus id nisi rhoncus, dignissim tellus quis, interdum est. Fusce sollicitudin eu libero ac feugiat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas semper posuere ex, sed accumsan libero iaculis faucibus. Fusce laoreet ac ligula ut consectetur. Donec tortor mauris, rutrum at sodales et, viverra in dolor. Sed bibendum elit et maximus volutpat. Phasellus justo ipsum, laoreet sit amet faucibus eu, ultricies suscipit mauris. Nullam aliquam libero eu ante ultrices mattis. Donec non justo hendrerit neque volutpat placerat. Ut euismod est nec sem mollis, sit amet porttitor massa rhoncus. Aenean id erat sit amet nunc ultrices scelerisque non in ipsum. Curabitur sollicitudin nulla id mi accumsan venenatis.', registeredStatus: 1, + benefits: 'Makan siang gratis, Waktu kerja fleksibel, Asuransi kesehatan, Liburan berbayar', logo: null, address: 'Jl. Kebayoran Baru nomor 13, Jakarta Barat', }, verified: true, open_time: '2017-04-26T03:39:11Z', description: 'deskripsi', + benefits: 'keuntungan', close_time: '2017-04-30T03:39:11Z', created: '2017-04-26T03:39:39.916758Z', updated: '2017-04-26T03:41:07.157634Z', @@ -157,12 +160,14 @@ describe('VacancyList', () => { updated: '2017-05-07T13:22:19.175033Z', description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla aliquet semper neque a fermentum. Duis ac tellus vitae augue iaculis ultrices. Curabitur commodo et neque nec feugiat. Morbi ac diam vel nunc commodo cursus. Phasellus nulla sapien, hendrerit vitae bibendum at, sollicitudin eu ante. Maecenas maximus, ante eu sollicitudin convallis, mauris nunc posuere risus, eu porttitor diam lacus vitae enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse at lectus a elit sollicitudin tempor. Nullam condimentum, justo nec tincidunt maximus, neque mi vulputate leo, sit amet lacinia massa ex eget sem. Duis ac erat facilisis, fringilla mauris in, consequat neque. In et neque consequat, vehicula magna at, efficitur ante. Mauris ac lacinia nibh.\r\n\r\nProin sagittis, lectus quis maximus varius, libero justo sollicitudin augue, non lacinia risus orci a enim. Curabitur iaculis enim quis ullamcorper commodo. Vivamus id nisi rhoncus, dignissim tellus quis, interdum est. Fusce sollicitudin eu libero ac feugiat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas semper posuere ex, sed accumsan libero iaculis faucibus. Fusce laoreet ac ligula ut consectetur. Donec tortor mauris, rutrum at sodales et, viverra in dolor. Sed bibendum elit et maximus volutpat. Phasellus justo ipsum, laoreet sit amet faucibus eu, ultricies suscipit mauris. Nullam aliquam libero eu ante ultrices mattis. Donec non justo hendrerit neque volutpat placerat. Ut euismod est nec sem mollis, sit amet porttitor massa rhoncus. Aenean id erat sit amet nunc ultrices scelerisque non in ipsum. Curabitur sollicitudin nulla id mi accumsan venenatis.', registeredStatus: 1, + benefits: 'Makan siang gratis, Waktu kerja fleksibel, Asuransi kesehatan, Liburan berbayar', logo: 'http://localhost:8000/files/company-logo/8a258a48-3bce-4873-b5d1-538b360d0059.png', address: 'Jl. Kebayoran Baru nomor 13, Jakarta Barat', }, verified: true, open_time: '2017-04-26T03:39:11Z', description: 'deskripsi', + benefits: 'keuntungan', close_time: '2017-04-30T03:39:11Z', created: '2017-04-26T03:39:39.916758Z', updated: '2017-04-26T03:41:07.157634Z', @@ -185,12 +190,14 @@ describe('VacancyList', () => { updated: '2017-05-07T13:22:19.175033Z', description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla aliquet semper neque a fermentum. Duis ac tellus vitae augue iaculis ultrices. Curabitur commodo et neque nec feugiat. Morbi ac diam vel nunc commodo cursus. Phasellus nulla sapien, hendrerit vitae bibendum at, sollicitudin eu ante. Maecenas maximus, ante eu sollicitudin convallis, mauris nunc posuere risus, eu porttitor diam lacus vitae enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse at lectus a elit sollicitudin tempor. Nullam condimentum, justo nec tincidunt maximus, neque mi vulputate leo, sit amet lacinia massa ex eget sem. Duis ac erat facilisis, fringilla mauris in, consequat neque. In et neque consequat, vehicula magna at, efficitur ante. Mauris ac lacinia nibh.\r\n\r\nProin sagittis, lectus quis maximus varius, libero justo sollicitudin augue, non lacinia risus orci a enim. Curabitur iaculis enim quis ullamcorper commodo. Vivamus id nisi rhoncus, dignissim tellus quis, interdum est. Fusce sollicitudin eu libero ac feugiat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas semper posuere ex, sed accumsan libero iaculis faucibus. Fusce laoreet ac ligula ut consectetur. Donec tortor mauris, rutrum at sodales et, viverra in dolor. Sed bibendum elit et maximus volutpat. Phasellus justo ipsum, laoreet sit amet faucibus eu, ultricies suscipit mauris. Nullam aliquam libero eu ante ultrices mattis. Donec non justo hendrerit neque volutpat placerat. Ut euismod est nec sem mollis, sit amet porttitor massa rhoncus. Aenean id erat sit amet nunc ultrices scelerisque non in ipsum. Curabitur sollicitudin nulla id mi accumsan venenatis.', registeredStatus: 1, + benefits: 'Makan siang gratis, Waktu kerja fleksibel, Asuransi kesehatan, Liburan berbayar', logo: null, address: 'Jl. Kebayoran Baru nomor 13, Jakarta Barat', }, verified: true, open_time: '2017-04-26T03:39:11Z', description: 'deskripsi', + benefits: 'keuntungan', close_time: '2017-04-30T03:39:11Z', created: '2017-04-26T03:39:39.916758Z', updated: '2017-04-26T03:41:07.157634Z', @@ -213,12 +220,14 @@ describe('VacancyList', () => { updated: '2017-05-07T13:22:19.175033Z', description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla aliquet semper neque a fermentum. Duis ac tellus vitae augue iaculis ultrices. Curabitur commodo et neque nec feugiat. Morbi ac diam vel nunc commodo cursus. Phasellus nulla sapien, hendrerit vitae bibendum at, sollicitudin eu ante. Maecenas maximus, ante eu sollicitudin convallis, mauris nunc posuere risus, eu porttitor diam lacus vitae enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse at lectus a elit sollicitudin tempor. Nullam condimentum, justo nec tincidunt maximus, neque mi vulputate leo, sit amet lacinia massa ex eget sem. Duis ac erat facilisis, fringilla mauris in, consequat neque. In et neque consequat, vehicula magna at, efficitur ante. Mauris ac lacinia nibh.\r\n\r\nProin sagittis, lectus quis maximus varius, libero justo sollicitudin augue, non lacinia risus orci a enim. Curabitur iaculis enim quis ullamcorper commodo. Vivamus id nisi rhoncus, dignissim tellus quis, interdum est. Fusce sollicitudin eu libero ac feugiat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas semper posuere ex, sed accumsan libero iaculis faucibus. Fusce laoreet ac ligula ut consectetur. Donec tortor mauris, rutrum at sodales et, viverra in dolor. Sed bibendum elit et maximus volutpat. Phasellus justo ipsum, laoreet sit amet faucibus eu, ultricies suscipit mauris. Nullam aliquam libero eu ante ultrices mattis. Donec non justo hendrerit neque volutpat placerat. Ut euismod est nec sem mollis, sit amet porttitor massa rhoncus. Aenean id erat sit amet nunc ultrices scelerisque non in ipsum. Curabitur sollicitudin nulla id mi accumsan venenatis.', registeredStatus: 1, + benefits: 'Makan siang gratis, Waktu kerja fleksibel, Asuransi kesehatan, Liburan berbayar', logo: null, address: 'Jl. Kebayoran Baru nomor 13, Jakarta Barat', }, verified: true, open_time: '2017-04-26T03:39:11Z', description: 'deskripsi', + benefits: 'keuntungan', close_time: '2017-04-30T03:39:11Z', created: '2017-04-26T03:39:39.916758Z', updated: '2017-04-26T03:41:07.157634Z', @@ -241,12 +250,14 @@ describe('VacancyList', () => { updated: '2017-05-07T13:22:19.175033Z', description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla aliquet semper neque a fermentum. Duis ac tellus vitae augue iaculis ultrices. Curabitur commodo et neque nec feugiat. Morbi ac diam vel nunc commodo cursus. Phasellus nulla sapien, hendrerit vitae bibendum at, sollicitudin eu ante. Maecenas maximus, ante eu sollicitudin convallis, mauris nunc posuere risus, eu porttitor diam lacus vitae enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse at lectus a elit sollicitudin tempor. Nullam condimentum, justo nec tincidunt maximus, neque mi vulputate leo, sit amet lacinia massa ex eget sem. Duis ac erat facilisis, fringilla mauris in, consequat neque. In et neque consequat, vehicula magna at, efficitur ante. Mauris ac lacinia nibh.\r\n\r\nProin sagittis, lectus quis maximus varius, libero justo sollicitudin augue, non lacinia risus orci a enim. Curabitur iaculis enim quis ullamcorper commodo. Vivamus id nisi rhoncus, dignissim tellus quis, interdum est. Fusce sollicitudin eu libero ac feugiat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas semper posuere ex, sed accumsan libero iaculis faucibus. Fusce laoreet ac ligula ut consectetur. Donec tortor mauris, rutrum at sodales et, viverra in dolor. Sed bibendum elit et maximus volutpat. Phasellus justo ipsum, laoreet sit amet faucibus eu, ultricies suscipit mauris. Nullam aliquam libero eu ante ultrices mattis. Donec non justo hendrerit neque volutpat placerat. Ut euismod est nec sem mollis, sit amet porttitor massa rhoncus. Aenean id erat sit amet nunc ultrices scelerisque non in ipsum. Curabitur sollicitudin nulla id mi accumsan venenatis.', registeredStatus: 1, + benefits: 'Makan siang gratis, Waktu kerja fleksibel, Asuransi kesehatan, Liburan berbayar', logo: null, address: 'Jl. Kebayoran Baru nomor 13, Jakarta Barat', }, verified: true, open_time: '2017-04-26T03:39:11Z', description: 'deskripsi', + benefits: 'keuntungan', close_time: '2017-04-30T03:39:11Z', created: '2017-04-26T03:39:39.916758Z', updated: '2017-04-26T03:41:07.157634Z', diff --git a/assets/js/components/VerifyAdminModal.jsx b/assets/js/components/VerifyAdminModal.jsx index 873ca03..1ac261b 100644 --- a/assets/js/components/VerifyAdminModal.jsx +++ b/assets/js/components/VerifyAdminModal.jsx @@ -46,6 +46,13 @@ export default class VerifyAdminModal extends React.Component { magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + +
Deskripsi Lowongan
+ Makan siang gratis, + Waktu kerja fleksibel + Asuransi kesehatan + Liburan Berbayar +
-- GitLab From 05aeaf6a185970da135e4c418f54db46e73cd25a Mon Sep 17 00:00:00 2001 From: Farah Alhaniy Date: Mon, 7 Oct 2019 00:16:18 +0700 Subject: [PATCH 4/6] Finish test --- assets/js/CreateVacancy.jsx | 9 ++++----- core/migrations/0021_vacancy_benefits.py | 20 ++++++++++++++++++++ core/tests/test_create_vacancies.py | 4 ++-- core/views/vacancies.py | 9 +++++---- kape/settings.py | 2 +- 5 files changed, 32 insertions(+), 12 deletions(-) create mode 100644 core/migrations/0021_vacancy_benefits.py diff --git a/assets/js/CreateVacancy.jsx b/assets/js/CreateVacancy.jsx index 8c79db1..04f6ef2 100644 --- a/assets/js/CreateVacancy.jsx +++ b/assets/js/CreateVacancy.jsx @@ -22,6 +22,7 @@ export default class CreateVacancy extends React.Component { this.handleEditor = this.handleEditor.bind(this); this.setCloseTime = this.setCloseTime.bind(this); this.setOpenTime = this.setOpenTime.bind(this); + this.handleBenefits = this.handleBenefits.bind(this); this.state = { formLoading: false, @@ -107,13 +108,11 @@ export default class CreateVacancy extends React.Component {
- { !this.state.loading && - } + { !this.state.loading && } - { !this.state.loading && - } - + { !this.state.loading && } +
Date: Mon, 7 Oct 2019 09:37:50 +0700 Subject: [PATCH 5/6] Modify modal --- assets/js/CreateVacancy.jsx | 1 + assets/js/components/ApplyModal.jsx | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/assets/js/CreateVacancy.jsx b/assets/js/CreateVacancy.jsx index 04f6ef2..3cb9e15 100644 --- a/assets/js/CreateVacancy.jsx +++ b/assets/js/CreateVacancy.jsx @@ -110,6 +110,7 @@ export default class CreateVacancy extends React.Component { { !this.state.loading && } +
{ !this.state.loading && } diff --git a/assets/js/components/ApplyModal.jsx b/assets/js/components/ApplyModal.jsx index fbd6d62..a485cde 100644 --- a/assets/js/components/ApplyModal.jsx +++ b/assets/js/components/ApplyModal.jsx @@ -79,6 +79,10 @@ export default class ApplyModal extends React.Component {

Deskripsi Lowongan

{
} + +

Keuntungan

+ {
} + {this.props.active && (

-- GitLab From 01acbca9394a0d55d6ffab601fb9ba2ad5009296 Mon Sep 17 00:00:00 2001 From: Farah Alhaniy Date: Fri, 11 Oct 2019 14:15:52 +0700 Subject: [PATCH 6/6] fix serializer and migrations --- assets/js/CreateVacancy.jsx | 8 ++++---- assets/js/components/ApplyModal.jsx | 6 +++--- assets/js/components/Vacancy.jsx | 1 + assets/js/components/VerifyAdminModal.jsx | 7 ------- core/migrations/0022_merge_20191007_1406.py | 16 ++++++++++++++++ core/serializers/vacancies.py | 2 +- 6 files changed, 25 insertions(+), 15 deletions(-) create mode 100644 core/migrations/0022_merge_20191007_1406.py diff --git a/assets/js/CreateVacancy.jsx b/assets/js/CreateVacancy.jsx index 3cb9e15..152663c 100644 --- a/assets/js/CreateVacancy.jsx +++ b/assets/js/CreateVacancy.jsx @@ -19,9 +19,9 @@ export default class CreateVacancy extends React.Component { /* istanbul ignore next */ this.handleChange = this.handleChange.bind(this); this.handleSubmit = this.handleSubmit.bind(this); - this.handleEditor = this.handleEditor.bind(this); this.setCloseTime = this.setCloseTime.bind(this); this.setOpenTime = this.setOpenTime.bind(this); + this.handleDescription = this.handleDescription.bind(this); this.handleBenefits = this.handleBenefits.bind(this); this.state = { @@ -62,11 +62,11 @@ export default class CreateVacancy extends React.Component { this.setState({ [e.target.name]: e.target.value }); }; - handleEditor(value) { + handleDescription(value) { this.setState({ description: value }); } - handleEditor(value) { + handleBenefits(value) { this.setState({ benefits: value }); } @@ -108,7 +108,7 @@ export default class CreateVacancy extends React.Component { - { !this.state.loading && } + { !this.state.loading && }
diff --git a/assets/js/components/ApplyModal.jsx b/assets/js/components/ApplyModal.jsx index a485cde..13ac229 100644 --- a/assets/js/components/ApplyModal.jsx +++ b/assets/js/components/ApplyModal.jsx @@ -79,10 +79,10 @@ export default class ApplyModal extends React.Component {

Deskripsi Lowongan

{
} - -

Keuntungan

+ +

Keuntungan test

{
} - + {this.props.active && (

diff --git a/assets/js/components/Vacancy.jsx b/assets/js/components/Vacancy.jsx index a755cca..855aa97 100644 --- a/assets/js/components/Vacancy.jsx +++ b/assets/js/components/Vacancy.jsx @@ -88,6 +88,7 @@ export default class Vacancy extends React.Component { data={{ header: this.props.data.name, description: this.props.data.description, + benefits: this.props.data.benefits, id: this.props.data.id, }} resume={this.props.user.data.student.resume} diff --git a/assets/js/components/VerifyAdminModal.jsx b/assets/js/components/VerifyAdminModal.jsx index 1ac261b..873ca03 100644 --- a/assets/js/components/VerifyAdminModal.jsx +++ b/assets/js/components/VerifyAdminModal.jsx @@ -46,13 +46,6 @@ export default class VerifyAdminModal extends React.Component { magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - -
Deskripsi Lowongan
- Makan siang gratis, - Waktu kerja fleksibel - Asuransi kesehatan - Liburan Berbayar -
diff --git a/core/migrations/0022_merge_20191007_1406.py b/core/migrations/0022_merge_20191007_1406.py new file mode 100644 index 0000000..33bc49a --- /dev/null +++ b/core/migrations/0022_merge_20191007_1406.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.17 on 2019-10-07 07:06 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0020_merge_20191006_1812'), + ('core', '0021_vacancy_benefits'), + ] + + operations = [ + ] diff --git a/core/serializers/vacancies.py b/core/serializers/vacancies.py index 5938e5f..ea499f9 100644 --- a/core/serializers/vacancies.py +++ b/core/serializers/vacancies.py @@ -33,7 +33,7 @@ class VacancySerializer(serializers.ModelSerializer): class Meta: model = Vacancy fields = ['company', 'verified', 'open_time', 'description', 'close_time', 'created', 'updated', 'name', \ - 'status', 'bookmarked', 'id'] + 'benefits', 'status', 'bookmarked', 'id'] class PostVacancySerializer(serializers.ModelSerializer): -- GitLab