def setUp(self): '''Crea un listado de actividades para hacer las pruebas''' self.listado = Listado() '''Abre la sesión''' self.session = Session() '''Crea los objetos''' self.actividad1 = Actividad(nombre='Actividad 1') self.actividad2 = Actividad(nombre='Actividad 2') self.gasto1 = Gasto(concepto="Comida", valor=100, fecha=51000, actividad='Actividad 1', viajero='Juan Perez') self.gasto2 = Gasto(concepto="Transporte", valor=200, fecha=51001, actividad='Actividad 2', viajero='Rosa Gomez') '''Adiciona los objetos a la sesión''' self.session.add(self.actividad1) self.session.add(self.actividad2) self.session.add(self.gasto1) self.session.add(self.gasto2) '''Persiste los objetos y cierra la sesión''' self.session.commit() self.session.close()
def test_visualizar_lista_gastos_por_actividad_con_mas_de_un_gasto(self): nombre_actividad = self.data_factory.name() nombre_viajero = self.data_factory.first_name() apellido_viajero = self.data_factory.last_name() gasto1 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 100), fecha=self.data_factory.text()) gasto2 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 100), fecha=self.data_factory.text()) gasto3 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 100), fecha=self.data_factory.text()) self.cuentas_claras.insertar_actividad(nombre_actividad) self.cuentas_claras.agregar_viajero(nombre_viajero, apellido_viajero) self.session.add(gasto1) self.session.add(gasto2) self.session.add(gasto3) actividad = self.session.query(Actividad).filter( Actividad.nombre == nombre_actividad).first() viajero = self.session.query(Viajero).filter( Viajero.nombre == nombre_viajero and Viajero.apellido == apellido_viajero).first() actividad.gastos = [gasto1, gasto2, gasto3] viajero.gastos = [gasto1, gasto2, gasto3] self.session.commit() self.cuentas_claras.asociar_viajero_a_actividad( viajero.id, actividad.id) consulta1 = self.cuentas_claras.dar_gastos_actividad(actividad.id) self.assertGreater(len(consulta1), 1)
def test_reporte_n_gastos_con_un_viajero(self): nombre_actividad = self.data_factory.name() nombre_viajero = self.data_factory.unique.first_name() apellido_viajero = self.data_factory.last_name() self.gasto1 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 100), fecha=self.data_factory.text()) self.gasto2 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 100), fecha=self.data_factory.text()) self.gasto3 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 500), fecha=self.data_factory.text()) self.gasto4 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 300), fecha=self.data_factory.text()) self.session.add(self.gasto1) self.session.add(self.gasto2) self.session.add(self.gasto3) self.session.add(self.gasto4) self.cuentas_claras.insertar_actividad(nombre_actividad) self.cuentas_claras.agregar_viajero(nombre_viajero, apellido_viajero) self.actividad = self.session.query(Actividad).filter( Actividad.nombre == nombre_actividad).first() self.viajero = self.session.query(Viajero).filter( Viajero.nombre == nombre_viajero and Viajero.apellido == apellido_viajero).first() self.actividad.gastos = [ self.gasto1, self.gasto2, self.gasto3, self.gasto4 ] self.viajero.gastos = [ self.gasto1, self.gasto2, self.gasto3, self.gasto4 ] self.session.commit() self.cuentas_claras.asociar_viajero_a_actividad( self.viajero.id, self.actividad.id) matriz = self.cuentas_claras.reporte_gastos_viajero(self.actividad.id) total = 0 for i in range(len(matriz)): for j in range(len(matriz[i])): if j == 1: total = total + matriz[i][j] self.assertEqual(total, (self.gasto1.valor + self.gasto2.valor + self.gasto3.valor + self.gasto4.valor)) self.assertEqual(len(matriz), 1)
def test_reporte_compensacion_actividad_con_un_viajero_con_n_gastos(self): nombre_actividad = self.data_factory.name() nombre_viajero = self.data_factory.first_name() apellido_viajero = self.data_factory.last_name() self.cuentas_claras.insertar_actividad(nombre_actividad) self.cuentas_claras.agregar_viajero(nombre_viajero, apellido_viajero) self.gasto1 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 1000), fecha=self.data_factory.date()) self.gasto2 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 1000), fecha=self.data_factory.date()) self.gasto3 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 1000), fecha=self.data_factory.date()) self.gasto4 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 1000), fecha=self.data_factory.date()) self.actividad0 = self.session.query(Actividad).filter( Actividad.nombre == nombre_actividad).first() self.viajero0 = self.session.query(Viajero).filter( Viajero.nombre == nombre_viajero and Viajero.apellido == apellido_viajero).first() self.session.add(self.gasto1) self.session.add(self.gasto2) self.session.add(self.gasto3) self.session.add(self.gasto4) self.actividad0.gastos = [ self.gasto1, self.gasto2, self.gasto3, self.gasto4 ] self.viajero0.gastos = [ self.gasto1, self.gasto2, self.gasto3, self.gasto4 ] self.session.commit() self.cuentas_claras.asociar_viajero_a_actividad( self.viajero0.id, self.actividad0.id) matriz = self.cuentas_claras.generar_reporte_compensacion( self.actividad0.id) total = 0 for i in range(2, len(matriz)): for j in range(1, len(matriz[i])): total = total + matriz[i][j] self.assertEqual(total, -1)
def setUp(self): '''Crea una colección para hacer las pruebas''' self.cuentas_claras = Cuentas_claras() '''Abre la sesión''' self.session = Session() '''Crear Faker ''' self.data_factory = Faker() Faker.seed(1000) '''Crea las actividades''' # crear actividades random self.actividades = [] for _ in range(1): actividad = Actividad(nombre=self.data_factory.unique.name()) self.session.add(actividad) self.actividades.append(actividad) # crear viajeros random self.viajeros = [] for _ in range(4): viajero = Viajero(self.data_factory.unique.first_name(), self.data_factory.unique.last_name()) self.session.add(viajero) self.viajeros.append(viajero) for i in range(len(self.viajeros)): self.actividades[0].agregar_viajero_en_actividad(self.viajeros[i]) # crear gastos random self.gastos = [] for _ in range(8): gasto = Gasto(concepto=self.data_factory.unique.name(), valor=random.uniform(1, 1000), fecha_gasto=datetime.strptime( self.data_factory.date(), '%Y-%m-%d')) self.session.add(gasto) self.gastos.append(gasto) # se asigna aleatoriamente los gastos a los viajeros for i in range(len(self.gastos)): viajero_id = random.randrange(len(self.viajeros)) self.viajeros[viajero_id].agregar_gasto(self.gastos[i]) for i in range(len(self.gastos)): self.actividades[0].agregar_gasto(self.gastos[i]) '''Persiste los objetos y cierra la sesión''' self.session.commit()
def setUp(self): '''Crea una colección para hacer las pruebas''' self.cuentas_claras = Cuentas_claras() '''Abre la sesión''' self.session = Session() self.data_factory = Faker() Faker.seed(1000) # crear actividades random self.actividades = [] for _ in range(2): actividad = Actividad(nombre=self.data_factory.text()) self.session.add(actividad) self.actividades.append(actividad) # crear viajeros random self.viajeros = [] for _ in range(2): viajero = Viajero(self.data_factory.unique.first_name(), self.data_factory.unique.last_name()) self.session.add(viajero) self.viajeros.append(viajero) self.actividades[1].agregar_viajero_en_actividad(self.viajeros[0]) self.actividades[1].agregar_viajero_en_actividad(self.viajeros[1]) # crear gastos random self.gastos = [] for _ in range(2): gasto = Gasto(concepto=self.data_factory.text(), valor=random.uniform(1, 1000), fecha_gasto=datetime.strptime( self.data_factory.date(), '%Y-%m-%d')) self.session.add(gasto) self.gastos.append(gasto) self.viajeros[0].agregar_gasto(self.gastos[0]) self.viajeros[0].agregar_gasto(self.gastos[1]) self.actividades[1].agregar_gasto(self.gastos[0]) self.actividades[1].agregar_gasto(self.gastos[1]) self.session.commit()
def setUp(self): ''' Se puebla la base de datos para las pruebas''' self.session = Session() busqueda_actividad = self.session.query(Actividad).all() for actividad in busqueda_actividad: self.session.delete(actividad) busqueda_viajero = self.session.query(Viajero).all() for viajero in busqueda_viajero: self.session.delete(viajero) busqueda_gasto = self.session.query(Gasto).all() for gasto in busqueda_gasto: self.session.delete(gasto) busqueda_av = self.session.query(ActividadViajero).all() for av in busqueda_av: self.session.delete(av) self.session.commit() # Crear actividades y agregarlas a la base de datos con add y commit self.actividad_1 = Actividad("Paseo a la Playa") self.actividad_2 = Actividad("Caminata") self.session.add(self.actividad_1) self.session.add(self.actividad_2) self.session.commit() # Crear los viajeros y agregarlos a la base de datos con add y commit self.viajero_1 = Viajero("Juan", "Perez") self.viajero_2 = Viajero("Rosa", "Garcia") self.viajero_3 = Viajero("Luis", "Mora") self.viajero_4 = Viajero("Ana", "Zavala") self.session.add(self.viajero_1) self.session.add(self.viajero_2) self.session.add(self.viajero_3) self.session.add(self.viajero_4) self.session.commit() # Crear los gastos. Note que el atributo fecha en este momento es String. self.gasto_1 = Gasto("Transporte", 100, '21-01-2021') self.gasto_2 = Gasto("Comida", 200, '22-01-2021') self.gasto_3 = Gasto("Bebida", 90, '23-01-2021') self.gasto_4 = Gasto("Fiesta", 120, '24-01-2021') self.gasto_5 = Gasto("Transporte", 150, '28-01-2021') self.session.add(self.gasto_1) self.session.add(self.gasto_2) self.session.add(self.gasto_3) self.session.add(self.gasto_4) self.session.add(self.gasto_5) self.session.commit() # Crea las relaciones entre actividad y viajero (cuales son los viajeros asociados a cada actividad) self.actividad_1.viajeros = [ self.viajero_1, self.viajero_2, self.viajero_3, self.viajero_4 ] self.actividad_2.viajeros = [self.viajero_2] # Crea las relaciones entre actividad y gasto *(cuales son los gastos de cada actividad) self.actividad_1.gastos = [ self.gasto_1, self.gasto_2, self.gasto_3, self.gasto_4 ] self.actividad_2.gastos = [self.gasto_5] # Crea las relaciones entre viajero y gastos (que viajero realizo cada gasto) self.viajero_1.gastos = [self.gasto_1, self.gasto_3] self.viajero_2.gastos = [self.gasto_2, self.gasto_5] self.viajero_3.gastos = [self.gasto_4] self.viajero_4.gastos = [] self.session.commit() # Cierra la sesion self.session.close()
session.commit() # Crear los viajeros y agregarlos a la base de datos con add y commit viajero_1 = Viajero("Juan", "Perez") viajero_2 = Viajero("Rosa", "Garcia") viajero_3 = Viajero("Luis", "Mora") viajero_4 = Viajero("Ana", "Zavala") session.add(viajero_1) session.add(viajero_2) session.add(viajero_3) session.add(viajero_4) session.commit() # Crear los gastos. Note que el atributo fecha en este momento es String. gasto_1 = Gasto("Transporte", 100, '21-01-2021') gasto_2 = Gasto("Comida", 200, '22-01-2021') gasto_3 = Gasto("Bebida", 90, '23-01-2021') gasto_4 = Gasto("Fiesta", 120, '24-01-2021') gasto_5 = Gasto("Transporte", 150, '28-01-2021') session.add(gasto_1) session.add(gasto_2) session.add(gasto_3) session.add(gasto_4) session.add(gasto_5) session.commit() # Crea las relaciones entre actividad y viajero (cuales son los viajeros asociados a cada actividad) actividad_1.viajeros = [viajero_1, viajero_2, viajero_3, viajero_4] actividad_2.viajeros = [viajero_2]
def test_reporte_n_gastos_con_n_viajer(self): nombre_actividad = self.data_factory.name() nombre_viajero = self.data_factory.unique.first_name() apellido_viajero = self.data_factory.last_name() nombre_viajero2 = self.data_factory.unique.first_name() apellido_viajero2 = self.data_factory.last_name() nombre_viajero3 = self.data_factory.unique.first_name() apellido_viajero3 = self.data_factory.last_name() self.gasto1 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 100), fecha=self.data_factory.text()) self.gasto2 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 100), fecha=self.data_factory.text()) self.gasto3 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 500), fecha=self.data_factory.text()) self.gasto4 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 300), fecha=self.data_factory.text()) self.gasto5 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 300), fecha=self.data_factory.text()) self.gasto6 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 300), fecha=self.data_factory.text()) self.session.add(self.gasto1) self.session.add(self.gasto2) self.session.add(self.gasto3) self.session.add(self.gasto4) self.session.add(self.gasto5) self.session.add(self.gasto6) self.cuentas_claras.insertar_actividad(nombre_actividad) self.cuentas_claras.agregar_viajero(nombre_viajero, apellido_viajero) self.cuentas_claras.agregar_viajero(nombre_viajero2, apellido_viajero2) self.cuentas_claras.agregar_viajero(nombre_viajero3, apellido_viajero3) self.actividad = self.session.query(Actividad).filter( Actividad.nombre == nombre_actividad).first() self.viajero = self.session.query(Viajero).filter( Viajero.nombre == nombre_viajero and Viajero.apellido == apellido_viajero).first() self.viajero2 = self.session.query(Viajero).filter( Viajero.nombre == nombre_viajero2 and Viajero.apellido == apellido_viajero2).first() self.viajero3 = self.session.query(Viajero).filter( Viajero.nombre == nombre_viajero3 and Viajero.apellido == apellido_viajero3).first() self.actividad.gastos = [ self.gasto1, self.gasto2, self.gasto3, self.gasto4, self.gasto5, self.gasto6 ] self.viajero.gastos = [ self.gasto1, self.gasto2, self.gasto3, self.gasto4 ] self.viajero2.gastos = [self.gasto5, self.gasto6] self.session.commit() self.cuentas_claras.asociar_viajero_a_actividad( self.viajero.id, self.actividad.id) self.cuentas_claras.asociar_viajero_a_actividad( self.viajero2.id, self.actividad.id) self.cuentas_claras.asociar_viajero_a_actividad( self.viajero3.id, self.actividad.id) matriz = self.cuentas_claras.reporte_gastos_viajero(self.actividad.id) gastos = [ gasto.valor for gasto in self.session.query(Gasto).filter( Gasto.actividad == self.actividad.id).all() ] total_gastos = 0 for gasto in gastos: total_gastos = total_gastos + gasto total = 0 for i in range(len(matriz)): for j in range(len(matriz[i])): if j == 1: total = total + matriz[i][j] self.assertEqual(total, total_gastos) self.assertEqual( len(matriz), len( self.session.query(Viajero).filter( Viajero.actividades.any( Actividad.id == self.actividad.id)).all()))
def test_reporte_compensacion_actividad_con_varios_viajeros_con_n_gastos_con_compensacion( self): nombre_actividad = self.data_factory.name() nombre_viajero = self.data_factory.first_name() apellido_viajero = self.data_factory.last_name() nombre_viajero1 = self.data_factory.first_name() apellido_viajero1 = self.data_factory.last_name() nombre_viajero2 = self.data_factory.first_name() apellido_viajero2 = self.data_factory.last_name() nombre_viajero3 = self.data_factory.first_name() apellido_viajero3 = self.data_factory.last_name() self.cuentas_claras.insertar_actividad(nombre_actividad) self.cuentas_claras.agregar_viajero(nombre_viajero, apellido_viajero) self.cuentas_claras.agregar_viajero(nombre_viajero1, apellido_viajero1) self.cuentas_claras.agregar_viajero(nombre_viajero2, apellido_viajero2) self.cuentas_claras.agregar_viajero(nombre_viajero3, apellido_viajero3) self.gasto1 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 1000), fecha=self.data_factory.date()) self.gasto2 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 1000), fecha=self.data_factory.date()) self.gasto3 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 1000), fecha=self.data_factory.date()) self.gasto4 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 1000), fecha=self.data_factory.date()) self.gasto5 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 1000), fecha=self.data_factory.date()) self.gasto6 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 1000), fecha=self.data_factory.date()) self.gasto7 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 1000), fecha=self.data_factory.date()) self.gasto8 = Gasto(concepto=self.data_factory.name(), valor=self.data_factory.random_int(1, 1000), fecha=self.data_factory.date()) self.actividad0 = self.session.query(Actividad).filter( Actividad.nombre == nombre_actividad).first() self.viajero0 = self.session.query(Viajero).filter( Viajero.nombre == nombre_viajero and Viajero.apellido == apellido_viajero).first() self.viajero1 = self.session.query(Viajero).filter( Viajero.nombre == nombre_viajero1 and Viajero.apellido == apellido_viajero1).first() self.viajero2 = self.session.query(Viajero).filter( Viajero.nombre == nombre_viajero2 and Viajero.apellido == apellido_viajero2).first() self.viajero3 = self.session.query(Viajero).filter( Viajero.nombre == nombre_viajero3 and Viajero.apellido == apellido_viajero3).first() self.session.add(self.gasto1) self.session.add(self.gasto2) self.session.add(self.gasto3) self.session.add(self.gasto4) self.session.add(self.gasto5) self.session.add(self.gasto6) self.session.add(self.gasto7) self.session.add(self.gasto8) self.actividad0.gastos = [ self.gasto1, self.gasto2, self.gasto3, self.gasto4, self.gasto5, self.gasto6, self.gasto7, self.gasto8 ] self.viajero0.gastos = [ self.gasto1, self.gasto2, self.gasto3, self.gasto4 ] self.viajero1.gastos = [self.gasto5, self.gasto6] self.viajero3.gastos = [self.gasto7, self.gasto8] self.session.commit() self.cuentas_claras.asociar_viajero_a_actividad( self.viajero0.id, self.actividad0.id) self.cuentas_claras.asociar_viajero_a_actividad( self.viajero1.id, self.actividad0.id) self.cuentas_claras.asociar_viajero_a_actividad( self.viajero2.id, self.actividad0.id) self.cuentas_claras.asociar_viajero_a_actividad( self.viajero3.id, self.actividad0.id) matriz = self.cuentas_claras.generar_reporte_compensacion( self.actividad0.id) total_viajeros = len( self.session.query(Viajero).filter( Viajero.actividades.any( Actividad.id == self.actividad0.id)).all()) valores_gastos = [ gasto.valor for gasto in self.session.query(Gasto).filter( Gasto.actividad == self.actividad0.id).all() ] total_valores = 0 for valor in valores_gastos: total_valores = total_valores + valor total = 0 for i in range(2, len(matriz)): for j in range(1, len(matriz[i])): total = total + matriz[i][j] total_gastos = 0 for j in range(1, len(matriz[1])): total_gastos = total_gastos + matriz[1][j] suma_columna = 0 for j in range(1, total_viajeros + 1): for i in range(1, total_viajeros + 2): if matriz[1][j] <= (total_valores / total_viajeros): if matriz[i][j] == -1: pass else: suma_columna = suma_columna + matriz[i][j] if i == total_viajeros + 1: self.assertEqual(suma_columna, total_valores / total_viajeros) suma_columna = 0 self.assertEqual(total_gastos, total_valores)
def test_reporte_compensacion_actividad_con_varios_viajeros_con_n_gastos_sin_compensacion( self): nombre_actividad = self.data_factory.name() nombre_viajero = self.data_factory.first_name() apellido_viajero = self.data_factory.last_name() nombre_viajero1 = self.data_factory.first_name() apellido_viajero1 = self.data_factory.last_name() self.cuentas_claras.insertar_actividad(nombre_actividad) self.cuentas_claras.agregar_viajero(nombre_viajero, apellido_viajero) self.cuentas_claras.agregar_viajero(nombre_viajero1, apellido_viajero1) self.data_valores = [ self.data_factory.random_int(1, 1000) for i in range(4) ] self.suma_valores = 0 for valor in self.data_valores: self.suma_valores += valor self.gasto1 = Gasto(concepto=self.data_factory.name(), valor=self.data_valores[0], fecha=self.data_factory.date()) self.gasto2 = Gasto(concepto=self.data_factory.name(), valor=self.data_valores[1], fecha=self.data_factory.date()) self.gasto3 = Gasto(concepto=self.data_factory.name(), valor=self.data_valores[2], fecha=self.data_factory.date()) self.gasto4 = Gasto(concepto=self.data_factory.name(), valor=self.data_valores[3], fecha=self.data_factory.date()) self.gasto5 = Gasto(concepto=self.data_factory.name(), valor=self.suma_valores, fecha=self.data_factory.date()) self.actividad0 = self.session.query(Actividad).filter( Actividad.nombre == nombre_actividad).first() self.viajero0 = self.session.query(Viajero).filter( Viajero.nombre == nombre_viajero and Viajero.apellido == apellido_viajero).first() self.viajero1 = self.session.query(Viajero).filter( Viajero.nombre == nombre_viajero1 and Viajero.apellido == apellido_viajero1).first() self.session.add(self.gasto1) self.session.add(self.gasto2) self.session.add(self.gasto3) self.session.add(self.gasto4) self.session.add(self.gasto5) self.actividad0.gastos = [ self.gasto1, self.gasto2, self.gasto3, self.gasto4, self.gasto5 ] self.viajero0.gastos = [ self.gasto1, self.gasto2, self.gasto3, self.gasto4 ] self.viajero1.gastos = [self.gasto5] self.session.commit() self.cuentas_claras.asociar_viajero_a_actividad( self.viajero0.id, self.actividad0.id) self.cuentas_claras.asociar_viajero_a_actividad( self.viajero1.id, self.actividad0.id) matriz = self.cuentas_claras.generar_reporte_compensacion( self.actividad0.id) valores_gastos = [ gasto.valor for gasto in self.session.query(Gasto).filter( Gasto.actividad == self.actividad0.id).all() ] total_valores = 0 for valor in valores_gastos: total_valores = total_valores + valor total = 0 for i in range(2, len(matriz)): for j in range(1, len(matriz[i])): total = total + matriz[i][j] total_gastos = 0 for j in range(1, len(matriz[1])): total_gastos = total_gastos + matriz[1][j] self.assertEqual(total, -2) self.assertEqual(total_gastos, total_valores)