Exemplo n.º 1
0
    def setUp(self):
        from productos.factories import ProductoFactory
        from terceros.factories import ProveedorFactory
        from ..factories import BodegaFactory
        from usuarios.factories import UserFactory
        from ..services import (movimiento_inventario_saldo_inicial_crear,
                                movimiento_inventario_detalle_entrada_add_item,
                                movimiento_inventario_aplicar_movimiento,
                                movimiento_inventario_venta_crear,
                                movimiento_inventario_detalle_salida_add_item)
        self.user = UserFactory()
        self.bodega = BodegaFactory()
        self.usuario = UserFactory()
        self.proveedor = ProveedorFactory()

        self.movimiento_compra = movimiento_inventario_saldo_inicial_crear(
            bodega_destino_id=self.bodega.id,
            usuario_id=self.usuario.id,
            fecha=timezone.now())

        self.producto_uno = ProductoFactory()
        self.producto_dos = ProductoFactory()
        self.producto_tres = ProductoFactory()

        self.mv_uno_detalle_uno = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_compra.id,
            producto_id=self.producto_uno.id,
            cantidad=20,
            costo_total=10000)
        self.mv_uno_detalle_dos = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_compra.id,
            producto_id=self.producto_dos.id,
            cantidad=20,
            costo_total=40000)
        self.movimiento_compra = movimiento_inventario_aplicar_movimiento(
            movimiento_inventario_id=self.movimiento_compra.id)

        self.movimiento_venta = movimiento_inventario_venta_crear(
            bodega_origen_id=self.bodega.id, usuario_id=self.usuario.id)

        self.mv_venta_uno_uno = movimiento_inventario_detalle_salida_add_item(
            movimiento_id=self.movimiento_venta.id,
            producto_id=self.producto_uno.id,
            cantidad=5)

        self.mv_venta_uno_dos = movimiento_inventario_detalle_salida_add_item(
            movimiento_id=self.movimiento_venta.id,
            producto_id=self.producto_dos.id,
            cantidad=5)

        self.movimiento_venta = movimiento_inventario_aplicar_movimiento(
            movimiento_inventario_id=self.movimiento_venta.id)

        self.movimiento_compra.refresh_from_db()
Exemplo n.º 2
0
    def setUp(self):
        from ..factories import ColaboradorFactory
        from usuarios.factories import UserFactory
        from ..services import colaborador_crear
        self.usuario = UserFactory()

        self.tercero_base = ColaboradorFactory.build(usuario=None)
        self.tercero_base.pop('es_colaborador')
        self.tercero_base.pop('usuario')
        self.colaborador = colaborador_crear(self.tercero_base)
Exemplo n.º 3
0
    def setUp(self):
        self.superuser = UserFactory(username='******', is_superuser=True)
        self.superuser.set_password('admin')
        self.superuser.save()
        self.token_admin = AuthToken.objects.create(self.superuser)

        self.user = UserFactory(username='******', is_superuser=False)
        self.user.set_password('otro')
        self.user.save()
        self.token_user = AuthToken.objects.create(self.user)

        self.url = ''

        self.Factory = None
        self.permiso = None
        self.instancia = None
        self.modelo = None
        self.data_for_create_test = None
        self.data_for_update_test = None
Exemplo n.º 4
0
 def setUp(self):
     from ..factories import MovimientoInventarioFactory, BodegaFactory
     from usuarios.factories import UserFactory
     from terceros.factories import ProveedorFactory
     from ..models import MovimientoInventario
     super().setUp()
     self.Factory = MovimientoInventarioFactory
     self.url = '/api/movimiento_inventario/'
     self.permiso = 'movimientoinventario'
     self.modelo = MovimientoInventario
     bodega = BodegaFactory()
     creado_por = UserFactory()
     proveedor = ProveedorFactory()
     self.data_for_create_test = self.Factory.stub(motivo='compra').__dict__
     self.data_for_create_test['creado_por'] = creado_por.id
     self.data_for_create_test['proveedor'] = proveedor.id
     self.data_for_create_test['bodega'] = bodega.id
     self.data_for_update_test = {'entra_cantidad': 15}
Exemplo n.º 5
0
    def setUp(self):
        from terceros_acompanantes.factories import CategoriaAcompananteFactory
        from ..factories import AcompananteFactory
        from usuarios.factories import UserFactory
        from ..services import acompanante_crear
        self.usuario = UserFactory()
        self.categoria_modelo = CategoriaAcompananteFactory()

        self.tercero_base = AcompananteFactory.build(
            usuario=None, categoria_modelo=self.categoria_modelo)
        self.tercero_base.pop('es_acompanante')
        self.tercero_base.pop('usuario')

        self.acompanante = acompanante_crear(self.tercero_base)

        self.categoria_modelo_dos = CategoriaAcompananteFactory()
        self.tercero_base_dos = AcompananteFactory.build(
            usuario=None, categoria_modelo=self.categoria_modelo_dos)
        self.tercero_base_dos.pop('es_acompanante')
        self.tercero_base_dos.pop('usuario')
        self.acompanante_dos = acompanante_crear(self.tercero_base_dos)
Exemplo n.º 6
0
 def setUp(self):
     self.usuario = UserFactory()
     self.categoria_modelo = CategoriaAcompananteFactory()
Exemplo n.º 7
0
    def setUp(self):
        from productos.factories import ProductoFactory
        from terceros.factories import ProveedorFactory
        from ..factories import BodegaFactory
        from usuarios.factories import UserFactory
        from ..services import (movimiento_inventario_saldo_inicial_crear,
                                movimiento_inventario_compra_crear,
                                movimiento_inventario_detalle_entrada_add_item)
        self.user = UserFactory()
        self.bodega_destino = BodegaFactory()
        self.usuario = UserFactory()
        self.proveedor = ProveedorFactory()

        self.movimiento_saldo_inicial = movimiento_inventario_saldo_inicial_crear(
            bodega_destino_id=self.bodega_destino.id,
            usuario_id=self.usuario.id,
            fecha=timezone.now())

        self.movimiento_compra_dos = movimiento_inventario_compra_crear(
            bodega_destino_id=self.bodega_destino.id,
            usuario_id=self.usuario.id,
            proveedor_id=self.proveedor.id,
            fecha=timezone.now())

        self.movimiento_compra_tres = movimiento_inventario_compra_crear(
            bodega_destino_id=self.bodega_destino.id,
            usuario_id=self.usuario.id,
            proveedor_id=self.proveedor.id,
            fecha=timezone.now())

        self.producto_uno = ProductoFactory()
        self.producto_dos = ProductoFactory()
        self.producto_tres = ProductoFactory()

        self.mv_uno_detalle_uno = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_saldo_inicial.id,
            producto_id=self.producto_uno.id,
            cantidad=20,
            costo_total=10000)
        self.mv_uno_detalle_dos = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_saldo_inicial.id,
            producto_id=self.producto_dos.id,
            cantidad=20,
            costo_total=40000)

        self.mv_dos_detalle_uno = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_compra_dos.id,
            producto_id=self.producto_uno.id,
            cantidad=10,
            costo_total=6000)
        self.mv_dos_detalle_dos = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_compra_dos.id,
            producto_id=self.producto_dos.id,
            cantidad=10,
            costo_total=22000)

        self.mv_tres_detalle_tres = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_compra_tres.id,
            producto_id=self.producto_tres.id,
            cantidad=15,
            costo_total=25000)
Exemplo n.º 8
0
    def setUp(self):
        from productos.factories import ProductoFactory
        from usuarios.factories import UserFactory
        from ..services import (movimiento_inventario_detalle_entrada_add_item,
                                movimiento_inventario_saldo_inicial_crear,
                                movimiento_inventario_aplicar_movimiento)
        from ..factories import TrasladoFactory, BodegaFactory
        from terceros.factories import ColaboradorFactory
        from terceros.services import (tercero_set_new_pin,
                                       tercero_registra_entrada)
        from puntos_venta.services import punto_venta_abrir
        from puntos_venta.factories import PuntoVentaFactory

        # Primer colaborador presente
        self.punto_venta_abierto = PuntoVentaFactory(usuario_actual=None,
                                                     abierto=False)
        self.colaborador_presente = ColaboradorFactory()
        tercero_set_new_pin(tercero_id=self.colaborador_presente.id,
                            raw_pin='0000')
        tercero_registra_entrada(self.colaborador_presente.id, raw_pin='0000')
        self.colaborador_presente.usuario.set_password('otro')
        self.colaborador_presente.usuario.save()
        punto_venta_abrir(usuario_pv_id=self.colaborador_presente.usuario.id,
                          punto_venta_id=self.punto_venta_abierto.id,
                          base_inicial_efectivo=0)
        self.punto_venta_abierto.refresh_from_db()
        self.bodega_punto_venta_abierto = self.punto_venta_abierto.bodega
        self.bodega_punto_venta_abierto.es_principal = False
        self.bodega_punto_venta_abierto.save()
        self.colaborador_presente.refresh_from_db()

        # Segundo colaborador presente
        self.punto_venta_abierto_dos = PuntoVentaFactory(usuario_actual=None,
                                                         abierto=False)
        self.colaborador_presente_dos = ColaboradorFactory()
        tercero_set_new_pin(tercero_id=self.colaborador_presente_dos.id,
                            raw_pin='0000')
        tercero_registra_entrada(self.colaborador_presente_dos.id,
                                 raw_pin='0000')
        self.colaborador_presente_dos.usuario.set_password('otro')
        self.colaborador_presente_dos.usuario.save()
        punto_venta_abrir(
            usuario_pv_id=self.colaborador_presente_dos.usuario.id,
            punto_venta_id=self.punto_venta_abierto_dos.id,
            base_inicial_efectivo=0)
        self.punto_venta_abierto_dos.refresh_from_db()
        self.bodega_punto_venta_abierto_dos = self.punto_venta_abierto_dos.bodega
        self.bodega_punto_venta_abierto_dos.es_principal = False
        self.bodega_punto_venta_abierto_dos.save()
        self.colaborador_presente_dos.refresh_from_db()

        # Colaborador no presente
        self.colaborador_no_presente = ColaboradorFactory()

        self.usuario = UserFactory()

        self.traslado = TrasladoFactory()

        self.producto_uno = ProductoFactory()
        self.producto_dos = ProductoFactory()
        self.producto_tres = ProductoFactory()
        self.producto_cuatro = ProductoFactory()

        self.bodega_inventario = BodegaFactory(es_principal=True)
        self.bodega_destino = BodegaFactory(es_principal=False)

        self.movimiento_saldo_inicial = movimiento_inventario_saldo_inicial_crear(
            bodega_destino_id=self.bodega_inventario.id,
            usuario_id=self.usuario.id,
            fecha=timezone.now())

        self.mv_uno_detalle_uno = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_saldo_inicial.id,
            producto_id=self.producto_uno.id,
            cantidad=20,
            costo_total=10000)
        self.mv_uno_detalle_dos = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_saldo_inicial.id,
            producto_id=self.producto_dos.id,
            cantidad=30,
            costo_total=40000)
        self.mv_uno_detalle_tres = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_saldo_inicial.id,
            producto_id=self.producto_tres.id,
            cantidad=40,
            costo_total=90000)
        movimiento_inventario_aplicar_movimiento(
            self.movimiento_saldo_inicial.id)
Exemplo n.º 9
0
 def usuariosSetUp(self):
     from usuarios.factories import UserFactory
     self.usuario_sin_tercero = UserFactory()
Exemplo n.º 10
0
 def setUp(self):
     self.bodega = BodegaFactory()
     self.usuario_actual = UserFactory()
Exemplo n.º 11
0
class BaseTestsApi(BaseTest):
    def setUp(self):
        self.superuser = UserFactory(username='******', is_superuser=True)
        self.superuser.set_password('admin')
        self.superuser.save()
        self.token_admin = AuthToken.objects.create(self.superuser)

        self.user = UserFactory(username='******', is_superuser=False)
        self.user.set_password('otro')
        self.user.save()
        self.token_user = AuthToken.objects.create(self.user)

        self.url = ''

        self.Factory = None
        self.permiso = None
        self.instancia = None
        self.modelo = None
        self.data_for_create_test = None
        self.data_for_update_test = None

    def cambiar_token_admin(self, usuario_nuevo):
        usuario_nuevo.is_superuser = True
        usuario_nuevo.save()
        self.token_admin = AuthToken.objects.create(usuario_nuevo)

    def ingreso_no_autorizado(self):
        response = self.client.get(self.url)
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    def crear(self, callback_create: Callable = None):
        count = self.modelo.objects.count()

        data = self.data_for_create_test
        response = self.client.post(
            self.url,
            data,
            HTTP_AUTHORIZATION='Token ' + self.token_user
        )
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

        permiso = Permission.objects.get(codename='add_%s' % self.permiso)
        self.user.user_permissions.add(permiso)

        response = self.client.post(
            self.url,
            data,
            HTTP_AUTHORIZATION='Token ' + self.token_user
        )
        try:
            id = response.data.pop('id')
            self.assertTrue(self.modelo.objects.filter(pk=id).exists())
        except:
            print(response.data)

        count_2 = self.modelo.objects.count()
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        if callback_create:
            callback_create(response)
        self.assertEqual(count + 1, count_2)

    def update(self, callback_update: Callable = None):
        data = self.data_for_create_test

        permiso = Permission.objects.get(codename='add_%s' % self.permiso)
        self.user.user_permissions.add(permiso)
        response = self.client.post(
            self.url,
            data,
            HTTP_AUTHORIZATION='Token ' + self.token_user
        )
        id = response.data.pop('id')
        self.instancia = self.modelo.objects.get(id=id)

        instancia_diccionario = model_to_dict(self.instancia)
        for x in self.data_for_update_test:
            instancia_diccionario[x] = self.data_for_update_test[x]

        response = self.client.put(
            '%s%s/' % (self.url, self.instancia.id),
            instancia_diccionario,
            HTTP_AUTHORIZATION='Token ' + self.token_user
        )
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

        permiso = Permission.objects.get(codename='change_%s' % self.permiso)
        self.user.user_permissions.add(permiso)
        response = self.client.put(
            '%s%s/' % (self.url, self.instancia.id),
            instancia_diccionario,
            content_type='application/json',
            HTTP_AUTHORIZATION='Token ' + self.token_user
        )
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        if callback_update:
            callback_update(response)

    def delete(self, callback_delete: Callable = None):
        data = self.data_for_create_test
        permiso = Permission.objects.get(codename='add_%s' % self.permiso)
        self.user.user_permissions.add(permiso)
        response = self.client.post(
            self.url,
            data,
            HTTP_AUTHORIZATION='Token ' + self.token_user
        )
        id = response.data.pop('id')
        self.assertTrue(self.modelo.objects.filter(pk=id).exists())

        count = self.modelo.objects.count()

        response = self.client.delete(
            '%s%s/' % (self.url, id),
            HTTP_AUTHORIZATION='Token ' + self.token_user
        )
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

        permiso = Permission.objects.get(codename='delete_%s' % self.permiso)
        self.user.user_permissions.add(permiso)

        response = self.client.delete(
            '%s%s/' % (self.url, id),
            HTTP_AUTHORIZATION='Token ' + self.token_user
        )
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
        self.assertFalse(self.modelo.objects.filter(pk=id).exists())
        if callback_delete:
            callback_delete(response)
        count_2 = self.modelo.objects.count()
        self.assertEqual(count - 1, count_2)

    def list(self, callback_view: Callable = None, callback_list: Callable = None):
        data = self.data_for_create_test
        permiso = Permission.objects.get(codename='add_%s' % self.permiso)
        self.user.user_permissions.add(permiso)
        response = self.client.post(
            self.url,
            data,
            HTTP_AUTHORIZATION='Token ' + self.token_user
        )
        id = response.data.pop('id')

        response = self.client.get(
            self.url,
            HTTP_AUTHORIZATION='Token ' + self.token_user
        )
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

        permiso = Permission.objects.get(codename='list_%s' % self.permiso)
        self.user.user_permissions.add(permiso)
        response = self.client.get(
            self.url,
            HTTP_AUTHORIZATION='Token ' + self.token_user
        )
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        if callback_list:
            callback_list(response)

        response = self.client.get(
            '%s%s/' % (self.url, id),
            HTTP_AUTHORIZATION='Token ' + self.token_user
        )
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)

        permiso = Permission.objects.get(codename='view_%s' % self.permiso)
        self.user.user_permissions.add(permiso)
        response = self.client.get(
            '%s%s/' % (self.url, id),
            HTTP_AUTHORIZATION='Token ' + self.token_user
        )
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        if callback_view:
            callback_view(response)

    def list_route_get(self, url_list_route: str, espera_error=False):
        url = '%s%s' % (self.url, url_list_route)
        response = self.client.get(
            url,
            HTTP_AUTHORIZATION='Token ' + self.token_admin
        )
        if not espera_error:
            self.assertEqual(response.status_code, status.HTTP_200_OK)
        return response

    def list_route_post(self, url_list_route: str, values, espera_error=False):
        url = '%s%s' % (self.url, url_list_route)
        response = self.client.post(
            url,
            values,
            HTTP_AUTHORIZATION='Token ' + self.token_admin
        )
        if not espera_error:
            self.assertEqual(response.status_code, status.HTTP_200_OK)
        return response

    def detail_route_post(self, url_detail_route: str, values, id_detail, espera_error=False):
        url = '%s%s/%s/' % (self.url, id_detail, url_detail_route)

        response = self.client.post(
            url,
            values,
            HTTP_AUTHORIZATION='Token ' + self.token_admin
        )
        if not espera_error:
            self.assertEqual(response.status_code, status.HTTP_200_OK)
        return response

    def retrive_get(self, id_detail, espera_error=False):
        url = '%s%s/' % (self.url, id_detail)

        response = self.client.get(
            url,
            HTTP_AUTHORIZATION='Token ' + self.token_admin
        )
        if not espera_error:
            self.assertEqual(response.status_code, status.HTTP_200_OK)
        return response