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)],
        )
示例#2
0
    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())
示例#3
0
    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))
示例#6
0
 def test_defaults_to_no_certificate(self):
     person = PersonFactory()
     self.assertEqual(person.has_certificate, None)
示例#7
0
 def test_defaults_to_not_deleted(self):
     person = PersonFactory()
     self.assertEqual(person.deleted_dtm, None)
示例#8
0
 def test_defaults_to_parent(self):
     person = PersonFactory()
     self.assertEqual(person.membertype, Person.PARENT)
示例#9
0
 def test_string_representation(self):
     person = PersonFactory()
     self.assertEqual(person.name, str(person))
示例#10
0
 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())
示例#11
0
 def test_firstname_no_lastname(self):
     person = PersonFactory(name="Margrethe")
     self.assertEqual(person.firstname(), "Margrethe")
示例#12
0
 def test_firstname_allows_dash_in_names(self):
     person = PersonFactory(name="Hans-Christian Jensen Eriksen")
     self.assertEqual(person.firstname(), "Hans-Christian")
示例#13
0
 def test_can_create_person(self):
     PersonFactory()  # no error should be thrown
示例#14
0
 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)
示例#15
0
 def test_get_first_parent_none_when_no_parents(self):
     family = FamilyFactory()
     PersonFactory(family=family, membertype=Person.CHILD)
     self.assertIsNone(family.get_first_parent())
示例#16
0
 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())
示例#17
0
 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)
示例#19
0
 def test_cannot_change_person_to_unnamed(self):
     person = PersonFactory()
     with self.assertRaises(ValidationError):
         person.name = ""
         person.full_clean()