mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2025-01-14 11:15:46 +00:00
Add tests
This commit is contained in:
parent
b7545bf0dd
commit
c13e7479c3
3 changed files with 126 additions and 1 deletions
|
@ -59,6 +59,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{% if book_pages_lowest and book_pages_highest %}
|
||||||
<div class="columns is-mobile is-align-items-center mt-5">
|
<div class="columns is-mobile is-align-items-center mt-5">
|
||||||
<div class="column is-2 is-offset-1">
|
<div class="column is-2 is-offset-1">
|
||||||
<a href="{{ book_pages_lowest.local_path }}">{% include 'snippets/book_cover.html' with book=book_pages_lowest cover_class='is-w-auto-tablet is-h-l-mobile' %}</a>
|
<a href="{{ book_pages_lowest.local_path }}">{% include 'snippets/book_cover.html' with book=book_pages_lowest cover_class='is-w-auto-tablet is-h-l-mobile' %}</a>
|
||||||
|
@ -103,6 +104,7 @@
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
<div class="column is-one-fifth is-offset-two-fifths">
|
<div class="column is-one-fifth is-offset-two-fifths">
|
||||||
|
|
118
bookwyrm/tests/views/test_annual_summary.py
Normal file
118
bookwyrm/tests/views/test_annual_summary.py
Normal file
|
@ -0,0 +1,118 @@
|
||||||
|
"""testing the annual summary page"""
|
||||||
|
from datetime import datetime
|
||||||
|
from unittest.mock import patch
|
||||||
|
|
||||||
|
from django.contrib.auth.models import AnonymousUser
|
||||||
|
from django.http import Http404
|
||||||
|
from django.template.response import TemplateResponse
|
||||||
|
from django.test import TestCase
|
||||||
|
from django.test.client import RequestFactory
|
||||||
|
|
||||||
|
from bookwyrm import models, views
|
||||||
|
from bookwyrm.tests.validate_html import validate_html
|
||||||
|
|
||||||
|
|
||||||
|
class AnnualSummary(TestCase):
|
||||||
|
"""views"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
"""we need basic test data and mocks"""
|
||||||
|
self.factory = RequestFactory()
|
||||||
|
with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch(
|
||||||
|
"bookwyrm.activitystreams.populate_stream_task.delay"
|
||||||
|
):
|
||||||
|
self.local_user = models.User.objects.create_user(
|
||||||
|
"mouse@local.com",
|
||||||
|
"mouse@mouse.com",
|
||||||
|
"mouseword",
|
||||||
|
local=True,
|
||||||
|
localname="mouse",
|
||||||
|
remote_id="https://example.com/users/mouse",
|
||||||
|
)
|
||||||
|
self.work = models.Work.objects.create(title="Test Work")
|
||||||
|
self.book = models.Edition.objects.create(
|
||||||
|
title="Example Edition",
|
||||||
|
remote_id="https://example.com/book/1",
|
||||||
|
parent_work=self.work,
|
||||||
|
pages=300,
|
||||||
|
)
|
||||||
|
self.review = models.Review.objects.create(
|
||||||
|
name="Review name",
|
||||||
|
content="test content",
|
||||||
|
rating=3.0,
|
||||||
|
user=self.local_user,
|
||||||
|
book=self.book,
|
||||||
|
)
|
||||||
|
self.anonymous_user = AnonymousUser
|
||||||
|
self.anonymous_user.is_authenticated = False
|
||||||
|
|
||||||
|
self.year = 2020
|
||||||
|
models.SiteSettings.objects.create()
|
||||||
|
|
||||||
|
def test_annual_summary_not_authenticated(self, *_):
|
||||||
|
"""there are so many views, this just makes sure it DOESN’T LOAD"""
|
||||||
|
view = views.AnnualSummary.as_view()
|
||||||
|
request = self.factory.get("")
|
||||||
|
request.user = self.anonymous_user
|
||||||
|
|
||||||
|
with patch(
|
||||||
|
"bookwyrm.views.annual_summary.is_year_available"
|
||||||
|
) as is_year_available:
|
||||||
|
is_year_available.return_value = True
|
||||||
|
with self.assertRaises(Http404):
|
||||||
|
view(request, self.year)
|
||||||
|
|
||||||
|
def test_annual_summary_wrong_year(self, *_):
|
||||||
|
"""there are so many views, this just makes sure it DOESN’T LOAD"""
|
||||||
|
view = views.AnnualSummary.as_view()
|
||||||
|
request = self.factory.get("")
|
||||||
|
request.user = self.anonymous_user
|
||||||
|
|
||||||
|
with patch(
|
||||||
|
"bookwyrm.views.annual_summary.is_year_available"
|
||||||
|
) as is_year_available:
|
||||||
|
is_year_available.return_value = False
|
||||||
|
with self.assertRaises(Http404):
|
||||||
|
view(request, self.year)
|
||||||
|
|
||||||
|
def test_annual_summary_empty_page(self, *_):
|
||||||
|
"""there are so many views, this just makes sure it LOADS"""
|
||||||
|
view = views.AnnualSummary.as_view()
|
||||||
|
request = self.factory.get("")
|
||||||
|
request.user = self.local_user
|
||||||
|
|
||||||
|
with patch(
|
||||||
|
"bookwyrm.views.annual_summary.is_year_available"
|
||||||
|
) as is_year_available:
|
||||||
|
is_year_available.return_value = True
|
||||||
|
result = view(request, self.year)
|
||||||
|
self.assertIsInstance(result, TemplateResponse)
|
||||||
|
validate_html(result.render())
|
||||||
|
self.assertEqual(result.status_code, 200)
|
||||||
|
|
||||||
|
def test_annual_summary_page(self, *_):
|
||||||
|
"""there are so many views, this just makes sure it LOADS"""
|
||||||
|
|
||||||
|
shelf = self.local_user.shelf_set.get(identifier="read")
|
||||||
|
|
||||||
|
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||||
|
models.ShelfBook.objects.create(
|
||||||
|
book=self.book,
|
||||||
|
user=self.local_user,
|
||||||
|
shelf=shelf,
|
||||||
|
shelved_date=datetime(2020, 1, 1),
|
||||||
|
)
|
||||||
|
|
||||||
|
view = views.AnnualSummary.as_view()
|
||||||
|
request = self.factory.get("")
|
||||||
|
request.user = self.local_user
|
||||||
|
|
||||||
|
with patch(
|
||||||
|
"bookwyrm.views.annual_summary.is_year_available"
|
||||||
|
) as is_year_available:
|
||||||
|
is_year_available.return_value = True
|
||||||
|
result = view(request, self.year)
|
||||||
|
|
||||||
|
self.assertIsInstance(result, TemplateResponse)
|
||||||
|
validate_html(result.render())
|
||||||
|
self.assertEqual(result.status_code, 200)
|
|
@ -61,6 +61,9 @@ class AnnualSummary(View):
|
||||||
|
|
||||||
user = request.user
|
user = request.user
|
||||||
|
|
||||||
|
if not user.is_authenticated:
|
||||||
|
raise Http404(f"Login or register {year} to access this page")
|
||||||
|
|
||||||
read_book_ids_in_year = get_read_book_ids_in_year(user, year)
|
read_book_ids_in_year = get_read_book_ids_in_year(user, year)
|
||||||
|
|
||||||
if len(read_book_ids_in_year) == 0:
|
if len(read_book_ids_in_year) == 0:
|
||||||
|
@ -95,7 +98,9 @@ class AnnualSummary(View):
|
||||||
"books_total": len(read_books_in_year),
|
"books_total": len(read_books_in_year),
|
||||||
"books": read_books_in_year,
|
"books": read_books_in_year,
|
||||||
"pages_total": page_stats["pages__sum"],
|
"pages_total": page_stats["pages__sum"],
|
||||||
"pages_average": round(page_stats["pages__avg"]),
|
"pages_average": round(
|
||||||
|
page_stats["pages__avg"] if page_stats["pages__avg"] else 0
|
||||||
|
),
|
||||||
"book_pages_lowest": book_list_by_pages.first(),
|
"book_pages_lowest": book_list_by_pages.first(),
|
||||||
"book_pages_highest": book_list_by_pages.last(),
|
"book_pages_highest": book_list_by_pages.last(),
|
||||||
"no_page_number": no_page_list,
|
"no_page_number": no_page_list,
|
||||||
|
|
Loading…
Reference in a new issue