Example #1
0
    def test_add_book_new_other_ownership(self):
        """Test the view adding a book to a library"""
        book = Book(title="Some really annoying book")
        book.save()
        existing_ownership = Ownership(owner=self.bib,book=book,copies=10)
        existing_ownership.save()

        data = {
            'copies':42,
        }

        response = self.client.post(reverse('book_add_this_to_my_library',kwargs={'book_id':book.id}),data)
        
        self.assertEqual(response.status_code, 302)     
        
        try:
            ownership = Ownership.objects.get(owner__id=self.bib.id,book__id=book.id)
        except Ownership.DoesNotExist:
            ownership = None

        self.assertIsNotNone(ownership)
        self.assertEqual(ownership.id,existing_ownership.id)
        self.assertRedirects(response, reverse('book_detail',args=[book.id]))

        response = self.client.get(reverse('book_detail',args=[book.id]))
        self.assertContains(response, self.bib.username.title() + " (" + str(existing_ownership.copies+data['copies']) + ")")
        
        self.client.logout()
Example #2
0
 def test_ownership_new_other_ownership(self):
     """Test the algorithm determining if a new ownership is necessary"""
     book = Book(title="Some annoying book")
     book.save()
     ownership = Ownership(book=book,owner=self.bib)
     existing_ownership = Ownership(book=book,owner=self.bib,copies=15)
     existing_ownership.save()
     self.assertFalse(determine_new_ownership_necessary(ownership,existing_ownership))
Example #3
0
    def test_book_remove_from_my_library_not_mine(self):
        
        book = Book(title="The Hitchhikers guide to Django Unit Tests without special caracter")
        book.save()

        book.owners.clear()
        ownership = Ownership(book=book,owner=self.bob)
        ownership.save()

        response = self.client.get(reverse('book_remove_from_library',kwargs={'book_id':book.id}))
        self.assertEqual(response.status_code, 302)
        self.assertRedirects(response, reverse('book_list'))

        self.client.logout()
Example #4
0
    def form_valid(self, form):
        book = form.save(commit=False)
        book.on_shelf = self.kwargs.get('on_shelf',True)
        book.save()
        for owner in form.cleaned_data['owners']:
            ownership = Ownership()
            ownership.book = book
            ownership.owner = owner
            ownership.save()

        # Create a discussion onto forum.
        discussion = Discussion()
        if book.author:
            discussion.title = _("Discussion on %(book)s (%(author)s)") % {'author':book.author,'book':book.title}
        else:
            discussion.title = _("Discussion on %(book)s") % {'book':book.title}
        discussion.author = self.request.user
        discussion.save()

        messages.add_message(self.request, messages.SUCCESS, self.success_message % {'title':book.title})
        if book.on_shelf:
            return redirect('book_detail',book_id=book.id)
        else:
            return redirect('book_box_list')
Example #5
0
    def test_book_remove_from_my_library(self):
        
        book = Book(title="The Hitchhikers guide to bloblob Tests without special caracter")
        book.save()

        ownership = Ownership(book=book,owner=self.bob)
        ownership.save()
        ownership = Ownership(book=book,owner=self.bib)
        ownership.save()

        response = self.client.get(reverse('book_remove_from_library',kwargs={'book_id':book.id}))
        self.assertEqual(response.status_code, 200)
        self.assertContains(response, "Êtes-vous certain que vous souhaitez supprimer \"%(object)s\" ?" % {'object':book.title})

        self.client.logout()