Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
AKPlanning
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Felix Blanke
AKPlanning
Commits
2ce0400a
Commit
2ce0400a
authored
2 years ago
by
Benjamin Hättasch
Browse files
Options
Downloads
Patches
Plain Diff
Add further tests to check sending of forms with little overhead
parent
26423909
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
AKModel/tests.py
+59
-2
59 additions, 2 deletions
AKModel/tests.py
AKSubmission/tests.py
+9
-0
9 additions, 0 deletions
AKSubmission/tests.py
with
68 additions
and
2 deletions
AKModel/tests.py
+
59
−
2
View file @
2ce0400a
...
@@ -5,7 +5,7 @@ from django.contrib.auth.models import User
...
@@ -5,7 +5,7 @@ from django.contrib.auth.models import User
from
django.contrib.messages
import
get_messages
from
django.contrib.messages
import
get_messages
from
django.contrib.messages.storage.base
import
Message
from
django.contrib.messages.storage.base
import
Message
from
django.test
import
TestCase
from
django.test
import
TestCase
from
django.urls
import
reverse_lazy
from
django.urls
import
reverse_lazy
,
reverse
from
AKModel.models
import
Event
,
AKOwner
,
AKCategory
,
AKTrack
,
AKRequirement
,
AK
,
Room
,
AKSlot
,
AKOrgaMessage
,
\
from
AKModel.models
import
Event
,
AKOwner
,
AKCategory
,
AKTrack
,
AKRequirement
,
AK
,
Room
,
AKSlot
,
AKOrgaMessage
,
\
ConstraintViolation
,
DefaultSlot
ConstraintViolation
,
DefaultSlot
...
@@ -15,6 +15,7 @@ class BasicViewTests:
...
@@ -15,6 +15,7 @@ class BasicViewTests:
VIEWS
=
[]
VIEWS
=
[]
APP_NAME
=
''
APP_NAME
=
''
VIEWS_STAFF_ONLY
=
[]
VIEWS_STAFF_ONLY
=
[]
EDIT_TESTCASES
=
[]
def
setUp
(
self
):
def
setUp
(
self
):
self
.
staff_user
=
User
.
objects
.
create
(
self
.
staff_user
=
User
.
objects
.
create
(
...
@@ -40,7 +41,7 @@ class BasicViewTests:
...
@@ -40,7 +41,7 @@ class BasicViewTests:
:rtype: str, str
:rtype: str, str
"""
"""
view_name_with_prefix
=
f
"
{
self
.
APP_NAME
}
:
{
view_name
[
0
]
}
"
if
self
.
APP_NAME
!=
""
else
view_name
[
0
]
view_name_with_prefix
=
f
"
{
self
.
APP_NAME
}
:
{
view_name
[
0
]
}
"
if
self
.
APP_NAME
!=
""
else
view_name
[
0
]
url
=
reverse
_lazy
(
view_name_with_prefix
,
kwargs
=
view_name
[
1
])
url
=
reverse
(
view_name_with_prefix
,
kwargs
=
view_name
[
1
])
return
view_name_with_prefix
,
url
return
view_name_with_prefix
,
url
def
_assert_message
(
self
,
response
,
expected_message
,
msg_prefix
=
""
):
def
_assert_message
(
self
,
response
,
expected_message
,
msg_prefix
=
""
):
...
@@ -90,6 +91,58 @@ class BasicViewTests:
...
@@ -90,6 +91,58 @@ class BasicViewTests:
self
.
assertEqual
(
response
.
status_code
,
302
,
self
.
assertEqual
(
response
.
status_code
,
302
,
msg
=
f
"
{
view_name_with_prefix
}
(
{
url
}
) still accessible for deactivated user
"
)
msg
=
f
"
{
view_name_with_prefix
}
(
{
url
}
) still accessible for deactivated user
"
)
def
_to_sendable_value
(
self
,
v
):
"""
Create representation sendable via POST from form data
:param v: value to prepare
:type v: any
:return: prepared value (normally either raw value or primary key of complex object)
"""
if
type
(
v
)
==
list
:
return
[
e
.
pk
for
e
in
v
]
if
type
(
v
)
==
"
RelatedManager
"
:
return
[
e
.
pk
for
e
in
v
.
all
()]
return
v
def
test_submit_edit_form
(
self
):
"""
Test edit forms in the most simple way (sending them again unchanged)
"""
for
testcase
in
self
.
EDIT_TESTCASES
:
self
.
_test_submit_edit_form
(
testcase
)
def
_test_submit_edit_form
(
self
,
testcase
):
name
,
url
=
self
.
_name_and_url
((
testcase
[
"
view
"
],
testcase
[
"
kwargs
"
]))
form_name
=
testcase
.
get
(
"
form_name
"
,
"
form
"
)
expected_code
=
testcase
.
get
(
"
expected_code
"
,
302
)
if
"
target_view
"
in
testcase
.
keys
():
kwargs
=
testcase
.
get
(
"
target_kwargs
"
,
testcase
[
"
kwargs
"
])
_
,
target_url
=
self
.
_name_and_url
((
testcase
[
"
target_view
"
],
kwargs
))
else
:
target_url
=
url
expected_message
=
testcase
.
get
(
"
expected_message
"
,
""
)
admin_user
=
testcase
.
get
(
"
admin
"
,
False
)
if
admin_user
:
self
.
client
.
force_login
(
self
.
admin_user
)
else
:
self
.
client
.
logout
()
response
=
self
.
client
.
get
(
url
)
self
.
assertEqual
(
response
.
status_code
,
200
,
msg
=
f
"
{
name
}
: Could not load edit form via GET (
{
url
}
)
"
)
form
=
response
.
context
[
form_name
]
data
=
{
k
:
self
.
_to_sendable_value
(
v
)
for
k
,
v
in
form
.
initial
.
items
()}
response
=
self
.
client
.
post
(
url
,
data
=
data
)
if
expected_code
==
200
:
self
.
assertEqual
(
response
.
status_code
,
200
,
msg
=
f
"
{
name
}
: Did not return 200 (
{
url
}
"
)
elif
expected_code
==
302
:
self
.
assertRedirects
(
response
,
target_url
,
msg_prefix
=
f
"
{
name
}
: Did not redirect (
{
url
}
->
{
target_url
}
"
)
if
expected_message
!=
""
:
self
.
_assert_message
(
response
,
expected_message
,
msg_prefix
=
f
"
{
name
}
"
)
class
ModelViewTests
(
BasicViewTests
,
TestCase
):
class
ModelViewTests
(
BasicViewTests
,
TestCase
):
fixtures
=
[
'
model.json
'
]
fixtures
=
[
'
model.json
'
]
...
@@ -114,6 +167,10 @@ class ModelViewTests(BasicViewTests, TestCase):
...
@@ -114,6 +167,10 @@ class ModelViewTests(BasicViewTests, TestCase):
(
'
admin:new_event_wizard_start
'
,
{}),
(
'
admin:new_event_wizard_start
'
,
{}),
]
]
EDIT_TESTCASES
=
[
{
'
view
'
:
'
admin:default-slots-editor
'
,
'
kwargs
'
:
{
'
event_slug
'
:
'
kif42
'
},
"
admin
"
:
True
},
]
def
test_admin
(
self
):
def
test_admin
(
self
):
self
.
client
.
force_login
(
self
.
admin_user
)
self
.
client
.
force_login
(
self
.
admin_user
)
for
model
in
self
.
ADMIN_MODELS
:
for
model
in
self
.
ADMIN_MODELS
:
...
...
This diff is collapsed.
Click to expand it.
AKSubmission/tests.py
+
9
−
0
View file @
2ce0400a
...
@@ -32,6 +32,15 @@ class ModelViewTests(BasicViewTests, TestCase):
...
@@ -32,6 +32,15 @@ class ModelViewTests(BasicViewTests, TestCase):
APP_NAME
=
'
submit
'
APP_NAME
=
'
submit
'
EDIT_TESTCASES
=
[
{
'
view
'
:
'
ak_edit
'
,
'
target_view
'
:
'
ak_detail
'
,
'
kwargs
'
:
{
'
event_slug
'
:
'
kif42
'
,
'
pk
'
:
1
},
'
expected_message
'
:
"
AK successfully updated
"
},
{
'
view
'
:
'
akslot_edit
'
,
'
target_view
'
:
'
ak_detail
'
,
'
kwargs
'
:
{
'
event_slug
'
:
'
kif42
'
,
'
pk
'
:
5
},
'
target_kwargs
'
:
{
'
event_slug
'
:
'
kif42
'
,
'
pk
'
:
1
},
'
expected_message
'
:
"
AK Slot successfully updated
"
},
{
'
view
'
:
'
akowner_edit
'
,
'
target_view
'
:
'
submission_overview
'
,
'
kwargs
'
:
{
'
event_slug
'
:
'
kif42
'
,
'
slug
'
:
'
a
'
},
'
target_kwargs
'
:
{
'
event_slug
'
:
'
kif42
'
},
'
expected_message
'
:
"
Person Info successfully updated
"
},
]
def
test_akslot_edit_delete_prevention
(
self
):
def
test_akslot_edit_delete_prevention
(
self
):
"""
"""
Slots planned already may not be modified or deleted in front end
Slots planned already may not be modified or deleted in front end
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment