Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Rex Dri
Rex Dri
Commits
f958f5ec
Commit
f958f5ec
authored
Sep 03, 2018
by
Florent Chehab
Browse files
Cleaning and tests added
parent
4c32f310
Pipeline
#26859
passed with stages
in 2 minutes and 26 seconds
Changes
11
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
.coveragerc
View file @
f958f5ec
...
@@ -2,5 +2,9 @@
...
@@ -2,5 +2,9 @@
omit =
omit =
*migrations*
*migrations*
*/tests/*
*/tests/*
manage.py
general/wsgi.py
*/urls.py
*/admin.py
source = .
source = .
backend/load_data/loading_scripts/loadAdminUser.py
View file @
f958f5ec
...
@@ -3,16 +3,13 @@ from django.contrib.auth.models import User
...
@@ -3,16 +3,13 @@ from django.contrib.auth.models import User
class
LoadAdminUser
(
object
):
class
LoadAdminUser
(
object
):
def
__init__
(
self
):
def
__init__
(
self
):
admins
=
User
.
objects
.
filter
(
username
=
"admin"
)
self
.
admin
=
User
.
objects
.
get_or_create
(
if
len
(
admins
)
>
0
:
username
=
"admin"
,
self
.
admin
=
admins
[
0
]
defaults
=
{
'email'
:
'null@null.fr'
,
else
:
'password'
:
'admin'
,
self
.
admin
=
User
.
objects
.
create_superuser
(
'is_staff'
:
True
username
=
'admin'
,
})[
0
]
email
=
'null@null.fr'
,
password
=
'admin'
)
def
get
(
self
):
def
get
(
self
):
return
self
.
admin
return
self
.
admin
backend/models/location/city.py
View file @
f958f5ec
from
django.db
import
models
from
django.db
import
models
from
rest_framework
import
serializers
from
backend.models.location
import
Country
from
backend.models.location
import
Country
from
backend.models.my_model
import
MyModel
,
MyModelSerializer
,
MyModelVersionnedViewSet
from
backend.models.my_model
import
MyModel
,
MyModelSerializer
,
MyModelVersionnedViewSet
from
backend.utils
import
get_model_config
,
get_viewset_permissions
from
backend.utils
import
get_model_config
,
get_viewset_permissions
...
@@ -17,14 +16,6 @@ class City(MyModel):
...
@@ -17,14 +16,6 @@ class City(MyModel):
class
CitySerializer
(
MyModelSerializer
):
class
CitySerializer
(
MyModelSerializer
):
country_url
=
serializers
.
SerializerMethodField
()
def
get_country_url
(
self
,
obj
):
return
serializers
.
HyperlinkedRelatedField
(
view_name
=
'country-detail'
,
read_only
=
True
)
\
.
get_url
(
obj
.
country
,
view_name
=
'country-detail'
,
request
=
self
.
context
[
'request'
],
format
=
None
)
class
Meta
:
class
Meta
:
model
=
City
model
=
City
...
...
backend/models/my_model/myModelVersionned.py
View file @
f958f5ec
...
@@ -52,10 +52,12 @@ class MyModelVersionnedViewSet(MyModelViewSet):
...
@@ -52,10 +52,12 @@ class MyModelVersionnedViewSet(MyModelViewSet):
class
VersionSerializer
(
serializers
.
ModelSerializer
):
class
VersionSerializer
(
serializers
.
ModelSerializer
):
# serialized_data = serializers.JSONField()
data
=
serializers
.
SerializerMethodField
()
data
=
serializers
.
SerializerMethodField
()
def
get_data
(
self
,
obj
):
def
get_data
(
self
,
obj
):
"""
TODO test
"""
data
=
obj
.
serialized_data
data
=
obj
.
serialized_data
try
:
try
:
...
@@ -64,12 +66,9 @@ class VersionSerializer(serializers.ModelSerializer):
...
@@ -64,12 +66,9 @@ class VersionSerializer(serializers.ModelSerializer):
print
(
tmp
.
object
)
print
(
tmp
.
object
)
# Version is valid,
# Version is valid,
obj_serializer
=
tmp
.
object
.
get_serializer
()
obj_serializer
=
tmp
.
object
.
get_serializer
()
if
obj_serializer
is
None
:
new_context
=
dict
(
self
.
context
)
return
"THE PROGRAMMER FORGOT TO SET THE SERIALIZER IN THE MODEL"
new_context
[
'view'
].
action
=
'list'
else
:
return
obj_serializer
(
tmp
.
object
,
context
=
new_context
).
data
new_context
=
dict
(
self
.
context
)
new_context
[
'view'
].
action
=
'list'
return
obj_serializer
(
tmp
.
object
,
context
=
new_context
).
data
except
(
DeserializationError
,
djangoSerializers
.
SerializerDoesNotExist
):
except
(
DeserializationError
,
djangoSerializers
.
SerializerDoesNotExist
):
obj
.
delete
()
# The version is not valid regarding the model, we should delete it !
obj
.
delete
()
# The version is not valid regarding the model, we should delete it !
# Might result in inconsistent nb of versions but that's fine.
# Might result in inconsistent nb of versions but that's fine.
...
@@ -92,5 +91,3 @@ class VersionViewSet(mixins.ListModelMixin,
...
@@ -92,5 +91,3 @@ class VersionViewSet(mixins.ListModelMixin,
model
=
ct
.
model_class
()
model
=
ct
.
model_class
()
obj
=
model
.
objects
.
get
(
pk
=
object_pk
)
obj
=
model
.
objects
.
get
(
pk
=
object_pk
)
return
Version
.
objects
.
get_for_object
(
obj
)
return
Version
.
objects
.
get_for_object
(
obj
)
# queryset = get_queryset()
backend/models/university/universitySemestersDates.py
View file @
f958f5ec
...
@@ -5,14 +5,9 @@ from rest_framework import serializers
...
@@ -5,14 +5,9 @@ from rest_framework import serializers
from
backend.utils
import
get_model_config
,
get_viewset_permissions
from
backend.utils
import
get_model_config
,
get_viewset_permissions
def
check_nones
(
val1
,
val2
):
def
semester_error
(
semester_name
):
if
val1
is
None
and
val2
is
not
None
:
raise
serializers
.
ValidationError
(
raise
serializers
.
ValidationError
(
"Check your dates"
)
"Inconsistent {} semester dates"
.
format
(
semester_name
))
if
val2
is
None
and
val1
is
not
None
:
raise
serializers
.
ValidationError
(
"Check your dates"
)
return
val1
is
None
and
val2
is
None
class
UniversitySemestersDates
(
BasicModule
):
class
UniversitySemestersDates
(
BasicModule
):
...
@@ -34,19 +29,22 @@ class UniversitySemestersDates(BasicModule):
...
@@ -34,19 +29,22 @@ class UniversitySemestersDates(BasicModule):
class
UniversitySemestersDatesSerializer
(
BasicModuleSerializer
):
class
UniversitySemestersDatesSerializer
(
BasicModuleSerializer
):
def
my_validate
(
self
,
attrs
):
def
my_validate
(
self
,
attrs
):
spring_ok
=
check_nones
(
attrs
[
'spring_begin'
],
attrs
[
'spring_end'
])
s_b
,
s_e
=
attrs
[
'spring_begin'
],
attrs
[
'spring_end'
]
autumn_ok
=
check_nones
(
attrs
[
'autumn_begin'
],
attrs
[
'autumn_end'
])
a_b
,
a_e
=
attrs
[
'autumn_begin'
],
attrs
[
'autumn_end'
]
if
not
spring_ok
:
def
test
(
begin
,
end
,
name
):
spring_ok
=
attrs
[
'spring_begin'
]
<
attrs
[
'spring_end'
]
ok
=
(
begin
is
None
and
end
is
None
)
or
(
begin
is
not
None
and
end
is
not
None
)
if
not
autumn_ok
:
if
not
ok
:
autumn_ok
=
attrs
[
'autumn_begin'
]
<
attrs
[
'autumn_end'
]
semester_error
(
name
)
# no check if spring_end < autumn_begin in case info is not available
if
begin
is
not
None
and
(
begin
>
end
):
semester_error
(
name
)
if
not
(
spring_ok
and
autumn_ok
):
raise
serializers
.
ValidationError
(
test
(
s_b
,
s_e
,
'spring'
)
"Check your dates !"
)
# TODO better error
test
(
a_b
,
a_e
,
'autumn'
)
if
s_b
is
None
and
a_b
is
None
:
semester_error
(
'autaumn and spring'
)
return
attrs
return
attrs
...
...
backend/tests/test_moderation.py
View file @
f958f5ec
...
@@ -227,16 +227,5 @@ class ModerationTestCase(WithUserTestCase):
...
@@ -227,16 +227,5 @@ class ModerationTestCase(WithUserTestCase):
}
}
api_end_point
=
"/api/"
+
\
api_end_point
=
"/api/"
+
\
find_api_end_point_for_viewset
(
"UniversityDriViewSet"
)
+
"/"
find_api_end_point_for_viewset
(
"UniversityDriViewSet"
)
+
"/"
print
(
api_end_point
)
self
.
_submit_post_test
(
self
.
dri_client
,
self
.
_submit_post_test
(
self
.
dri_client
,
data
,
api_end_point
)
data
,
api_end_point
)
# instance = self._test_retreive_instance(data_1)
# self._test_updated_val(instance, null=False)
# self._test_moderated_val(instance, null=False)
# self.assertEqual(instance.updated_by, self.authenticated_user)
# self.assertEqual(instance.moderated_by, self.authenticated_user)
# self._test_retreive_instance_in_moderation(
# instance, expected_fail=True
# )
backend/tests/test_mymodel_validate.py
0 → 100644
View file @
f958f5ec
from
django.test
import
TestCase
from
backend.models.my_model.myModel
import
validate_obj_model_lv
import
pytest
from
django.core.exceptions
import
ValidationError
from
backend.permissions
import
OBJ_MODERATION_PERMISSIONS
class
MyModelTestCase
(
TestCase
):
def
test_my_model_validation
(
self
):
with
pytest
.
raises
(
ValidationError
):
value
=
"bernard"
validate_obj_model_lv
(
value
)
for
key
in
OBJ_MODERATION_PERMISSIONS
:
validate_obj_model_lv
(
OBJ_MODERATION_PERMISSIONS
[
key
])
backend/tests/test_scholarhip_validate.py
0 → 100644
View file @
f958f5ec
from
django.test
import
TestCase
from
backend.models.module.scholarship
import
ScholarshipSerializer
import
pytest
from
rest_framework.validators
import
ValidationError
class
ScholarshipTestCase
(
TestCase
):
def
test_scholarhip_validation
(
self
):
ser
=
ScholarshipSerializer
()
with
pytest
.
raises
(
ValidationError
):
attrs
=
{
'amount_max'
:
100
,
'amount_min'
:
200
}
ser
.
my_validate
(
attrs
)
attrs
=
{
'amount_max'
:
200
,
'amount_min'
:
100
}
ser
.
my_validate
(
attrs
)
backend/tests/test_semester_dates_validate.py
0 → 100644
View file @
f958f5ec
from
django.test
import
TestCase
from
backend.models.university
import
UniversitySemestersDatesSerializer
import
pytest
from
rest_framework.validators
import
ValidationError
semesters
=
[
'spring_begin'
,
'spring_end'
,
'autumn_begin'
,
'autumn_end'
]
class
SemesterDatesTestCase
(
TestCase
):
def
test_validation
(
self
):
def
build
(
l
):
return
{
sem
:
val
for
sem
,
val
in
zip
(
semesters
,
l
)}
def
_test_attrs_error
(
attrs
):
with
pytest
.
raises
(
ValidationError
):
self
.
ser
.
my_validate
(
attrs
)
self
.
ser
=
UniversitySemestersDatesSerializer
()
_test_attrs_error
(
build
([
None
]
*
4
))
_test_attrs_error
(
build
([
None
,
3
,
None
,
None
]))
_test_attrs_error
(
build
([
2
,
3
,
3
,
2
]))
self
.
ser
.
my_validate
(
build
([
2
,
3
,
None
,
None
]))
self
.
ser
.
my_validate
(
build
([
2
,
3
,
2
,
3
]))
backend/tests/test_validation_url.py
0 → 100644
View file @
f958f5ec
from
django.test
import
TestCase
import
pytest
from
rest_framework.validators
import
ValidationError
as
RFValidationError
from
django.core.validators
import
ValidationError
as
DJValidationError
from
backend.models.tag.validators.url
import
validate_extension
,
validate_url
class
ValidationUrlTestCase
(
TestCase
):
@
classmethod
def
setUpTestData
(
cls
):
cls
.
good
=
[
"https://www.epfl.ch/publ6d4772210.svg"
,
"http://google.fr/image.jpg"
]
cls
.
bad
=
[
"google"
]
pass
def
test_validate_extension
(
self
):
for
url
in
self
.
good
:
validate_extension
([
"svg"
,
'jpg'
],
url
)
for
url
in
self
.
good
+
self
.
bad
:
with
pytest
.
raises
(
RFValidationError
):
validate_extension
([
'png'
],
url
)
def
test_validate_url
(
self
):
config_1
=
{}
config_2
=
{
"validators"
:
{
"extension"
:
[
"jpg"
,
"jpeg"
,
"png"
,
"svg"
]}}
config_3
=
{
"validators"
:
{
"inconnu_au_bataillon"
:
None
}}
for
url
in
self
.
good
:
validate_url
(
config_1
,
url
)
validate_url
(
config_2
,
url
)
with
pytest
.
raises
(
Exception
):
validate_url
(
config_3
,
url
)
for
url
in
self
.
bad
:
with
pytest
.
raises
(
DJValidationError
):
validate_url
(
config_1
,
url
)
validate_url
(
config_2
,
url
)
general/tests.py
deleted
100644 → 0
View file @
4c32f310
from
django.test
import
TestCase
from
django.contrib.auth.models
import
User
from
django.test.client
import
Client
class
SuperUserTest
(
TestCase
):
def
setUp
(
self
):
password
=
'root'
self
.
my_admin
=
User
.
objects
.
create_superuser
(
'myuser'
,
'myemail@test.com'
,
password
)
self
.
c
=
Client
()
self
.
c
.
login
(
username
=
self
.
my_admin
.
username
,
password
=
password
)
def
test_created
(
self
):
"""
Simple test to check if we can create a superuser. We had issues in the past.
"""
self
.
assertTrue
(
self
.
my_admin
.
is_superuser
)
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