Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
thalia
concrexit
Commits
2e7507bc
Commit
2e7507bc
authored
Jul 28, 2019
by
Sébastiaan Versteeg
Browse files
Merge branch 'test-close-announcement' into 'master'
Add tests for close announcement See merge request
!1313
parents
422cd6e0
e2770eb0
Changes
2
Hide whitespace changes
Inline
Side-by-side
website/announcements/tests.py
0 → 100644
View file @
2e7507bc
from
django.contrib.auth.models
import
AnonymousUser
,
User
from
django.contrib.sessions.middleware
import
SessionMiddleware
from
django.test
import
TestCase
,
RequestFactory
from
django.urls
import
reverse
from
announcements.views
import
close_announcement
class
AnnouncementCloseTestCase
(
TestCase
):
def
setUp
(
self
):
self
.
factory
=
RequestFactory
()
self
.
user
=
User
.
objects
.
create_user
(
username
=
'thom'
,
email
=
'test@example.com'
,
password
=
'top secret'
,
)
self
.
middleware
=
SessionMiddleware
()
def
test_get_request
(
self
):
for
user
in
[
self
.
user
,
AnonymousUser
()]:
request
=
self
.
factory
.
get
(
reverse
(
'announcements:close-announcement'
))
self
.
middleware
.
process_request
(
request
)
with
self
.
subTest
(
user
=
user
):
request
.
user
=
user
response
=
close_announcement
(
request
)
self
.
assertEqual
(
response
.
status_code
,
405
)
def
test_post_no_id
(
self
):
request
=
self
.
factory
.
post
(
reverse
(
'announcements:close-announcement'
))
self
.
middleware
.
process_request
(
request
)
request
.
user
=
AnonymousUser
()
response
=
close_announcement
(
request
)
self
.
assertEqual
(
response
.
status_code
,
400
)
def
test_post_id_string
(
self
):
request
=
self
.
factory
.
post
(
reverse
(
'announcements:close-announcement'
),
{
'id'
:
'bla'
})
self
.
middleware
.
process_request
(
request
)
request
.
user
=
AnonymousUser
()
response
=
close_announcement
(
request
)
self
.
assertEqual
(
response
.
status_code
,
400
)
def
test_valid_request_anonymous
(
self
):
request
=
self
.
factory
.
post
(
reverse
(
'announcements:close-announcement'
),
{
'id'
:
3
})
self
.
middleware
.
process_request
(
request
)
request
.
user
=
AnonymousUser
()
response
=
close_announcement
(
request
)
self
.
assertEqual
(
response
.
status_code
,
204
)
self
.
assertIn
(
'closed_announcements'
,
request
.
session
)
self
.
assertIn
(
3
,
request
.
session
[
'closed_announcements'
])
self
.
assertTrue
(
request
.
session
.
modified
)
self
.
assertEqual
(
response
.
content
,
b
''
)
def
test_valid_request_logged_in
(
self
):
request
=
self
.
factory
.
post
(
reverse
(
'announcements:close-announcement'
),
{
'id'
:
3
})
self
.
middleware
.
process_request
(
request
)
request
.
user
=
self
.
user
response
=
close_announcement
(
request
)
self
.
assertEqual
(
response
.
status_code
,
204
)
self
.
assertIn
(
'closed_announcements'
,
request
.
session
)
self
.
assertIn
(
3
,
request
.
session
[
'closed_announcements'
])
self
.
assertEqual
(
response
.
content
,
b
''
)
def
test_valid_alread_canceled
(
self
):
request
=
self
.
factory
.
post
(
reverse
(
'announcements:close-announcement'
),
{
'id'
:
3
})
self
.
middleware
.
process_request
(
request
)
request
.
session
[
'closed_announcements'
]
=
[
3
]
request
.
user
=
AnonymousUser
()
response
=
close_announcement
(
request
)
self
.
assertEqual
(
response
.
status_code
,
204
)
self
.
assertIn
(
'closed_announcements'
,
request
.
session
)
self
.
assertIn
(
3
,
request
.
session
[
'closed_announcements'
])
self
.
assertEqual
(
len
(
request
.
session
[
'closed_announcements'
]),
1
)
self
.
assertTrue
(
request
.
session
.
modified
)
self
.
assertEqual
(
response
.
content
,
b
''
)
website/announcements/views.py
View file @
2e7507bc
...
...
@@ -12,7 +12,11 @@ def close_announcement(request):
"""
if
'id'
not
in
request
.
POST
:
return
HttpResponseBadRequest
(
"no id specified"
)
announcement_id
=
int
(
request
.
POST
[
'id'
])
try
:
announcement_id
=
int
(
request
.
POST
[
'id'
])
except
ValueError
:
return
HttpResponseBadRequest
(
"no integer id specified"
)
# if we do not have a list of closed announcements yet:
if
'closed_announcements'
not
in
request
.
session
:
request
.
session
[
'closed_announcements'
]
=
[]
# cannot use sets here :(
...
...
Write
Preview
Supports
Markdown
0%
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!
Cancel
Please
register
or
sign in
to comment