def test_import_registrations(dummy_regform, dummy_user): csv = b'\n'.join([b'John,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b'Jane,Smith,ACME Inc.,CEO,,[email protected]', b'Billy Bob,Doe,,,,[email protected]']) registrations = import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert len(registrations) == 3 assert registrations[0].full_name == 'John Doe' assert registrations[0].user is None data = registrations[0].get_personal_data() assert data['affiliation'] == 'ACME Inc.' assert data['email'] == '*****@*****.**' assert data['position'] == 'Regional Manager' assert data['phone'] == '+1-202-555-0140' assert registrations[1].full_name == 'Jane Smith' assert registrations[1].user is None data = registrations[1].get_personal_data() assert data['affiliation'] == 'ACME Inc.' assert data['email'] == '*****@*****.**' assert data['position'] == 'CEO' assert 'phone' not in data assert registrations[2].full_name == 'Billy Bob Doe' assert registrations[2].user == dummy_user data = registrations[2].get_personal_data() assert 'affiliation' not in data assert data['email'] == '*****@*****.**' assert 'position' not in data assert 'phone' not in data
def test_import_registrations(dummy_regform, dummy_user): csv = b'\n'.join([ b'John,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b'Jane,Smith,ACME Inc.,CEO,,[email protected]', b'Billy Bob,Doe,,,,[email protected]' ]) registrations = import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert len(registrations) == 3 assert registrations[0].full_name == 'John Doe' assert registrations[0].user is None data = registrations[0].get_personal_data() assert data['affiliation'] == 'ACME Inc.' assert data['email'] == '*****@*****.**' assert data['position'] == 'Regional Manager' assert data['phone'] == '+1-202-555-0140' assert registrations[1].full_name == 'Jane Smith' assert registrations[1].user is None data = registrations[1].get_personal_data() assert data['affiliation'] == 'ACME Inc.' assert data['email'] == '*****@*****.**' assert data['position'] == 'CEO' assert 'phone' not in data assert registrations[2].full_name == 'Billy Bob Doe' assert registrations[2].user == dummy_user data = registrations[2].get_personal_data() assert 'affiliation' not in data assert data['email'] == '*****@*****.**' assert 'position' not in data assert 'phone' not in data
def _process(self): form = ImportRegistrationsForm(regform=self.regform) if form.validate_on_submit(): if self.regform.is_purged: raise Forbidden( _('Registration is disabled due to an expired retention period' )) skip_moderation = self.regform.moderation_enabled and form.skip_moderation.data registrations = import_registrations_from_csv( self.regform, form.source_file.data, skip_moderation=skip_moderation, notify_users=form.notify_users.data) flash( ngettext('{} registration has been imported.', '{} registrations have been imported.', len(registrations)).format(len(registrations)), 'success') return jsonify_data(flash=False, redirect=url_for('.manage_reglist', self.regform), redirect_no_loading=True) return jsonify_template( 'events/registration/management/import_registrations.html', form=form, regform=self.regform)
def test_import_error(dummy_regform): # missing column csv = b'\n'.join([ b'John,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b'Buggy,Entry,ACME Inc.,CEO,' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'malformed' in e.value.message assert 'Row 2' in e.value.message # missing e-mail csv = b'\n'.join([ b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b'Buggy,Entry,ACME Inc.,CEO,,' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'missing e-mail' in e.value.message assert 'Row 2' in e.value.message # missing first name csv = b'\n'.join([ b'Ray,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b',Buggy,ACME Inc.,CEO,,[email protected]' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'missing first' in e.value.message assert 'Row 2' in e.value.message
def _process(self): form = ImportRegistrationsForm(regform=self.regform) if form.validate_on_submit(): skip_moderation = self.regform.moderation_enabled and form.skip_moderation.data registrations = import_registrations_from_csv(self.regform, form.source_file.data, skip_moderation=skip_moderation, notify_users=form.notify_users.data) flash(ngettext("{} registration has been imported.", "{} registrations have been imported.", len(registrations)).format(len(registrations)), 'success') return jsonify_data(flash=False, redirect=url_for('.manage_reglist', self.regform), redirect_no_loading=True) return jsonify_template('events/registration/management/import_registrations.html', form=form, regform=self.regform)
def test_import_registrations_error(dummy_regform, dummy_user): dummy_user.secondary_emails.add('*****@*****.**') create_registration(dummy_regform, { 'email': dummy_user.email, 'first_name': dummy_user.first_name, 'last_name': dummy_user.last_name }, notify_user=False) create_registration(dummy_regform, { 'email': '*****@*****.**', 'first_name': 'Big', 'last_name': 'Boss' }, notify_user=False) # duplicate e-mail csv = b'\n'.join([ b'Big,Boss,ACME Inc.,Supreme Leader,+1-202-555-1337,[email protected]' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'a registration with this email already exists' in str(e.value) assert 'Row 1' in str(e.value) # duplicate user csv = b'\n'.join([ b'Big,Boss,ACME Inc.,Supreme Leader,+1-202-555-1337,[email protected]' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'a registration for this user already exists' in str(e.value) assert 'Row 1' in str(e.value)
def _process(self): form = ImportRegistrationsForm(regform=self.regform) if form.validate_on_submit(): registrations = import_registrations_from_csv( self.regform, form.source_file.data, skip_moderation=form.skip_moderation.data, notify_users=form.notify_users.data) flash( ngettext("{} registration has been imported.", "{} registrations have been imported.", len(registrations)).format(len(registrations)), 'success') return jsonify_data(flash=False, redirect=url_for('.manage_reglist', self.regform), redirect_no_loading=True) return jsonify_template( 'events/registration/management/import_registrations.html', form=form, regform=self.regform)
def test_import_error(dummy_regform): create_registration(dummy_regform, { 'email': '*****@*****.**', 'first_name': 'Big', 'last_name': 'Boss' }, notify_user=False) # missing column csv = b'\n'.join([ b'John,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b'Buggy,Entry,ACME Inc.,CEO,' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'malformed' in e.value.message assert 'Row 2' in e.value.message # missing e-mail csv = b'\n'.join([ b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b'Buggy,Entry,ACME Inc.,CEO,,' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'missing e-mail' in e.value.message assert 'Row 2' in e.value.message # bad e-mail csv = b'\n'.join([ b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b'Buggy,Entry,ACME Inc.,CEO,,not-an-email' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'invalid e-mail' in e.value.message assert 'Row 2' in e.value.message # duplicate e-mail (csv) csv = b'\n'.join([ b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b'Bob,Doe,ACME Inc.,Boss,,[email protected]' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'email address is not unique' in e.value.message assert 'Row 2' in e.value.message # duplicate e-mail (registration) csv = b'\n'.join([ b'Big,Boss,ACME Inc.,Supreme Leader,+1-202-555-1337,[email protected]' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'a registration with this email already exists' in e.value.message assert 'Row 1' in e.value.message # missing first name csv = b'\n'.join([ b'Ray,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b',Buggy,ACME Inc.,CEO,,[email protected]' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'missing first' in e.value.message assert 'Row 2' in e.value.message
def test_import_error(dummy_regform): create_registration(dummy_regform, { 'email': '*****@*****.**', 'first_name': 'Big', 'last_name': 'Boss' }, notify_user=False) # missing column csv = b'\n'.join([b'John,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b'Buggy,Entry,ACME Inc.,CEO,']) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'malformed' in e.value.message assert 'Row 2' in e.value.message # missing e-mail csv = b'\n'.join([b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b'Buggy,Entry,ACME Inc.,CEO,,']) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'missing e-mail' in e.value.message assert 'Row 2' in e.value.message # bad e-mail csv = b'\n'.join([b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b'Buggy,Entry,ACME Inc.,CEO,,not-an-email']) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'invalid e-mail' in e.value.message assert 'Row 2' in e.value.message # duplicate e-mail (csv) csv = b'\n'.join([b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b'Bob,Doe,ACME Inc.,Boss,,[email protected]']) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'email address is not unique' in e.value.message assert 'Row 2' in e.value.message # duplicate e-mail (registration) csv = b'\n'.join([b'Big,Boss,ACME Inc.,Supreme Leader,+1-202-555-1337,[email protected]']) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'a registration with this email already exists' in e.value.message assert 'Row 1' in e.value.message # missing first name csv = b'\n'.join([b'Ray,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b',Buggy,ACME Inc.,CEO,,[email protected]']) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'missing first' in e.value.message assert 'Row 2' in e.value.message
def test_import_error(dummy_regform, dummy_user, create_user): dummy_user.secondary_emails.add('*****@*****.**') create_registration(dummy_regform, { 'email': '*****@*****.**', 'first_name': 'Big', 'last_name': 'Boss' }, notify_user=False) create_registration(dummy_regform, { 'email': '*****@*****.**', 'first_name': 'Guinea', 'last_name': 'Pig' }, notify_user=False) user = create_user(123, email='*****@*****.**') user.secondary_emails.add('*****@*****.**') # missing column csv = b'\n'.join([ b'John,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b'Buggy,Entry,ACME Inc.,CEO,' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'malformed' in str(e.value) assert 'Row 2' in str(e.value) # missing e-mail csv = b'\n'.join([ b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b'Buggy,Entry,ACME Inc.,CEO,,' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'missing e-mail' in str(e.value) assert 'Row 2' in str(e.value) # bad e-mail csv = b'\n'.join([ b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b'Buggy,Entry,ACME Inc.,CEO,,not-an-email' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'invalid e-mail' in str(e.value) assert 'Row 2' in str(e.value) # duplicate e-mail (csv) csv = b'\n'.join([ b'Bill,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b'Bob,Doe,ACME Inc.,Boss,,[email protected]' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'email address is not unique' in str(e.value) assert 'Row 2' in str(e.value) # duplicate e-mail (registration) csv = b'\n'.join([ b'Big,Boss,ACME Inc.,Supreme Leader,+1-202-555-1337,[email protected]' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'a registration with this email already exists' in str(e.value) assert 'Row 1' in str(e.value) # duplicate user (csv) csv = b'\n'.join([ b'Big,Boss,ACME Inc.,Supreme Leader,+1-202-555-1337,[email protected]', b'Little,Boss,ACME Inc.,Wannabe Leader,+1-202-555-1338,[email protected]' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'Row 2: email address belongs to the same user as in row 1' in str( e.value) # duplicate user (registration) csv = b'\n'.join([ b'Big,Boss,ACME Inc.,Supreme Leader,+1-202-555-1337,[email protected]' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'a registration for this user already exists' in str(e.value) assert 'Row 1' in str(e.value) # missing first name csv = b'\n'.join([ b'Ray,Doe,ACME Inc.,Regional Manager,+1-202-555-0140,[email protected]', b',Buggy,ACME Inc.,CEO,,[email protected]' ]) with pytest.raises(UserValueError) as e: import_registrations_from_csv(dummy_regform, BytesIO(csv)) assert 'missing first' in str(e.value) assert 'Row 2' in str(e.value)