def test_find_all_by_admin(self): inscripcion_1 = Inscripcion(id=uuid.uuid1(), localidad='Quito Norte', servidor='Conny Riera', fecha='2018-08-01', administradores=['usuario_1', 'usuario_3']) inscripcion_2 = Inscripcion(id=uuid.uuid1(), localidad='Quito Sur', servidor='Raul Riera', fecha='2018-08-01', administradores=['usuario_1', 'usuario_2']) inscripcion_3 = Inscripcion(id=uuid.uuid1(), localidad='Quito Centro', servidor='Isa', fecha='2018-08-01', administradores=['usuario_2', 'usuario_3']) self.inscripcion_repository.add(inscripcion_1) self.inscripcion_repository.add(inscripcion_2) self.inscripcion_repository.add(inscripcion_3) response = self.inscripcion_repository.find_all_by_admin('usuario_2') self.assertEqual([str(inscripcion_2.id), str(inscripcion_3.id)], list(map(lambda i: i.id, response)))
def test_should_throw_error_while_edit_a_participante(self): self._login() inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', administradores=['usuario_1', 'admin']) self.inscripcion_repository.add(inscripcion) participante = Participante(id=uuid.uuid1(), nombres_completos='Raul Riera', sexo='H', telefono_contacto='9999999999', monto=Decimal('25.00'), numero_deposito='14587') self.participante_repository.add(participante, inscripcion.id) participante_data = { 'nombres_completos': 'Nayeli Chiriboga', 'sexo': 'M', 'telefono_contacto': '9999999999', 'monto': 15.00, 'fecha_inscripcion': '2018-8-27', 'numero_deposito': 'xxxxx' } response = self.client.post( f'/inscripciones/{inscripcion.id}/participantes/' f'{participante.id}/edit', data=participante_data) self._assert_static_text('El valor del monto debe ser 25.00 USD', response)
def test_show_a_participante(self): self._login('usuario_1', 'secreto') inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', administradores=['admin_1', 'usuario_1']) self.inscripcion_repository.add(inscripcion) participante = Participante(id=uuid.uuid1(), nombres_completos='Raul Riera', sexo='H', telefono_contacto='9999999999', numero_deposito='12312', monto=25.00) self.participante_repository.add(participante, inscripcion.id) response = self.client.get( f"/inscripciones/{inscripcion.id}/participantes/{participante.id}") self.assertEqual(response.status_code, 200) self.assertTrue( str(participante.id) in response.get_data(as_text=True)) self.assertTrue(participante.nombres_completos in response.get_data( as_text=True)) self.assertTrue(participante.sexo in response.get_data(as_text=True)) self.assertTrue(participante.telefono_contacto in response.get_data( as_text=True)) self.assertTrue( str(participante.monto) in response.get_data(as_text=True)) self.assertTrue(participante.numero_deposito in response.get_data( as_text=True))
def build(self): return Inscripcion(id=self.id, localidad=self.localidad, servidor=self.servidor, fecha=self.fecha, comprobante_uri=self.comprobante_uri, administradores=self.administradores)
def test_error_if_required_fields_are_not_present_in_participante_creation( self): self._login() inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', administradores=['usuario_1', 'admin']) self.inscripcion_repository.add(inscripcion) participante_data = { 'sexo': 'M', 'telefono_contacto': '9999999999', } response = self.client.post( f'/inscripciones/{inscripcion.id}/participantes/new', data=participante_data) participantes = self.participante_repository.find_all(inscripcion.id) res = filter( lambda i: i.nombres_completos == 'Nayeli Chiriboga' and i.sexo == 'M' and i.telefono_contacto == '9999999999', participantes) filtered_participante = list(res) self.assertTrue(len(filtered_participante) == 0) self._assert_static_text( 'Error en el campo: Monto cancelado (USD) -' ' This field is required', response) self._assert_static_text( 'Error en el campo: Nombres completos - This field is required', response) self._assert_static_text( 'Error en el campo: Número de depósito - This field is required', response)
def test_should_return_error_if_monto_is_invalid(self): self._login() inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', administradores=['usuario_1', 'admin']) self.inscripcion_repository.add(inscripcion) participante_data = { 'nombres_completos': 'Nayeli Chiriboga', 'sexo': 'M', 'telefono_contacto': '9999999999', 'monto': 20.00, 'fecha_inscripcion': '2018-08-30', 'numero_deposito': 'ABCD-1111' } response = self.client.post( f'/inscripciones/{inscripcion.id}/participantes/new', data=participante_data) participantes = self.participante_repository.find_all(inscripcion.id) res = filter( lambda i: i.nombres_completos == 'Nayeli Chiriboga' and i.sexo == 'M' and i.telefono_contacto == '9999999999', participantes) filtered_participante = list(res) self.assertTrue(len(filtered_participante) == 0) self._assert_static_text('El valor del monto debe ser 25.00 USD', response)
def test_total_amount_is_zero_if_participantes_are_emtpy(self): inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01') self.assertEqual(inscripcion.total_amount(), 0.00)
def test_create_a_participante(self): self._login() inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', administradores=['usuario_1', 'admin']) self.inscripcion_repository.add(inscripcion) participante_data = { 'nombres_completos': 'Nayeli Chiriboga', 'sexo': 'M', 'telefono_contacto': '9999999999', 'monto': 25.00, 'numero_deposito': 'ABCD-1111' } response = self.client.post( f'/inscripciones/{inscripcion.id}/participantes/new', data=participante_data) participantes = self.participante_repository.find_all(inscripcion.id) res = filter( lambda i: i.nombres_completos == 'Nayeli Chiriboga' and i.sexo == 'M' and i.telefono_contacto == '9999999999', participantes) filtered_participante = list(res) self.assertTrue(len(filtered_participante) == 1) self.assertEqual(response.status_code, 302)
def test_show_an_inscripcion(self): self._login('usuario_1', 'secreto') inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', administradores=['usuario_1']) participante = ParticipanteBuilder(monto=Decimal('25.00')).build() if feature.is_enabled("COMPROBANTE_PAGO"): inscripcion.comprobante_uri = 'https://s3.aws.com/comprobante.jpg' self.inscripcion_repository.add(inscripcion) self.participante_repository.add(participante, inscripcion.id) response = self.client.get(f"/inscripciones/{inscripcion.id}") self.assertEqual(response.status_code, 200) self._assert_static_text(str(inscripcion.id), response) self._assert_static_text(inscripcion.localidad, response) self._assert_static_text(inscripcion.servidor, response) self._assert_static_text('25.00', response) if feature.is_enabled("COMPROBANTE_PAGO"): self.assertTrue(inscripcion.comprobante_uri in response.get_data( as_text=True))
def test_adds_new_participante_and_calculate_total_amount(self): inscripcion = Inscripcion( id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', comprobante_uri='https://s3.aws.com/comprobante.jpg') participante_1 = Participante( id=uuid.uuid1(), nombres_completos='Isabel de las Mercedes', sexo="Mujer", telefono_contacto='5252525', monto=Decimal('25.00'), numero_deposito='123455') participante_2 = Participante(id=uuid.uuid1(), nombres_completos='Conny Riera', sexo="Mujer", telefono_contacto='5252525', monto=Decimal('25.00'), numero_deposito='123456') inscripcion.participantes = [participante_1, participante_2] self.assertEqual([participante_1, participante_2], inscripcion.participantes) self.assertEqual(inscripcion.total_amount(), Decimal('50.00'))
def test_should_return_form_for_edit_a_participante(self): self._login() inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', administradores=['usuario_1', 'admin']) self.inscripcion_repository.add(inscripcion) participante = Participante(id=uuid.uuid1(), nombres_completos='Raul Riera', sexo='H', telefono_contacto='9999999999', monto=Decimal('25.00'), numero_deposito='14566185') self.participante_repository.add(participante, inscripcion.id) response = self.client.get( f"/inscripciones/{inscripcion.id}/participantes/" f"{participante.id}/edit") self.assertEqual(response.status_code, 200) self.assertTrue(participante.nombres_completos in response.get_data( as_text=True)) self.assertTrue(participante.sexo in response.get_data(as_text=True)) self.assertTrue(participante.telefono_contacto in response.get_data( as_text=True))
def test_index_of_participantes(self): self._login() inscripcion_1 = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-09-01', administradores=['usuario_1', 'admin']) inscripcion_2 = Inscripcion(id=uuid.uuid1(), localidad='Santo Domingo', servidor='Maria Isabel ', fecha='2018-08-31', administradores=['usuario_1', 'admin']) participante_1 = Participante(id=uuid.uuid1(), nombres_completos='Raul Riera', sexo='H', telefono_contacto='9999999999', monto=Decimal('25.00'), numero_deposito='123456') participante_2 = Participante( id=uuid.uuid1(), nombres_completos='Gustavo de las Mercedes Riera', sexo='H', telefono_contacto='8888888888', monto=Decimal('25.00'), numero_deposito='12457') self.inscripcion_repository.add(inscripcion_1) self.inscripcion_repository.add(inscripcion_2) self.participante_repository.add(participante_1, inscripcion_2.id) self.participante_repository.add(participante_2, inscripcion_2.id) response = self.client.get( f"/inscripciones/{inscripcion_2.id}/participantes") self.assertEqual(response.status_code, 200) self.assertTrue( str(participante_1.id) in response.get_data(as_text=True)) self.assertTrue(participante_1.nombres_completos in response.get_data( as_text=True)) self.assertTrue( str(participante_2.id) in response.get_data(as_text=True)) self.assertTrue(participante_2.nombres_completos in response.get_data( as_text=True)) self.assertTrue('50' in response.get_data(as_text=True))
def test_adds_new_admin(self): inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', administradores=['conny', 'admin_1']) self.assertEqual(['conny', 'admin_1'], inscripcion.administradores)
def find_by(self, inscripcion_id): data = InscripcionData.query.filter_by(id=str(inscripcion_id)).first() return Inscripcion(id=data.id, localidad=data.localidad, servidor=data.servidor, fecha=f"{data.fecha:%Y-%m-%d}", comprobante_uri=data.comprobante_uri, administradores=[] if data.administradores is None else data.administradores.split(','))
def test_return_true_if_user_belongs_admins_group(self): inscripcion_1 = Inscripcion(id=uuid.uuid1(), localidad='Quito Norte', servidor='Conny Riera', fecha='2018-08-01', administradores=['usuario_1', 'usuario_3']) response = inscripcion_1.is_managed_by('usuario_3') self.assertTrue(response)
def test_false_if_user_does_not_belongs_admins_group(self): inscripcion_1 = Inscripcion(id=uuid.uuid1(), localidad='Quito Norte', servidor='Conny Riera', fecha='2018-08-01', administradores=['usuario_1', 'usuario_3']) response = inscripcion_1.is_managed_by('non_allowed_user') self.assertFalse(response)
def test_find_all_with_no_administradores(self): inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito Norte', servidor='Conny Riera', fecha='2018-08-01', administradores=None) self.inscripcion_repository.add(inscripcion) response = self.inscripcion_repository.find_all() self.assertEqual([str(inscripcion.id)], list(map(lambda i: i.id, response)))
def test_not_allow_edit_if_current_user_is_not_admin(self): self._login('conny', 'secreto') inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', administradores=['raul', 'admin']) self.inscripcion_repository.add(inscripcion) response = self.client.get(f"/inscripciones/{inscripcion.id}/edit") self.assertEqual(response.status_code, 403)
def test_not_show_if_current_user_does_not_belong_to_admin_group(self): self._login('usuario_1', 'secreto') inscripcion = Inscripcion( id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', administradores=['usuario_admin', 'usuario_2']) self.inscripcion_repository.add(inscripcion) response = self.client.get(f"/inscripciones/{inscripcion.id}") self.assertEqual(response.status_code, 403)
def find_all(self): data_list = InscripcionData.query.all() return list( map( lambda data: Inscripcion(id=data.id, localidad=data.localidad, servidor=data.servidor, fecha=data.fecha, comprobante_uri=data.comprobante_uri, administradores=[] if data.administradores is None else data.administradores.split(',')), data_list))
def test_index_of_inscripcion(self): self._login('usuario_1', 'secreto') inscripcion_1 = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-09-01', administradores=['usuario_1', 'admin']) inscripcion_2 = Inscripcion(id=uuid.uuid1(), localidad='Santo Domingo', servidor='Maria Isabel ', fecha='2018-08-31', administradores=['usuario_1', 'admin']) self.inscripcion_repository.add(inscripcion_1) self.inscripcion_repository.add(inscripcion_2) participante_1 = ParticipanteBuilder(id=uuid.uuid1(), fecha_inscripcion=datetime.date( 2018, 8, 15), monto=Decimal('25.00')).build() participante_2 = ParticipanteBuilder(id=uuid.uuid1(), fecha_inscripcion=datetime.date( 2018, 8, 15), monto=Decimal('25.00')).build() self.participante_repository.add(participante_1, inscripcion_1.id) self.participante_repository.add(participante_2, inscripcion_2.id) response = self.client.get(f"/inscripciones") self.assertEqual(response.status_code, 200) self._assert_static_text(str(inscripcion_1.id), response) self._assert_static_text(str(inscripcion_2.id), response) self._assert_static_text(inscripcion_1.localidad, response) self._assert_static_text(inscripcion_2.localidad, response) self._assert_static_text("Total inscritos: </b>1", response) self._assert_static_text("Monto total: </b>$25 USD", response)
def test_should_not_allow_new_participante_if_current_user_is_not_admin( self): self._login() inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', administradores=['admin', 'usuario_2']) self.inscripcion_repository.add(inscripcion) response = self.client.get( f"/inscripciones/{inscripcion.id}/participantes/new") self.assertEqual(response.status_code, 403)
def test_should_return_form_for_edit_an_inscripcion(self): self._login('conny', 'secreto') inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', administradores=['conny', 'admin']) self.inscripcion_repository.add(inscripcion) response = self.client.get(f"/inscripciones/{inscripcion.id}/edit") self.assertEqual(response.status_code, 200) self._assert_static_text(inscripcion.localidad, response) self._assert_static_text(inscripcion.servidor, response) self._assert_static_text(inscripcion.fecha, response)
def test_should_edit_an_inscripcion(self): self._login() inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', administradores=['usuario_1', 'admin']) if feature.is_enabled("COMPROBANTE_PAGO"): inscripcion.comprobante_uri = 'comprobante.jpg' self.inscripcion_repository.add(inscripcion) inscripcion_data = { 'localidad': 'Quito Norte', 'servidor': 'Raul Riera', 'monto': '450.00', 'fecha': '2018-09-01' } if feature.is_enabled('COMPROBANTE_PAGO'): inscripcion_data = { 'localidad': 'Quito Norte', 'servidor': 'Raul Riera', 'monto': '450.00', 'fecha': '2018-09-01', 'comprobante_uri': (BytesIO('Comprobante sample content'.encode('utf-8')), 'comprobante.jpg') } response = self.client.post(f'/inscripciones/{inscripcion.id}/edit', content_type='multipart/form-data', buffered=True, data=inscripcion_data) inscripciones = self.inscripcion_repository.find_all() filtered_inscripcion = list( filter( lambda i: i.localidad == 'Quito Norte' and i.servidor == 'Raul Riera', inscripciones)) self.assertTrue(len(filtered_inscripcion) == 1) self.assertEqual(response.status_code, 302)
def test_begin_login_in_session(self): nombre_usuario = 'conny' clave = 'secreto' usuario = self._new_usuario(nombre_usuario, clave) login_data = {'nombre_usuario': nombre_usuario, 'clave': clave} inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', administradores=['usuario_admin', 'conny']) self.inscripcion_repository.add(inscripcion) response = self.client.post('/auth/login', data=login_data, follow_redirects=True) self.assertEqual(response.status_code, 200)
def create_inscripcion(): form = InscripcionForm() if form.validate_on_submit(): inscripcion = Inscripcion(id=uuid.uuid1(), localidad=form.localidad.data, servidor=form.servidor.data, fecha=form.fecha.data) if feature.is_enabled("COMPROBANTE_PAGO"): inscripcion.comprobante_uri = form.comprobante_uri.data.filename inscripcion_repository.add(inscripcion) return redirect(url_for('main.index_inscripcion')) return render_template('save_inscripcion.html', feature=feature, site=site, form=form)
def test_new_participante(self): self._login() inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', administradores=['usuario_1', 'admin']) self.inscripcion_repository.add(inscripcion) response = self.client.get( f"/inscripciones/{inscripcion.id}/participantes/new") self.assertEqual(response.status_code, 200) self.assertTrue('Nombres completos' in response.get_data(as_text=True)) self.assertTrue('Sexo' in response.get_data(as_text=True)) self.assertTrue('Telefono de contacto' in response.get_data( as_text=True)) self.assertTrue('Monto' in response.get_data(as_text=True)) self.assertTrue('Número de depósito' in response.get_data( as_text=True))
def test_should_not_show_a_participante_if_current_user_is_not_admin(self): self._login('usuario_1', 'secreto') inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', administradores=['usuario_2', 'admin']) self.inscripcion_repository.add(inscripcion) participante = Participante(id=uuid.uuid1(), nombres_completos='Raul Riera', sexo='H', telefono_contacto='9999999999', numero_deposito='12312', monto=25.00) self.participante_repository.add(participante, inscripcion.id) response = self.client.get( f"/inscripciones/{inscripcion.id}/participantes/{participante.id}") self.assertEqual(response.status_code, 403)
def test_not_show_index_of_participantes_if_current_user_is_not_admin( self): self._login() inscripcion_1 = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-09-01', administradores=['usuario_2', 'admin']) participante_1 = Participante(id=uuid.uuid1(), nombres_completos='Raul Riera', sexo='H', telefono_contacto='9999999999', monto=Decimal('25.00'), numero_deposito='123456') self.inscripcion_repository.add(inscripcion_1) self.participante_repository.add(participante_1, inscripcion_1.id) response = self.client.get( f"/inscripciones/{inscripcion_1.id}/participantes") self.assertEqual(response.status_code, 403)
def test_not_return_form_for_edition_if_current_user_is_not_admin(self): self._login() inscripcion = Inscripcion(id=uuid.uuid1(), localidad='Quito', servidor='Conny Riera', fecha='2018-08-01', administradores=['usuario_2', 'admin']) self.inscripcion_repository.add(inscripcion) participante = Participante(id=uuid.uuid1(), nombres_completos='Raul Riera', sexo='H', telefono_contacto='9999999999', monto=Decimal('25.00'), numero_deposito='14566185') self.participante_repository.add(participante, inscripcion.id) response = self.client.get( f"/inscripciones/{inscripcion.id}/participantes/' \ '{participante.id}/edit") self.assertEqual(response.status_code, 403)