예제 #1
0
        public void InsertarAcciónDeInventario_NadaRaro_RetornaId_1()
        {
            // Arrange
            var connectionStringBuilder =
                new SqliteConnectionStringBuilder {
                DataSource = ":memory:"
            };
            var connection = new SqliteConnection(connectionStringBuilder.ToString());

            var options = new DbContextOptionsBuilder <IntegraDbContext>()
                          .UseSqlite(connection)
                          .Options;

            using (var context = new IntegraDbContext(options))
            {
                context.Database.OpenConnection();
                context.Database.EnsureCreated();
            }
            // Incluir artículos
            using (var context = new IntegraDbContext(options))
            {
                var repositorioArtículos = new ArtículoRepository(context);

                repositorioArtículos.Adicionar(new Artículo {
                    ArtículoSubTipoId = 1, UnidadId = 11, Código = "LEC001", Nombre = "Leche Entera", EstadoId = EstadoEnum.Activo
                });
                repositorioArtículos.Adicionar(new Artículo {
                    ArtículoSubTipoId = 1, UnidadId = 11, Código = "LEC002", Nombre = "Leche Descremada", EstadoId = EstadoEnum.Activo
                });
                repositorioArtículos.SaveChanges();
            }

            // Incluir inventario
            using (var context = new IntegraDbContext(options))
            {
                var repositorio = new InventarioRepository(context);

                repositorio.Adicionar(new Inventario {
                    BodegaId = 1, ArtículoId = 1, UbicaciónId = 1, UnidadId = 1, Cantidad = 100
                });
                repositorio.Adicionar(new Inventario {
                    BodegaId = 1, ArtículoId = 2, UbicaciónId = 1, UnidadId = 1, Cantidad = 100
                });
                repositorio.SaveChanges();
            }

            // Incluir acción
            using (var context = new IntegraDbContext(options))
            {
                var repositorio = new AcciónDeInventarioRepository(context);



                AcciónDeInventario acción = new AcciónDeInventario();
                ulong id = 1;

                acción.AcciónDeInventarioId = id;
                acción.ClienteId            = 1;
                acción.BodegaId             = 1;
                acción.VendedorId           = 1;
                acción.Signo = -1;
                acción.Fecha = System.DateTime.Now;

                List <AcciónDeInventarioDetalle> detalles = new List <AcciónDeInventarioDetalle>();
                detalles.Add(new AcciónDeInventarioDetalle {
                    AcciónDeInventarioId = id, NúmeroDeLinea = 1, ArtículoId = 1, Cantidad = 1, PrecioUnitario = 5
                });
                detalles.Add(new AcciónDeInventarioDetalle {
                    AcciónDeInventarioId = id, NúmeroDeLinea = 2, ArtículoId = 2, Cantidad = 1, PrecioUnitario = 10
                });

                acción.CantidadDeLíneas           = (ushort)detalles.Count();
                acción.Total                      = 15;
                acción.AcciónDeInventarioDetalles = detalles;


                //	Act
                repositorio.Adicionar(acción);
                repositorio.SaveChanges();
                var objeto = repositorio.TraerUnoAsync(o => o.AcciónDeInventarioId == id, new List <string> {
                    "AcciónDeInventarioDetalles"
                });

                //	Assert
                Assert.Equal(id, objeto.Result.AcciónDeInventarioId);
                Assert.Equal(2, objeto.Result.AcciónDeInventarioDetalles.Count());
            }
        }
예제 #2
0
//		[InlineData(1, 7, 0)]
        public void ProcesarRecetas(ushort Receta, int CantidadAProducir, int CantidadProducida)
        {
            // Arrange
            var connectionStringBuilder =
                new SqliteConnectionStringBuilder {
                DataSource = ":memory:"
            };
            var connection = new SqliteConnection(connectionStringBuilder.ToString());

            var options = new DbContextOptionsBuilder <IntegraDbContext>()
                          .UseSqlite(connection)
                          .Options;

            using (var context = new IntegraDbContext(options))
            {
                context.Database.OpenConnection();
                context.Database.EnsureCreated();

                context.SaveChanges();
            }

            using (var context = new IntegraDbContext(options))
            {
                var artículoRepository = new ArtículoRepository(context);

                // Crear artículos
                artículoRepository.Adicionar(new Artículo {
                    ArtículoSubTipoId = 1, UnidadId = 11, Código = "LEC001", Nombre = "Leche Entera", EstadoId = EstadoEnum.Activo
                });
                artículoRepository.Adicionar(new Artículo {
                    ArtículoSubTipoId = 3, UnidadId = 11, Código = "NAT001", Nombre = "Nata líquida", EstadoId = EstadoEnum.Activo
                });
                artículoRepository.Adicionar(new Artículo {
                    ArtículoSubTipoId = 4, UnidadId = 13, Código = "FSE001", Nombre = "Avellanas", EstadoId = EstadoEnum.Activo
                });
                artículoRepository.Adicionar(new Artículo {
                    ArtículoSubTipoId = 4, UnidadId = 13, Código = "FSE003", Nombre = "Nueces", EstadoId = EstadoEnum.Activo
                });
                artículoRepository.Adicionar(new Artículo {
                    ArtículoSubTipoId = 6, UnidadId = 13, Código = "VAR003", Nombre = "Chocolate", EstadoId = EstadoEnum.Activo
                });
                artículoRepository.Adicionar(new Artículo {
                    ArtículoSubTipoId = 100, UnidadId = 12, Código = "HEL001", Nombre = "Helado de Vainilla", EstadoId = EstadoEnum.Activo
                });

                context.SaveChanges();
            }


            using (var context = new IntegraDbContext(options))
            {
                var recetaRepository = new RecetaRepository(context);

                //Crear las recetas
                recetaRepository.Adicionar(new Receta
                {
                    RecetaId          = 1,
                    Nombre            = "Helado de nueces y chocolate",
                    ArtículoId        = 6,
                    CantidadProducida = 1,
                    RecetaDetalles    = new List <RecetaDetalle>()
                    {
                        new RecetaDetalle {
                            RecetaDetalleId = 1, RecetaId = 1, ArtículoId = 1, Cantidad = 100
                        },
                        new RecetaDetalle {
                            RecetaDetalleId = 2, RecetaId = 1, ArtículoId = 4, Cantidad = 200
                        },
                        new RecetaDetalle {
                            RecetaDetalleId = 3, RecetaId = 1, ArtículoId = 5, Cantidad = 300
                        }
                    }
                });
                context.SaveChanges();
            }


            using (var context = new IntegraDbContext(options))
            {
                var inventarioRepository = new InventarioRepository(context);

                //  Llenar el inventario para las pruebas
                inventarioRepository.Adicionar(new Inventario {
                    BodegaId = 1, UbicaciónId = 1, ArtículoId = 1, Cantidad = 400, UnidadId = 1
                });
                inventarioRepository.Adicionar(new Inventario {
                    BodegaId = 1, UbicaciónId = 1, ArtículoId = 4, Cantidad = 800, UnidadId = 1
                });
                inventarioRepository.Adicionar(new Inventario {
                    BodegaId = 1, UbicaciónId = 1, ArtículoId = 5, Cantidad = 1200, UnidadId = 1
                });

                context.SaveChanges();
            }


            using (var context = new IntegraDbContext(options))
            {
                var loggerMock                   = new Mock <ILogger <Artículo> >();
                var artículoRepository           = new ArtículoRepository(context);
                var inventarioRepository         = new InventarioRepository(context);
                var recetaRepository             = new RecetaRepository(context);
                var acciónDeInventarioRepository = new AcciónDeInventarioRepository(context);


                //	Act
                var servicio = new ArtículoService(context, loggerMock.Object, artículoRepository, inventarioRepository, recetaRepository, acciónDeInventarioRepository);

                servicio.Producir(Receta, CantidadAProducir, 1);

                //	Assert
                var inventarioTerminado = inventarioRepository.TraerUnoAsync(i => i.ArtículoId == 6 && i.BodegaId == 1 && i.UbicaciónId == 1);
                var resultado           = inventarioTerminado.Result;

                Assert.Equal(CantidadProducida, resultado.Cantidad);
            }
        }