class ProfileLangTest(TestCase): def setUp(self): self.person = PersonFactory() self.person.language = FRENCH_LANGUAGE self.person.save() self.url = reverse('profile_lang', args=[ENGLISH_LANGUAGE]) self.client.force_login(self.person.user) def test_user_not_logged(self): self.client.logout() response = self.client.get(self.url) self.assertRedirects(response, '/login/?next={}'.format(self.url)) def test_language_not_known(self): url = reverse('profile_lang', args=["unk"]) response = self.client.get(url, HTTP_REFERER='/') self.person.refresh_from_db() self.assertRedirects(response, '/') self.assertEqual(self.person.language, FRENCH_LANGUAGE) def test_change_language(self): response = self.client.get(self.url, HTTP_REFERER='/') self.person.refresh_from_db() self.assertRedirects(response, '/') self.assertEqual(self.person.language, ENGLISH_LANGUAGE)
class PersonTest(PersonTestCase): def setUp(self): self.an_user = user.UserFactory(username="******") self.user_for_person = user.UserFactory(username="******") self.person_with_user = PersonFactory(user=self.user_for_person, language="fr-be", first_name="John", last_name="Doe") self.person_without_user = PersonWithoutUserFactory() def test_find_by_id(self): tmp_person = PersonFactory() db_person = person.find_by_id(tmp_person.id) self.assertIsNotNone(tmp_person.user) self.assertEqual(db_person.id, tmp_person.id) self.assertEqual(db_person.email, tmp_person.email) @override_settings(INTERNAL_EMAIL_SUFFIX='osis.org') def test_person_from_extern_source(self): person_email = functools.partial(generate_person_email, domain='osis.org') p = PersonWithoutUserFactory.build( email=factory.LazyAttribute(person_email), source=person_source_type.DISSERTATION) with self.assertRaises(AttributeError): p.save() @override_settings(INTERNAL_EMAIL_SUFFIX='osis.org') def test_person_from_internal_source(self): person_email = functools.partial(generate_person_email, domain='osis.org') p = PersonWithoutUserFactory.build( email=factory.LazyAttribute(person_email)) with self.assertDontRaise(): p.save() @override_settings(INTERNAL_EMAIL_SUFFIX='osis.org') def test_person_without_source(self): person_email = functools.partial(generate_person_email, domain='osis.org') p = PersonWithoutUserFactory.build( email=factory.LazyAttribute(person_email), source=None) with self.assertDontRaise(): p.save() def test_find_by_global_id(self): a_person = person.Person(global_id="123") a_person.save() dupplicated_person = person.Person(global_id="123") dupplicated_person.save() found_person = person.find_by_global_id("1234") return self.assertEqual( found_person, None, "find_by_global_id should return None if a record is not found.") def test_search_employee(self): a_lastname = "Dupont" a_firstname = "Marcel" a_person = person.Person(last_name=a_lastname, first_name=a_firstname, employee=True) a_person.save() self.assertEqual(person.search_employee(a_lastname)[0], a_person) self.assertEqual( len(person.search_employee("{}{}".format(a_lastname, a_firstname))), 0) self.assertEqual( person.search_employee("{} {}".format(a_lastname, a_firstname))[0], a_person) self.assertIsNone(person.search_employee(None)) self.assertEqual(len(person.search_employee("zzzzzz")), 0) a_person_2 = person.Person(last_name=a_lastname, first_name="Hervé", employee=True) a_person_2.save() self.assertEqual(len(person.search_employee(a_lastname)), 2) self.assertEqual( len(person.search_employee("{} {}".format(a_lastname, a_firstname))), 1) def test_change_to_invalid_language(self): user = UserFactory() user.save() a_person = create_person_with_user(user) person.change_language(user, 'ru') self.assertNotEqual(a_person.language, "ru") def test_change_language(self): user = UserFactory() user.save() create_person_with_user(user) person.change_language(user, "en") a_person = person.find_by_user(user) self.assertEqual(a_person.language, "en") def test_calculate_age(self): a_person = PersonFactory() a_person.birth_date = datetime.datetime.now() - datetime.timedelta( days=((30 * 365) + 15)) self.assertEqual(person.calculate_age(a_person), 30) a_person.birth_date = datetime.datetime.now() - datetime.timedelta( days=((30 * 365) - 5)) self.assertEqual(person.calculate_age(a_person), 29) def test_is_central_manager(self): a_person = PersonFactory() self.assertFalse(a_person.is_central_manager) del a_person.is_central_manager a_person.user.groups.add(Group.objects.get(name=CENTRAL_MANAGER_GROUP)) self.assertTrue(a_person.is_central_manager) def test_is_faculty_manager(self): a_person = PersonFactory() self.assertFalse(a_person.is_faculty_manager) del a_person.is_faculty_manager a_person.user.groups.add(Group.objects.get(name=FACULTY_MANAGER_GROUP)) self.assertTrue(a_person.is_faculty_manager) def test_is_sic(self): a_person = PersonFactory() self.assertFalse(a_person.is_sic) a_person = SICFactory() self.assertTrue(a_person.is_sic) def test_show_username_from_person_with_user(self): self.assertEqual(self.person_with_user.username(), "user_with_person") def test_show_username_from_person_without_user(self): self.assertEqual(self.person_without_user.username(), None) def test_show_first_name_from_person_with_first_name(self): self.assertEqual(self.person_with_user.get_first_name(), self.person_with_user.first_name) def test_show_first_name_from_person_without_first_name(self): self.person_with_user.first_name = None self.person_with_user.save() self.assertEqual(self.person_with_user.get_first_name(), self.person_with_user.user.first_name) def test_show_first_name_from_person_without_user(self): self.person_with_user.first_name = None self.person_with_user.user = None self.person_with_user.save() self.assertEqual(self.person_with_user.get_first_name(), "-") def test_get_user_interface_language_with_person_user(self): self.assertEqual( get_user_interface_language(self.person_with_user.user), "fr-be") def test_get_user_interface_language_with_user_without_person(self): self.assertEqual(get_user_interface_language(self.an_user), "fr-be") def test_str_function_with_data(self): self.person_with_user.middle_name = "Junior" self.person_with_user.save() self.assertEqual(self.person_with_user.__str__(), "DOE, John Junior") def test_change_language_with_user_with_person(self): change_language(self.user_for_person, "en") self.person_with_user.refresh_from_db() self.assertEqual(self.person_with_user.language, "en") def test_change_language_with_user_without_person(self): self.assertFalse(change_language(self.an_user, "en")) def test_is_linked_to_entity_in_charge_of_learning_unit_year(self): person_entity = PersonEntityFactory(person=self.person_with_user) luy = LearningUnitYearFactory() self.assertFalse( self.person_with_user. is_linked_to_entity_in_charge_of_learning_unit_year(luy)) EntityContainerYearFactory( learning_container_year=luy.learning_container_year, entity=person_entity.entity, type=REQUIREMENT_ENTITY) self.assertTrue( self.person_with_user. is_linked_to_entity_in_charge_of_learning_unit_year(luy)) def test_is_linked_to_entity_in_charge_of_external_learning_unit_year( self): person_entity = PersonEntityFactory(person=self.person_with_user) luy = LearningUnitYearFactory() external_luy = ExternalLearningUnitYearFactory(learning_unit_year=luy) self.assertFalse( self.person_with_user. is_linked_to_entity_in_charge_of_learning_unit_year(luy)) external_luy.requesting_entity = person_entity.entity external_luy.save() self.assertTrue( self.person_with_user. is_linked_to_entity_in_charge_of_learning_unit_year(luy))