public void TestBuscarArticuloPorId() { //Arrange ArticuloComputacion auxArticulo = new ArticuloComputacion("teclado", 125, 0, 5); Distribuidora.listaDeArticulos.Add(auxArticulo); //Act Articulo unArticulo = Distribuidora.buscarArticuloPorId(5); //Assert Assert.IsNotNull(unArticulo); }
/// <summary> /// Metodo que maneja el hilo que procesa de manera automatica las ventas y muestra los resultados por pantalla. /// </summary> public void ProcesarVentas() { bool continuar = true; try { hiloActivo = true; while (continuar == true) { ActualizarDtvVentasPendientes(); Thread.Sleep(4000); //Valida que existan ventas pendientes if (Distribuidora.colaVentasPendientes.Count > 0) { Venta auxVenta = Distribuidora.colaVentasPendientes.Dequeue(); if (Distribuidora.ConfirmarStockVentasExternas(auxVenta)) { //Busca el articulo a vender Articulo auxArticulo = Distribuidora.buscarArticuloPorId(auxVenta.IdArticulo); auxArticulo.Cantidad = auxArticulo.Cantidad - auxVenta.Cantidad; //Actualiza el stock del articulo HelperBD.ActualizarStockArticulo(auxArticulo); //Actualiza el estado de la venta auxVenta.EstadoVenta = Venta.EEstadoVenta.Conforme; HelperBD.ActualizarEstadoVenta(auxVenta); //Pasa la venta a la cola de ventas procesadas Distribuidora.colaVentasProcesadas.Enqueue(auxVenta); //Actualiza los DataGridView que van mostrando los resultados del proceso ActualizarDtvVentasPendientes(); ActualizarDtvVentasProcesadas(); Thread.Sleep(4000); } else { //Si no se pudo conformar la venta se cambia su estado a rechazada auxVenta.EstadoVenta = Venta.EEstadoVenta.Rechazada; HelperBD.ActualizarEstadoVenta(auxVenta); Distribuidora.colaVentasProcesadas.Enqueue(auxVenta); //Suscribe el método GenerarLogVentasRechazadas al delegado ventaRechazada a fin de ser ejecutado al lanzar el evento Distribuidora.ventaRechazada += Distribuidora.GenerarLogVentasRechazadas; //Llamada al evento que desencadena la escritura del archivo de texto con el log de ventas rechazadas Distribuidora.InvocarEvento(auxVenta); ActualizarDtvVentasPendientes(); ActualizarDtvVentasProcesadas(); Thread.Sleep(4000); } } else { //Si no hay más ventas pendientes lo informa por pantalla validando antes que se pueda llamar al control lblmensajeventas que es manejado por el hilo del formulario if (this.lblmensajeventas.InvokeRequired) { this.lblmensajeventas.BeginInvoke((MethodInvoker) delegate() { lblmensajeventas.Visible = true; this.lblmensajeventas.Text = "No hay ventas externas para procesar"; }); } else { lblmensajeventas.Visible = true; this.lblmensajeventas.Text = "No hay ventas externas para procesar"; } continuar = false; } } hiloActivo = false; } catch (Exception) { throw; } }