diff --git a/api/tests.py b/api/tests.py index 1f98c4a..bcca56e 100644 --- a/api/tests.py +++ b/api/tests.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 from django.test import TestCase, Client from django.contrib.auth.models import User from django.conf import settings @@ -18,31 +19,31 @@ class DuckClassTest(WebTest): self.user = User.objects.create_user(username='test', password='test') - spec = Species.objects.create(name = 'duck') + spec = Species.objects.create(name='duck') - loc = Location.objects.create(name = 'temp') + loc = Location.objects.create(name='temp') - self.comp_bad = Competence.objects.create(name = 'test1', - added_by = self.user) + self.comp_bad = Competence.objects.create(name='test1', + added_by=self.user) - self.comp_good = Competence.objects.create(name = 'test2', - added_by = self.user) + self.comp_good = Competence.objects.create(name='test2', + added_by=self.user) - self.duck = Duck.objects.create(species = spec, + self.duck = Duck.objects.create(species=spec, name='test duck', - location = loc, - donated_by = self.user, + location=loc, + donated_by=self.user, color='123456') - DuckCompetence.objects.create(duck = self.duck, - comp = self.comp_bad, - up_minutes = bad_minutes, - down_minutes = 0) + DuckCompetence.objects.create(duck=self.duck, + comp=self.comp_bad, + up_minutes=bad_minutes, + down_minutes=0) - DuckCompetence.objects.create(duck = self.duck, - comp = self.comp_good, - up_minutes = good_minutes, - down_minutes = 0) + DuckCompetence.objects.create(duck=self.duck, + comp=self.comp_good, + up_minutes=good_minutes, + down_minutes=0) def test_book_nonlogged(self): page = self.app.post('/api/v1/ducks/1/book/', expect_errors=True) @@ -70,10 +71,14 @@ class DuckClassTest(WebTest): self.assertEqual(404, page.status_code) def test_book_warn(self): - test_data = { - 'competence': self.comp_bad.pk, - } url = '/api/v1/ducks/%d/book/' % self.duck.pk + comp_none = Competence.objects.create(name='test3', + added_by=self.user) + + # Book for a competence the duck doesn’t have at all + test_data = { + 'competence': comp_none.pk, + } page = self.app.post(url, params=test_data, user=self.user) self.assertEquals(200, page.status_code) @@ -81,6 +86,18 @@ class DuckClassTest(WebTest): page_json = json.loads(page.content) self.assertEquals(page_json['status'], 'bad-comp') + # Book for a competence with low level + test_data = { + 'competence': self.comp_bad.pk, + } + + page = self.app.post(url, params=test_data, user=self.user) + self.assertEquals(200, page.status_code) + + page_json = json.loads(page.content) + self.assertEquals(page_json['status'], 'bad-comp') + + # Forcibly book for a competence with low level test_data['force'] = 1 page = self.app.post(url, params=test_data, user=self.user) diff --git a/booking/tests.py b/booking/tests.py index efb74e4..015f32e 100644 --- a/booking/tests.py +++ b/booking/tests.py @@ -271,29 +271,37 @@ class SimilarCompTest(TestCase): class BookingTest(TestCase): def setUp(self): - spec = Species(name = 'test') - spec.save() + spec = Species.objects.create(name='test') - loc = Location(name = 'test') - loc.save() + loc = Location.objects.create(name='test') - user = User(username = 'test') - user.save() + self.user = User.objects.create_user(username='test') - self.booked_duck = Duck(species = spec, location = loc, donated_by = user) - self.booked_duck.save() + self.booked_duck = Duck.objects.create(species=spec, + location=loc, + donated_by=self.user) - comp = Competence(name = 'test', added_by = user) - comp.save() + self.comp = Competence.objects.create(name='test', + added_by=self.user) - booking = Booking(duck = self.booked_duck, user = user, comp_req = comp) - booking.save() + booking = Booking.objects.create(duck=self.booked_duck, + user=self.user, + comp_req=self.comp) - self.unbooked_duck = Duck(species = spec, location = loc, donated_by = user) - self.unbooked_duck.save() + self.unbooked_duck = Duck.objects.create(species=spec, + location=loc, + donated_by=self.user) def test_booked_duck(self): self.assertNotEqual(self.booked_duck.booked_by(), None) def test_unbooked_duck(self): self.assertEqual(self.unbooked_duck.booked_by(), None) + + def test_multiple_booking(self): + Booking.objects.create(duck=self.booked_duck, + user=self.user, + comp_req=self.comp) + + with self.assertRaises(RuntimeError): + self.booked_duck.booked_by()