fix tests

This commit is contained in:
Hugh Rundle 2024-01-29 12:28:37 +11:00
parent 2c231acebe
commit 765fc1e43d
No known key found for this signature in database
GPG key ID: A7E35779918253F9
2 changed files with 130 additions and 15 deletions

View file

@ -1,16 +1,11 @@
"""test bookwyrm user export functions"""
import datetime
import json
from unittest.mock import patch
from django.core.serializers.json import DjangoJSONEncoder
from django.test import TestCase
from django.test.utils import override_settings
from django.utils import timezone
from django.test import TestCase
from bookwyrm import models
import bookwyrm.models.bookwyrm_export_job as export_job
class BookwyrmExportJob(TestCase):
@ -143,17 +138,136 @@ class BookwyrmExportJob(TestCase):
book=self.edition,
)
self.job = models.BookwyrmExportJob.objects.create(user=self.local_user)
self.job = models.BookwyrmExportJob.objects.create(
user=self.local_user, export_json={}
)
def test_export_saved_lists_task(self):
"""test saved list task"""
def test_add_book_to_user_export_job(self):
"""does AddBookToUserExportJob ...add the book to the export?"""
self.job.export_json["books"] = []
self.job.save()
with patch("bookwyrm.models.bookwyrm_export_job.AddFileToTar.start_job"):
model = models.bookwyrm_export_job
edition_job = model.AddBookToUserExportJob.objects.create(
edition=self.edition, parent_job=self.job
)
edition_job.start_job()
self.job.refresh_from_db()
self.assertIsNotNone(self.job.export_json["books"])
self.assertEqual(len(self.job.export_json["books"]), 1)
book = self.job.export_json["books"][0]
self.assertEqual(book["work"]["id"], self.work.remote_id)
self.assertEqual(len(book["authors"]), 1)
self.assertEqual(len(book["shelves"]), 1)
self.assertEqual(len(book["lists"]), 1)
self.assertEqual(len(book["comments"]), 1)
self.assertEqual(len(book["reviews"]), 1)
self.assertEqual(len(book["quotations"]), 1)
self.assertEqual(len(book["readthroughs"]), 1)
def test_start_export_task(self):
"""test saved list task saves initial json and data"""
with patch("bookwyrm.models.bookwyrm_export_job.json_export.delay"):
models.bookwyrm_export_job.start_export_task(
job_id=self.job.id, no_children=False
)
print(self.job.user)
print(self.job.export_data)
print(self.job.export_json)
# IDK how to test this...
pass
self.job.refresh_from_db()
self.assertIsNotNone(self.job.export_data)
self.assertIsNotNone(self.job.export_json)
self.assertEqual(self.job.export_json["name"], self.local_user.name)
def test_export_saved_lists_task(self):
"""test export_saved_lists_task adds the saved lists"""
models.bookwyrm_export_job.export_saved_lists_task(
job_id=self.job.id, no_children=False
)
self.job.refresh_from_db()
self.assertIsNotNone(self.job.export_json["saved_lists"])
self.assertEqual(
self.job.export_json["saved_lists"][0], self.saved_list.remote_id
)
def test_export_follows_task(self):
"""test export_follows_task adds the follows"""
models.bookwyrm_export_job.export_follows_task(
job_id=self.job.id, no_children=False
)
self.job.refresh_from_db()
self.assertIsNotNone(self.job.export_json["follows"])
self.assertEqual(self.job.export_json["follows"][0], self.rat_user.remote_id)
def test_export_blocks_task(self):
"""test export_blocks_task adds the blocks"""
models.bookwyrm_export_job.export_blocks_task(
job_id=self.job.id, no_children=False
)
self.job.refresh_from_db()
self.assertIsNotNone(self.job.export_json["blocks"])
self.assertEqual(self.job.export_json["blocks"][0], self.badger_user.remote_id)
def test_export_reading_goals_task(self):
"""test export_reading_goals_task adds the goals"""
models.bookwyrm_export_job.export_reading_goals_task(
job_id=self.job.id, no_children=False
)
self.job.refresh_from_db()
self.assertIsNotNone(self.job.export_json["goals"])
self.assertEqual(self.job.export_json["goals"][0]["goal"], 128937123)
def test_json_export(self):
"""test json_export job adds settings"""
with patch(
"bookwyrm.models.bookwyrm_export_job.export_saved_lists_task.delay"
), patch(
"bookwyrm.models.bookwyrm_export_job.export_follows_task.delay"
), patch(
"bookwyrm.models.bookwyrm_export_job.export_blocks_task.delay"
), patch(
"bookwyrm.models.bookwyrm_export_job.trigger_books_jobs.delay"
):
models.bookwyrm_export_job.json_export(
job_id=self.job.id, no_children=False
)
self.job.refresh_from_db()
self.assertIsNotNone(self.job.export_json["settings"])
self.assertFalse(self.job.export_json["settings"]["show_goal"])
self.assertEqual(
self.job.export_json["settings"]["preferred_timezone"],
"America/Los Angeles",
)
self.assertEqual(
self.job.export_json["settings"]["default_post_privacy"], "followers"
)
self.assertFalse(self.job.export_json["settings"]["show_suggested_users"])
def test_get_books_for_user(self):
"""does get_books_for_user get all the books"""
data = models.bookwyrm_export_job.get_books_for_user(self.local_user)
self.assertEqual(len(data), 1)
self.assertEqual(data[0].title, "Example Edition")

View file

@ -41,7 +41,8 @@ class ExportUserViews(TestCase):
request = self.factory.post("")
request.user = self.local_user
export = views.ExportUser.as_view()(request)
with patch("bookwyrm.models.bookwyrm_export_job.BookwyrmExportJob.start_job"):
export = views.ExportUser.as_view()(request)
self.assertIsInstance(export, HttpResponse)
self.assertEqual(export.status_code, 302)