def test_existing_user_empty_fields_override(self): self.client.force_login(user=self.admin_user) with open(self.all_fields, 'rb') as upload_user_file: upload_file = SimpleUploadedFile(upload_user_file.name, upload_user_file.read()) user = User.objects.get(username='******') # Remove any existing field UserProfileCustomField.objects.filter(user=user).delete() self.client.post(self.url, { 'upload_file': upload_file, 'only_update': False }) user = User.objects.get(username='******') profile = UserProfile.objects.get(user=user) self.assertEqual(user.first_name, 'UpdatedName') self.assertEqual(user.last_name, 'UpdatedLastname') self.assertEqual(profile.phone_number, '555555555') self.assertEqual( UserProfileCustomField.get_user_value(user, 'country'), 'Portugal') self.assertEqual( UserProfileCustomField.get_user_value(user, 'agree_to_terms'), True) self.assertEqual(UserProfileCustomField.get_user_value(user, 'age'), 99)
def test_empty_string_userprofile_creates_nonexistent_custom_fields(self): # If a user profile is submitted that contains empty string custom # fields that didn't exist previously, in that case those fields should # be created with the empty value user = User.objects.get(username='******') # remove user custom fields CustomField.objects.create(id='extra', type='str', required=True, label='Required') UserProfileCustomField.objects.filter(user=user).delete() self.assertEqual( UserProfileCustomField.get_user_value(user, 'country'), None) self.assertEqual(UserProfileCustomField.get_user_value(user, 'extra'), None) self.client.force_login(self.admin_user) with open(self.activity_with_empty_userinfo, 'rb') as alf: response = self.client.post(self.url, {'activity_log_file': alf}) # should be redirected to the success page self.assert_redirects_success(response) # "extra" field is required, so the CustomField is created anyway self.assertEqual(UserProfileCustomField.get_user_value(user, 'extra'), '') # Country field is not required, so is not created with an empty value self.assertEqual( UserProfileCustomField.get_user_value(user, 'country'), None)
def test_empty_userprofile_doesnt_update_fields(self): user = User.objects.get(username='******') userprofile = UserProfile.objects.get(user=user) userprofile.phone_number = '123456789' userprofile.organisation = 'home' userprofile.save() self.client.force_login(self.admin_user) with open(self.basic_activity_log, 'rb') as activity_log_file: response = self.client.post( self.url, {'activity_log_file': activity_log_file}) # should be redirected to the success page self.assert_redirects_success(response) userprofile = UserProfile.objects.get(user=user) self.assertEqual(userprofile.phone_number, '123456789') self.assertEqual(userprofile.organisation, 'home') self.assertEqual( UserProfileCustomField.get_user_value(user, 'country'), 'FI') self.assertEqual( UserProfileCustomField.get_user_value(user, 'agree_to_terms'), None)
def test_existing_user_nonempty_fields_only_update(self): self.client.force_login(user=self.admin_user) with open(self.all_fields, 'rb') as upload_user_file: upload_file = SimpleUploadedFile(upload_user_file.name, upload_user_file.read()) user = User.objects.get(username='******') user.first_name = 'firstname' user.last_name = 'lastname' user.save() profile = UserProfile.objects.get(user=user) profile.phone_number = '000000000' profile.save() # Remove any existing custom field UserProfileCustomField.objects.filter(user=user).delete() UserProfileCustomField.objects.create( user=user, key_name=CustomField.objects.get(id='country'), value_str='Spain') UserProfileCustomField.objects.create( user=user, key_name=CustomField.objects.get(id='agree_to_terms'), value_bool=False) UserProfileCustomField.objects.create( user=user, key_name=CustomField.objects.get(id='age'), value_int=30) self.client.post(self.url, { 'upload_file': upload_file, 'only_update': True }) user = User.objects.get(username='******') profile = UserProfile.objects.get(user=user) self.assertEqual(user.first_name, 'firstname') self.assertEqual(user.last_name, 'lastname') self.assertEqual(profile.phone_number, '000000000') self.assertEqual( UserProfileCustomField.get_user_value(user, 'country'), 'Spain') self.assertEqual( UserProfileCustomField.get_user_value(user, 'agree_to_terms'), False) self.assertEqual(UserProfileCustomField.get_user_value(user, 'age'), 30)
def test_userprofile_updated(self): self.client.force_login(self.admin_user) with open(self.activity_with_userinfo, 'rb') as activity_log_file: response = self.client.post(self.url, {'activity_log_file': activity_log_file}) # should be redirected to the success page self.assert_redirects_success(response) user = User.objects.get(username='******') userprofile = UserProfile.objects.get(user=user) self.assertEqual(userprofile.phone_number, '123456789') self.assertEqual(userprofile.organisation, 'home') self.assertEqual(UserProfileCustomField.get_user_value(user, 'country'), 'ES') self.assertEqual(UserProfileCustomField.get_user_value(user, 'agree_to_terms'), True)
def test_custom_fields(self): self.client.force_login(user=self.admin_user) with open(self.custom_fields, 'rb') as upload_user_file: upload_file = SimpleUploadedFile(upload_user_file.name, upload_user_file.read()) user_count_start = User.objects.all().count() self.client.post(self.url, {'upload_file': upload_file, 'only_update': True}) user_count_end = User.objects.all().count() self.assertEqual(user_count_start+2, user_count_end) # check the user data user100 = User.objects.get(username='******') self.assertEqual(user100.userprofile.phone_number, "+0123456789") self.assertEqual(UserProfileCustomField.get_user_value( user100, 'country'), "Sweden") self.assertEqual(UserProfileCustomField.get_user_value( user100, 'age'), 24) self.assertTrue(UserProfileCustomField.get_user_value( user100, 'agree_to_terms')) user101 = User.objects.get(username='******') self.assertEqual(user101.userprofile.phone_number, "+987654321") self.assertEqual(UserProfileCustomField.get_user_value( user101, 'country'), "Iceland") self.assertEqual(UserProfileCustomField.get_user_value( user101, 'age'), 30) self.assertFalse(UserProfileCustomField.get_user_value( user101, 'agree_to_terms'))