def test_list_genera(self): """Test listing genera""" sample_insectGenus() sample_insectGenus(name='test 2') res = self.client.get(GENUS_URL) genera = models.InsectGenera.objects.all().order_by('id') serializer = serializers.InsectGeneraSerializer(genera, many=True) self.assertEqual(res.status_code, status.HTTP_200_OK) self.assertEqual(res.data, serializer.data)
def test_create_specie_no_name_fail(self): """Test creating a specie without name should fail""" genus = sample_insectGenus() payload = {'name': '', 'genus': genus.id} res = self.client.post(SPECIE_URL, payload) self.assertEqual(res.status_code, status.HTTP_400_BAD_REQUEST)
def test_specie_admin_required(self): """Test admin is required""" genus = sample_insectGenus() payload = {'name': 'specie test name', 'genus': genus.id} res = self.client.post(SPECIE_URL, payload) self.assertEqual(res.status_code, status.HTTP_403_FORBIDDEN)
def test_retrieve_genus(self): """Test retrieving a genus""" genus = sample_insectGenus() url = detail_genus_url(genus.id) res = self.client.get(url) serializer = serializers.InsectGeneraSerializer(genus) self.assertEqual(res.status_code, status.HTTP_200_OK) self.assertEqual(res.data, serializer.data)
def test_update_genus(self): """Test updating genus""" genus = sample_insectGenus() tribe = sample_insectTribe(name='other tribe') payload = {'name': 'new genus name', 'tribe': tribe.id} url = detail_genus_url(genus.id) res = self.client.patch(url, payload) self.assertEqual(res.status_code, status.HTTP_200_OK) genus.refresh_from_db() self.assertEqual(genus.name, payload['name']) self.assertEqual(genus.tribe.id, payload['tribe'])
def test_create_specie(self): """Test creating a specie""" genus = sample_insectGenus() godfather = sample_insectGodfather() payload = { 'name': 'specie test name', 'genus': genus.id, 'godfather': godfather.id, 'year': 2010 } res = self.client.post(SPECIE_URL, payload) self.assertEqual(res.status_code, status.HTTP_201_CREATED) specie = models.InsectSpecies.objects.get(id=res.data['id']) self.assertEqual(specie.name, payload['name']) self.assertEqual(specie.genus.id, payload['genus'])
def test_update_specie(self): """Test updating specie""" specie = sample_insectSpecie() genus = sample_insectGenus(name='other genus') godfather = sample_insectGodfather(name='other godfather') payload = { 'name': 'new specie name', 'genus': genus.id, 'godfather': godfather.id } url = detail_specie_url(specie.id) res = self.client.patch(url, payload) self.assertEqual(res.status_code, status.HTTP_200_OK) specie.refresh_from_db() self.assertEqual(specie.name, payload['name']) self.assertEqual(specie.genus.id, payload['genus'])