Fakultas Ilmu Komputer UI
Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Fasilkom UI Open Source Software
Kape
Commits
5b785c8d
Commit
5b785c8d
authored
May 23, 2017
by
Joshua Casey
Browse files
[#49][REFACTOR] Added status filter and added tests
parent
44008e6c
Changes
2
Hide whitespace changes
Inline
Side-by-side
core/tests/test_vacancies.py
View file @
5b785c8d
...
...
@@ -205,6 +205,17 @@ class CompanyListsTests(APITestCase):
response
=
self
.
client
.
get
(
url
,
format
=
'json'
)
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_200_OK
)
def
test_company_application_list_with_status
(
self
):
new_user
=
User
.
objects
.
create_user
(
'dummy.company4'
,
'dummy.company4@company.com'
,
'lalala123'
)
new_company
=
Company
.
objects
.
create
(
user
=
new_user
,
description
=
"lalala"
,
status
=
Company
.
VERIFIED
,
logo
=
None
,
address
=
None
)
self
.
client
.
force_authenticate
(
new_user
)
url
=
'/api/companies/'
+
str
(
new_company
.
pk
)
+
'/applications/?status=0'
response
=
self
.
client
.
get
(
url
,
format
=
'json'
)
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_200_OK
)
def
test_company_application_list_unauthorized
(
self
):
new_user
=
User
.
objects
.
create_user
(
'dummy.company3'
,
'dummy.company3@company.com'
,
'lalala123'
)
new_company
=
Company
.
objects
.
create
(
user
=
new_user
,
description
=
"lalala"
,
status
=
Company
.
VERIFIED
,
logo
=
None
,
...
...
@@ -282,3 +293,75 @@ class CompanyListsTests(APITestCase):
url
=
'/api/companies/'
+
str
(
new_company3
.
pk
)
+
'/applications/'
+
str
(
new_vacancy
.
pk
)
+
'/by_vacancy/'
response
=
self
.
client
.
get
(
url
,
format
=
'json'
)
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_403_FORBIDDEN
)
def
test_company_application_list_by_vacancy_with_status
(
self
):
new_user
=
User
.
objects
.
create_user
(
'dummy.company3'
,
'dummy.company3@company.com'
,
'lalala123'
)
new_company
=
Company
.
objects
.
create
(
user
=
new_user
,
description
=
"lalala"
,
status
=
Company
.
VERIFIED
,
logo
=
None
,
address
=
None
)
new_user2
=
User
.
objects
.
create_user
(
'dummy.company4'
,
'dummy.company4@company.com'
,
'lalala123'
)
new_student
=
Student
.
objects
.
create
(
user
=
new_user2
,
npm
=
1234123412
)
new_vacancy
=
Vacancy
.
objects
.
create
(
company
=
new_company
,
verified
=
True
,
open_time
=
datetime
.
fromtimestamp
(
0
),
description
=
"lalala"
,
close_time
=
datetime
.
today
())
new_app
=
Application
.
objects
.
create
(
student
=
new_student
,
vacancy
=
new_vacancy
,
cover_letter
=
"asdasdasd"
)
self
.
client
.
force_authenticate
(
new_user
)
url
=
'/api/companies/'
+
str
(
new_company
.
pk
)
+
'/applications/'
+
str
(
new_vacancy
.
pk
)
+
'/by_vacancy/?status=2'
response
=
self
.
client
.
get
(
url
,
format
=
'json'
)
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_200_OK
)
def
test_company_application_list_by_vacancy_with_bad_status_string
(
self
):
new_user
=
User
.
objects
.
create_user
(
'dummy.company3'
,
'dummy.company3@company.com'
,
'lalala123'
)
new_company
=
Company
.
objects
.
create
(
user
=
new_user
,
description
=
"lalala"
,
status
=
Company
.
VERIFIED
,
logo
=
None
,
address
=
None
)
new_user2
=
User
.
objects
.
create_user
(
'dummy.company4'
,
'dummy.company4@company.com'
,
'lalala123'
)
new_student
=
Student
.
objects
.
create
(
user
=
new_user2
,
npm
=
1234123412
)
new_vacancy
=
Vacancy
.
objects
.
create
(
company
=
new_company
,
verified
=
True
,
open_time
=
datetime
.
fromtimestamp
(
0
),
description
=
"lalala"
,
close_time
=
datetime
.
today
())
new_app
=
Application
.
objects
.
create
(
student
=
new_student
,
vacancy
=
new_vacancy
,
cover_letter
=
"asdasdasd"
)
self
.
client
.
force_authenticate
(
new_user
)
url
=
'/api/companies/'
+
str
(
new_company
.
pk
)
+
'/applications/'
+
str
(
new_vacancy
.
pk
)
+
'/by_vacancy/?status=lalala'
response
=
self
.
client
.
get
(
url
,
format
=
'json'
)
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_400_BAD_REQUEST
)
def
test_company_application_list_by_vacancy_with_bad_status_negative
(
self
):
new_user
=
User
.
objects
.
create_user
(
'dummy.company3'
,
'dummy.company3@company.com'
,
'lalala123'
)
new_company
=
Company
.
objects
.
create
(
user
=
new_user
,
description
=
"lalala"
,
status
=
Company
.
VERIFIED
,
logo
=
None
,
address
=
None
)
new_user2
=
User
.
objects
.
create_user
(
'dummy.company4'
,
'dummy.company4@company.com'
,
'lalala123'
)
new_student
=
Student
.
objects
.
create
(
user
=
new_user2
,
npm
=
1234123412
)
new_vacancy
=
Vacancy
.
objects
.
create
(
company
=
new_company
,
verified
=
True
,
open_time
=
datetime
.
fromtimestamp
(
0
),
description
=
"lalala"
,
close_time
=
datetime
.
today
())
new_app
=
Application
.
objects
.
create
(
student
=
new_student
,
vacancy
=
new_vacancy
,
cover_letter
=
"asdasdasd"
)
self
.
client
.
force_authenticate
(
new_user
)
url
=
'/api/companies/'
+
str
(
new_company
.
pk
)
+
'/applications/'
+
str
(
new_vacancy
.
pk
)
+
'/by_vacancy/?status=-1'
response
=
self
.
client
.
get
(
url
,
format
=
'json'
)
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_400_BAD_REQUEST
)
def
test_company_application_list_by_vacancy_with_bad_status_large
(
self
):
new_user
=
User
.
objects
.
create_user
(
'dummy.company3'
,
'dummy.company3@company.com'
,
'lalala123'
)
new_company
=
Company
.
objects
.
create
(
user
=
new_user
,
description
=
"lalala"
,
status
=
Company
.
VERIFIED
,
logo
=
None
,
address
=
None
)
new_user2
=
User
.
objects
.
create_user
(
'dummy.company4'
,
'dummy.company4@company.com'
,
'lalala123'
)
new_student
=
Student
.
objects
.
create
(
user
=
new_user2
,
npm
=
1234123412
)
new_vacancy
=
Vacancy
.
objects
.
create
(
company
=
new_company
,
verified
=
True
,
open_time
=
datetime
.
fromtimestamp
(
0
),
description
=
"lalala"
,
close_time
=
datetime
.
today
())
new_app
=
Application
.
objects
.
create
(
student
=
new_student
,
vacancy
=
new_vacancy
,
cover_letter
=
"asdasdasd"
)
self
.
client
.
force_authenticate
(
new_user
)
url
=
'/api/companies/'
+
str
(
new_company
.
pk
)
+
'/applications/'
+
str
(
new_vacancy
.
pk
)
+
'/by_vacancy/?status=5'
response
=
self
.
client
.
get
(
url
,
format
=
'json'
)
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_400_BAD_REQUEST
)
core/views/vacancies.py
View file @
5b785c8d
...
...
@@ -130,6 +130,17 @@ class CompanyApplicationViewSet(viewsets.GenericViewSet):
if
vacancy
.
company
!=
company
:
return
Response
({
"error"
:
"forbidden"
},
status
=
status
.
HTTP_403_FORBIDDEN
)
applications
=
Application
.
objects
.
filter
(
vacancy
=
vacancy
)
st
=
request
.
query_params
.
get
(
'status'
,
None
)
if
st
is
not
None
:
try
:
st
=
int
(
st
)
if
st
<
0
or
st
>
4
:
return
Response
({
"error"
:
"status must be an integer between 0 and 4"
},
status
=
status
.
HTTP_400_BAD_REQUEST
)
applications
=
applications
.
filter
(
status
=
st
)
except
:
return
Response
({
"error"
:
"status must be an integer between 0 and 4"
},
\
status
=
status
.
HTTP_400_BAD_REQUEST
)
page
=
self
.
paginate_queryset
(
applications
)
if
page
is
not
None
:
return
self
.
get_paginated_response
(
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment