def test_get_by_child(self): departments = [DepartmentFactory(), DepartmentFactory()] persons = [PersonFactory(), PersonFactory()] # Not on wainting list yet self.assertEqual(len(WaitingList.get_by_child(persons[0])), 0) # Sign up for waiting LIst WaitingListFactory(person=persons[0], department=departments[0]) WaitingListFactory(person=persons[1], department=departments[0]) self.assertEqual(WaitingList.get_by_child(persons[0]), [(departments[0], 1)]) self.assertEqual(WaitingList.get_by_child(persons[1]), [(departments[0], 2)]) # Sign up for more WaitingListFactory(person=persons[1], department=departments[1]) WaitingListFactory(person=persons[0], department=departments[1]) # Checks for Ordering self.assertEqual( WaitingList.get_by_child(persons[0]), [(departments[0], 1), (departments[1], 1)], ) self.assertEqual( WaitingList.get_by_child(persons[1]), [(departments[0], 2), (departments[1], 2)], )
def test_saving_and_retrieving_family(self): family = FamilyFactory() PersonFactory(family=family) PersonFactory(family=family, membertype=Person.CHILD) self.assertEqual(family, Family.objects.first()) self.assertEqual(1, Family.objects.count()) self.assertEqual(2, Person.objects.count())
def test_saving_and_retrieving_persons(self): PersonFactory(name="Jane Doe", added=datetime(2018, 1, 1, tzinfo=TIMEZONE)) PersonFactory(name="John Doe", added=datetime(2017, 1, 1, tzinfo=TIMEZONE)) saved_persons = Person.objects.all() self.assertEqual(saved_persons.count(), 2) # retrieved in order of 'added' field self.assertEqual(saved_persons[0].name, "John Doe") self.assertEqual(saved_persons[1].name, "Jane Doe")
def test_different_waitinglists_does_not_interfere(self): department0 = DepartmentFactory() department1 = DepartmentFactory() person = PersonFactory() subscription0 = WaitingListFactory(person=person, department=department0) subscription1 = WaitingListFactory(person=person, department=department1) self.assertEqual(1, subscription0.number_on_waiting_list()) self.assertEqual(1, subscription1.number_on_waiting_list()) fake = faker.Faker() # Add a lot of people with random sign-up dates to the second # list. # NB. fake.date_time() only returns past datetimes, thus all # subscriptions will be added infront of our new person, not # after n = 30 for i in range(n): WaitingListFactory(person__added=fake.date_time(tzinfo=TIMEZONE), department=department1) # Should not interfere with position on the first list self.assertEqual(1, subscription0.number_on_waiting_list()) # We are placed last on the second waiting list self.assertEqual(n + 1, subscription1.number_on_waiting_list())
def test_get_children(self): family = FamilyFactory() kids = [ PersonFactory(membertype=Person.CHILD, family=family) for i in range(randint(1, 10)) ] family_kids = family.get_children() for kid in kids: self.assertTrue(kid in family_kids) self.assertEqual(len(kids), len(family_kids))
def test_defaults_to_no_certificate(self): person = PersonFactory() self.assertEqual(person.has_certificate, None)
def test_defaults_to_not_deleted(self): person = PersonFactory() self.assertEqual(person.deleted_dtm, None)
def test_defaults_to_parent(self): person = PersonFactory() self.assertEqual(person.membertype, Person.PARENT)
def test_string_representation(self): person = PersonFactory() self.assertEqual(person.name, str(person))
def test_get_first_parent_when_guardian(self): family = FamilyFactory() p1 = PersonFactory(family=family, membertype=Person.GUARDIAN) PersonFactory(family=family, membertype=Person.PARENT) PersonFactory(family=family, membertype=Person.PARENT) self.assertEqual(p1, family.get_first_parent())
def test_firstname_no_lastname(self): person = PersonFactory(name="Margrethe") self.assertEqual(person.firstname(), "Margrethe")
def test_firstname_allows_dash_in_names(self): person = PersonFactory(name="Hans-Christian Jensen Eriksen") self.assertEqual(person.firstname(), "Hans-Christian")
def test_can_create_person(self): PersonFactory() # no error should be thrown
def test_age_years(self): with freeze_time(datetime(2010, 3, 2)): person = PersonFactory(birthday=datetime(2000, 1, 1)) self.assertEqual(person.age_years(), 10)
def test_get_first_parent_none_when_no_parents(self): family = FamilyFactory() PersonFactory(family=family, membertype=Person.CHILD) self.assertIsNone(family.get_first_parent())
def test_get_first_parent(self): family = FamilyFactory() p1 = PersonFactory(family=family, membertype=Person.PARENT) PersonFactory(family=family, membertype=Person.PARENT) PersonFactory(family=family, membertype=Person.CHILD) self.assertEqual(p1, family.get_first_parent())
def test_cannot_create_person_with_no_name(self): with self.assertRaises(ValidationError): person = PersonFactory(name="") person.full_clean()
def _create_person_with_id(id): if len(Person.objects.filter(pk=id)) == 0: return PersonFactory(pk=id)
def test_cannot_change_person_to_unnamed(self): person = PersonFactory() with self.assertRaises(ValidationError): person.name = "" person.full_clean()