示例#1
0
 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)
示例#5
0
    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()
示例#6
0
    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)