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
Iterations
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
KIF
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
No related tags found
1 merge request
!158
Upgrades (bootstrap, fontawesome, django, js dependencies) and static file compression
Pipeline
#129728
passed
2 years ago
Stage: test
Changes
2
Pipelines
1
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
from
django.contrib.messages
import
get_messages
from
django.contrib.messages.storage.base
import
Message
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
,
\
ConstraintViolation
,
DefaultSlot
...
...
@@ -15,6 +15,7 @@ class BasicViewTests:
VIEWS
=
[]
APP_NAME
=
''
VIEWS_STAFF_ONLY
=
[]
EDIT_TESTCASES
=
[]
def
setUp
(
self
):
self
.
staff_user
=
User
.
objects
.
create
(
...
...
@@ -40,7 +41,7 @@ class BasicViewTests:
:rtype: str, str
"""
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
def
_assert_message
(
self
,
response
,
expected_message
,
msg_prefix
=
""
):
...
...
@@ -90,6 +91,58 @@ class BasicViewTests:
self
.
assertEqual
(
response
.
status_code
,
302
,
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
):
fixtures
=
[
'
model.json
'
]
...
...
@@ -114,6 +167,10 @@ class ModelViewTests(BasicViewTests, TestCase):
(
'
admin:new_event_wizard_start
'
,
{}),
]
EDIT_TESTCASES
=
[
{
'
view
'
:
'
admin:default-slots-editor
'
,
'
kwargs
'
:
{
'
event_slug
'
:
'
kif42
'
},
"
admin
"
:
True
},
]
def
test_admin
(
self
):
self
.
client
.
force_login
(
self
.
admin_user
)
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):
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
):
"""
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