예제 #1
0
    def test_handle_import_twice(self):
        ''' re-importing books '''
        shelf = self.user.shelf_set.filter(identifier='read').first()
        import_job = models.ImportJob.objects.create(user=self.user)
        datafile = pathlib.Path(__file__).parent.joinpath('data/goodreads.csv')
        csv_file = open(datafile, 'r')
        for index, entry in enumerate(list(csv.DictReader(csv_file))):
            import_item = models.ImportItem.objects.create(
                job_id=import_job.id, index=index, data=entry, book=self.book)
            break

        with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay'):
            goodreads_import.handle_imported_book(self.user, import_item,
                                                  False, 'public')
            goodreads_import.handle_imported_book(self.user, import_item,
                                                  False, 'public')

        shelf.refresh_from_db()
        self.assertEqual(shelf.books.first(), self.book)

        readthrough = models.ReadThrough.objects.get(user=self.user)
        self.assertEqual(readthrough.book, self.book)
        # I can't remember how to create dates and I don't want to look it up.
        self.assertEqual(readthrough.start_date.year, 2020)
        self.assertEqual(readthrough.start_date.month, 10)
        self.assertEqual(readthrough.start_date.day, 21)
        self.assertEqual(readthrough.finish_date.year, 2020)
        self.assertEqual(readthrough.finish_date.month, 10)
        self.assertEqual(readthrough.finish_date.day, 25)
예제 #2
0
    def test_handle_imported_book_already_shelved(self):
        ''' goodreads import added a book, this adds related connections '''
        with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay'):
            shelf = self.user.shelf_set.filter(identifier='to-read').first()
            models.ShelfBook.objects.create(shelf=shelf,
                                            user=self.user,
                                            book=self.book)

        import_job = models.ImportJob.objects.create(user=self.user)
        datafile = pathlib.Path(__file__).parent.joinpath('data/goodreads.csv')
        csv_file = open(datafile, 'r')
        for index, entry in enumerate(list(csv.DictReader(csv_file))):
            import_item = models.ImportItem.objects.create(
                job_id=import_job.id, index=index, data=entry, book=self.book)
            break

        with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay'):
            goodreads_import.handle_imported_book(self.user, import_item,
                                                  False, 'public')

        shelf.refresh_from_db()
        self.assertEqual(shelf.books.first(), self.book)
        self.assertIsNone(
            self.user.shelf_set.get(identifier='read').books.first())
        readthrough = models.ReadThrough.objects.get(user=self.user)
        self.assertEqual(readthrough.book, self.book)
        self.assertEqual(readthrough.start_date.year, 2020)
        self.assertEqual(readthrough.start_date.month, 10)
        self.assertEqual(readthrough.start_date.day, 21)
        self.assertEqual(readthrough.finish_date.year, 2020)
        self.assertEqual(readthrough.finish_date.month, 10)
        self.assertEqual(readthrough.finish_date.day, 25)
예제 #3
0
    def test_handle_imported_book_reviews_disabled(self):
        ''' goodreads review import '''
        import_job = models.ImportJob.objects.create(user=self.user)
        datafile = pathlib.Path(__file__).parent.joinpath('data/goodreads.csv')
        csv_file = open(datafile, 'r')
        entry = list(csv.DictReader(csv_file))[2]
        import_item = models.ImportItem.objects.create(job_id=import_job.id,
                                                       index=0,
                                                       data=entry,
                                                       book=self.book)

        with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay'):
            goodreads_import.handle_imported_book(self.user, import_item,
                                                  False, 'unlisted')
        self.assertFalse(
            models.Review.objects.filter(book=self.book,
                                         user=self.user).exists())
예제 #4
0
    def test_handle_imported_book_review(self):
        ''' goodreads review import '''
        import_job = models.ImportJob.objects.create(user=self.user)
        datafile = pathlib.Path(__file__).parent.joinpath('data/goodreads.csv')
        csv_file = open(datafile, 'r')
        entry = list(csv.DictReader(csv_file))[2]
        import_item = models.ImportItem.objects.create(job_id=import_job.id,
                                                       index=0,
                                                       data=entry,
                                                       book=self.book)

        with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay'):
            goodreads_import.handle_imported_book(self.user, import_item, True,
                                                  'unlisted')
        review = models.Review.objects.get(book=self.book, user=self.user)
        self.assertEqual(review.content, 'mixed feelings')
        self.assertEqual(review.rating, 2)
        self.assertEqual(review.published_date.year, 2019)
        self.assertEqual(review.published_date.month, 7)
        self.assertEqual(review.published_date.day, 8)
        self.assertEqual(review.privacy, 'unlisted')