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
3d1185bb
Commit
3d1185bb
authored
2 years ago
by
Benjamin Hättasch
Browse files
Options
Downloads
Patches
Plain Diff
Add view tests for AKSubmission
This includes a new helper method to assert the existence of a particular message
parent
b2715dcb
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
AKModel/fixtures/model.json
+13
-0
13 additions, 0 deletions
AKModel/fixtures/model.json
AKModel/tests.py
+18
-0
18 additions, 0 deletions
AKModel/tests.py
AKSubmission/tests.py
+126
-1
126 additions, 1 deletion
AKSubmission/tests.py
with
157 additions
and
1 deletion
AKModel/fixtures/model.json
+
13
−
0
View file @
3d1185bb
...
@@ -523,6 +523,19 @@
...
@@ -523,6 +523,19 @@
"updated"
:
"2021-05-04T10:30:59.528Z"
"updated"
:
"2021-05-04T10:30:59.528Z"
}
}
},
},
{
"model"
:
"AKModel.akslot"
,
"pk"
:
5
,
"fields"
:
{
"ak"
:
1
,
"room"
:
null
,
"start"
:
null
,
"duration"
:
"2.00"
,
"fixed"
:
false
,
"event"
:
2
,
"updated"
:
"2022-12-02T12:23:11.856Z"
}
},
{
{
"model"
:
"AKModel.constraintviolation"
,
"model"
:
"AKModel.constraintviolation"
,
"pk"
:
1
,
"pk"
:
1
,
...
...
This diff is collapsed.
Click to expand it.
AKModel/tests.py
+
18
−
0
View file @
3d1185bb
from
typing
import
List
from
django.contrib.auth.models
import
User
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.test
import
TestCase
from
django.urls
import
reverse_lazy
from
django.urls
import
reverse_lazy
...
@@ -38,6 +42,20 @@ class BasicViewTests:
...
@@ -38,6 +42,20 @@ class BasicViewTests:
url
=
reverse_lazy
(
view_name_with_prefix
,
kwargs
=
view_name
[
1
])
url
=
reverse_lazy
(
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
=
""
):
messages
:
List
[
Message
]
=
list
(
get_messages
(
response
.
wsgi_request
))
msg_count
=
"
No message shown to user
"
msg_content
=
"
Wrong message, expected
'
{expected_message}
'"
if
msg_prefix
!=
""
:
msg_count
=
f
"
{
msg_prefix
}
:
{
msg_count
}
"
msg_content
=
f
"
{
msg_prefix
}
:
{
msg_content
}
"
# Check that the last message correctly reports the issue
# (there might be more messages from previous calls that were not already rendered)
self
.
assertGreater
(
len
(
messages
),
0
,
msg
=
msg_count
)
self
.
assertEqual
(
messages
[
-
1
].
message
,
expected_message
,
msg
=
msg_content
)
def
test_views_for_200
(
self
):
def
test_views_for_200
(
self
):
for
view_name
in
self
.
VIEWS
:
for
view_name
in
self
.
VIEWS
:
view_name_with_prefix
,
url
=
self
.
_name_and_url
(
view_name
)
view_name_with_prefix
,
url
=
self
.
_name_and_url
(
view_name
)
...
...
This diff is collapsed.
Click to expand it.
AKSubmission/tests.py
+
126
−
1
View file @
3d1185bb
# Create your tests here.
from
django.test
import
TestCase
from
django.urls
import
reverse_lazy
from
AKModel.models
import
AK
,
AKSlot
from
AKModel.tests
import
BasicViewTests
class
ModelViewTests
(
BasicViewTests
,
TestCase
):
fixtures
=
[
'
model.json
'
]
VIEWS
=
[
(
'
submission_overview
'
,
{
'
event_slug
'
:
'
kif42
'
}),
(
'
ak_detail
'
,
{
'
event_slug
'
:
'
kif42
'
,
'
pk
'
:
1
}),
(
'
ak_history
'
,
{
'
event_slug
'
:
'
kif42
'
,
'
pk
'
:
1
}),
(
'
ak_edit
'
,
{
'
event_slug
'
:
'
kif42
'
,
'
pk
'
:
1
}),
(
'
akslot_add
'
,
{
'
event_slug
'
:
'
kif42
'
,
'
pk
'
:
1
}),
(
'
akmessage_add
'
,
{
'
event_slug
'
:
'
kif42
'
,
'
pk
'
:
1
}),
(
'
akslot_edit
'
,
{
'
event_slug
'
:
'
kif42
'
,
'
pk
'
:
5
}),
(
'
akslot_delete
'
,
{
'
event_slug
'
:
'
kif42
'
,
'
pk
'
:
5
}),
(
'
ak_list
'
,
{
'
event_slug
'
:
'
kif42
'
}),
(
'
ak_list_by_category
'
,
{
'
event_slug
'
:
'
kif42
'
,
'
category_pk
'
:
4
}),
(
'
ak_list_by_track
'
,
{
'
event_slug
'
:
'
kif42
'
,
'
track_pk
'
:
1
}),
(
'
akowner_create
'
,
{
'
event_slug
'
:
'
kif42
'
}),
(
'
akowner_edit
'
,
{
'
event_slug
'
:
'
kif42
'
,
'
slug
'
:
'
a
'
}),
(
'
submit_ak
'
,
{
'
event_slug
'
:
'
kif42
'
,
'
owner_slug
'
:
'
a
'
}),
(
'
submit_ak_wish
'
,
{
'
event_slug
'
:
'
kif42
'
}),
(
'
error_not_configured
'
,
{
'
event_slug
'
:
'
kif42
'
}),
]
APP_NAME
=
'
submit
'
def
test_akslot_edit_delete_prevention
(
self
):
"""
Slots planned already may not be modified or deleted in front end
"""
self
.
client
.
logout
()
view_name_with_prefix
,
url
=
self
.
_name_and_url
((
'
akslot_edit
'
,
{
'
event_slug
'
:
'
kif42
'
,
'
pk
'
:
1
}))
response
=
self
.
client
.
get
(
url
)
self
.
assertEqual
(
response
.
status_code
,
302
,
msg
=
f
"
AK Slot editing (
{
url
}
) possible even though slot was already scheduled
"
)
self
.
_assert_message
(
response
,
"
You cannot edit a slot that has already been scheduled
"
)
view_name_with_prefix
,
url
=
self
.
_name_and_url
((
'
akslot_delete
'
,
{
'
event_slug
'
:
'
kif42
'
,
'
pk
'
:
1
}))
response
=
self
.
client
.
get
(
url
)
self
.
assertEqual
(
response
.
status_code
,
302
,
msg
=
f
"
AK Slot deletion (
{
url
}
) possible even though slot was already scheduled
"
)
self
.
_assert_message
(
response
,
"
You cannot delete a slot that has already been scheduled
"
)
def
test_slot_creation_deletion
(
self
):
ak_args
=
{
'
event_slug
'
:
'
kif42
'
,
'
pk
'
:
1
}
redirect_url
=
reverse_lazy
(
f
"
{
self
.
APP_NAME
}
:ak_detail
"
,
kwargs
=
ak_args
)
count_slots
=
AK
.
objects
.
get
(
pk
=
1
).
akslot_set
.
count
()
create_url
=
reverse_lazy
(
f
"
{
self
.
APP_NAME
}
:akslot_add
"
,
kwargs
=
ak_args
)
response
=
self
.
client
.
post
(
create_url
,
{
'
ak
'
:
1
,
'
event
'
:
2
,
'
duration
'
:
1.5
})
self
.
assertRedirects
(
response
,
redirect_url
,
status_code
=
302
,
target_status_code
=
200
,
msg_prefix
=
"
Did not correctly trigger redirect
"
)
self
.
assertEqual
(
AK
.
objects
.
get
(
pk
=
1
).
akslot_set
.
count
(),
count_slots
+
1
,
msg
=
"
New slot was not correctly saved
"
)
# Get primary key of newly created Slot
slot_pk
=
AK
.
objects
.
get
(
pk
=
1
).
akslot_set
.
order_by
(
'
pk
'
).
last
().
pk
edit_url
=
reverse_lazy
(
f
"
{
self
.
APP_NAME
}
:akslot_edit
"
,
kwargs
=
{
'
event_slug
'
:
'
kif42
'
,
'
pk
'
:
slot_pk
})
response
=
self
.
client
.
get
(
edit_url
)
self
.
assertEqual
(
response
.
status_code
,
200
,
msg
=
f
"
Cant open edit view for newly created slot (
{
edit_url
}
)
"
)
response
=
self
.
client
.
post
(
edit_url
,
{
'
ak
'
:
1
,
'
event
'
:
2
,
'
duration
'
:
2
})
self
.
assertRedirects
(
response
,
redirect_url
,
status_code
=
302
,
target_status_code
=
200
,
msg_prefix
=
"
Did not correctly trigger redirect
"
)
self
.
assertEqual
(
AKSlot
.
objects
.
get
(
pk
=
slot_pk
).
duration
,
2
,
msg
=
"
Slot was not correctly changed
"
)
deletion_url
=
reverse_lazy
(
f
"
{
self
.
APP_NAME
}
:akslot_delete
"
,
kwargs
=
{
'
event_slug
'
:
'
kif42
'
,
'
pk
'
:
slot_pk
})
response
=
self
.
client
.
get
(
deletion_url
)
self
.
assertEqual
(
response
.
status_code
,
200
,
msg
=
"
Cant open deletion view for newly created slot ({deletion_url})
"
)
response
=
self
.
client
.
post
(
deletion_url
,
{})
self
.
assertRedirects
(
response
,
redirect_url
,
status_code
=
302
,
target_status_code
=
200
,
msg_prefix
=
"
Did not correctly trigger redirect
"
)
self
.
assertFalse
(
AKSlot
.
objects
.
filter
(
pk
=
slot_pk
).
exists
(),
msg
=
"
Slot was not correctly deleted
"
)
self
.
assertEqual
(
AK
.
objects
.
get
(
pk
=
1
).
akslot_set
.
count
(),
count_slots
,
msg
=
"
AK still has to many slots
"
)
def
test_ak_owner_editing
(
self
):
# Test editing of new user
edit_url
=
reverse_lazy
(
f
"
{
self
.
APP_NAME
}
:akowner_edit_dispatch
"
,
kwargs
=
{
'
event_slug
'
:
'
kif42
'
})
base_url
=
reverse_lazy
(
f
"
{
self
.
APP_NAME
}
:submission_overview
"
,
kwargs
=
{
'
event_slug
'
:
'
kif42
'
})
response
=
self
.
client
.
post
(
edit_url
,
{
'
owner_id
'
:
-
1
})
self
.
assertRedirects
(
response
,
base_url
,
status_code
=
302
,
target_status_code
=
200
,
msg_prefix
=
"
Did not redirect to start page even though no user was selected
"
)
self
.
_assert_message
(
response
,
"
No user selected
"
)
edit_redirect_url
=
reverse_lazy
(
f
"
{
self
.
APP_NAME
}
:akowner_edit
"
,
kwargs
=
{
'
event_slug
'
:
'
kif42
'
,
'
slug
'
:
'
a
'
})
response
=
self
.
client
.
post
(
edit_url
,
{
'
owner_id
'
:
1
})
self
.
assertRedirects
(
response
,
edit_redirect_url
,
status_code
=
302
,
target_status_code
=
200
,
msg_prefix
=
f
"
Dispatch redirect failed (should go to
{
edit_redirect_url
}
)
"
)
def
test_ak_owner_selection
(
self
):
select_url
=
reverse_lazy
(
f
"
{
self
.
APP_NAME
}
:akowner_select
"
,
kwargs
=
{
'
event_slug
'
:
'
kif42
'
})
create_url
=
reverse_lazy
(
f
"
{
self
.
APP_NAME
}
:akowner_create
"
,
kwargs
=
{
'
event_slug
'
:
'
kif42
'
})
response
=
self
.
client
.
post
(
select_url
,
{
'
owner_id
'
:
-
1
})
self
.
assertRedirects
(
response
,
create_url
,
status_code
=
302
,
target_status_code
=
200
,
msg_prefix
=
"
Did not redirect to user create view even though no user was specified
"
)
add_redirect_url
=
reverse_lazy
(
f
"
{
self
.
APP_NAME
}
:submit_ak
"
,
kwargs
=
{
'
event_slug
'
:
'
kif42
'
,
'
owner_slug
'
:
'
a
'
})
response
=
self
.
client
.
post
(
select_url
,
{
'
owner_id
'
:
1
})
self
.
assertRedirects
(
response
,
add_redirect_url
,
status_code
=
302
,
target_status_code
=
200
,
msg_prefix
=
f
"
Dispatch redirect to ak submission page failed (should go to
{
add_redirect_url
}
)
"
)
def
test_orga_message_submission
(
self
):
form_url
=
reverse_lazy
(
f
"
{
self
.
APP_NAME
}
:akmessage_add
"
,
kwargs
=
{
'
event_slug
'
:
'
kif42
'
,
'
pk
'
:
1
})
detail_url
=
reverse_lazy
(
f
"
{
self
.
APP_NAME
}
:ak_detail
"
,
kwargs
=
{
'
event_slug
'
:
'
kif42
'
,
'
pk
'
:
1
})
count_messages
=
AK
.
objects
.
get
(
pk
=
1
).
akorgamessage_set
.
count
()
response
=
self
.
client
.
get
(
form_url
)
self
.
assertEqual
(
response
.
status_code
,
200
,
msg
=
"
Could not load message form view
"
)
response
=
self
.
client
.
post
(
form_url
,
{
'
ak
'
:
1
,
'
event
'
:
2
,
'
text
'
:
'
Test message text
'
})
self
.
assertRedirects
(
response
,
detail_url
,
status_code
=
302
,
target_status_code
=
200
,
msg_prefix
=
f
"
Did not trigger redirect to ak detail page (
{
detail_url
}
)
"
)
self
.
_assert_message
(
response
,
"
Message to organizers successfully saved
"
)
self
.
assertEqual
(
AK
.
objects
.
get
(
pk
=
1
).
akorgamessage_set
.
count
(),
count_messages
+
1
,
msg
=
"
Message was not correctly saved
"
)
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