def test_attach_author_to_source(self): """Attaching one author to the source works.""" homer = Author(surname="Homer", folder=self.folder) homer.save() self.odyssey.authors.add(homer) self.assertEqual(str(self.odyssey), "Odyssey (HOMER)") self.assertEqual(self.odyssey.authors.count(), 1)
def test_add_source(self): henryTest = Author(first_name="Henry", last_name="Test", surname="", folder=self.folder) henryTest.save() logsuc = self.client.login(username='******', password='******') self.assertTrue(logsuc) response = self.client.post(reverse(addSource), {'title': 'A test source', 'authors': henryTest.pk, 'metadatas': '{"Editeur": "Flammarion", "Collection": "collec"}'}) self.assertEqual(response.status_code, 200)
def test_detach_author_from_source(self): """Removing an author from a source doesn't delete the author from the database.""" homer = Author(surname="Homer", folder=self.folder) homer.save() self.odyssey.authors.add(homer) self.odyssey.authors.remove(homer) self.assertEqual(str(self.odyssey), "Odyssey (ANONYMOUS)") self.assertEqual(self.odyssey.authors.count(), 0) reHomer = Author.objects.get(surname="Homer") self.assertEqual(reHomer, homer)
def test_to_dict(self): homer = Author(surname="Homer", folder=self.folder) homer.save() metaTrad = SourceMetadata(name="Traductor") metaTrad.save() metaInfo = SourceInfos(metadata=metaTrad, value="Thomas Hobbes") metaInfo.save() self.odyssey.authors.add(homer) self.odyssey.metadatas.add(metaInfo) self.assertEqual(self.odyssey.to_dict(), {'title': 'Odyssey', 'authors': [homer.pk], 'metadata': [{metaTrad.name: metaInfo.value}]})
def test_not_colliding_metadatas(self): henryTest = Author(first_name="Henry", last_name="Test", surname="", folder=self.folder) henryTest.save() metadata = SourceMetadata(name='Editeur') metadata.save() # Metadata entered with initial lowercase ("editeur") # should be recognized as the uppercase initial ("Editeur") self.client.login(username='******', password='******') response = self.client.post(reverse(addSource), {'title': 'A test source', 'authors': henryTest.pk, 'metadatas': '{"editeur":"Flammarion", "Collection":"collec"}' }) self.assertEqual(response.status_code, 200) self.assertEqual(SourceMetadata.objects.filter( name__icontains="editeur" ).count(), 1)
def addAuthor(request): """Read a form containing authors values. Every values must be here, but null values will be accepted. Saves in the databases and return a successful JSON message. If we tried to get from the URL or the fields are not complete, we return a failure message.""" if request.method == 'POST': if mustHaveFields(["first_name", "last_name", "surname"], request.POST): folder_id = get_current_folder_id(request) new_author = Author(first_name=request.POST["first_name"], last_name=request.POST["last_name"], surname=request.POST["surname"], folder_id=folder_id) new_author.save() return json_creation_success(new_author) else: return json_error('Missing fields.') else: return json_error('Only POST accepted.')
def test_attach_authors_to_source(self): """Attaching many authors is recognized.""" homer = Author(surname="Homer", folder=self.folder) virgil = Author(surname="Virgil", folder=self.folder) homer.save() virgil.save() self.odyssey.authors.add(homer, virgil) self.assertEqual(str(self.odyssey), "Odyssey (HOMER ET AL.)") self.assertEqual(self.odyssey.authors.count(), 2)