public CostoHabitacionPorDia GenerarPrecioDeHabitacionPorFechaYUsuario(Habitacion habitacion, DateTime fecha, Usuario usuario) { decimal porcentajeCosto = 1; //si recibimos un usuario y es un usuario premium, aplicar descuento de 10% if (usuario != null && usuario.EsUsuarioPremium) { porcentajeCosto -= 0.10m; } //si recibimos fecha, aplicar tarifas de fin de semana if (fecha != null) { if (fecha.DayOfWeek == DayOfWeek.Friday) { porcentajeCosto += 0.05m; } else if (fecha.DayOfWeek == DayOfWeek.Saturday || fecha.DayOfWeek == DayOfWeek.Sunday) { porcentajeCosto += 0.15m; } } var resultado = new CostoHabitacionPorDia(habitacion, habitacion.TarifaBase * porcentajeCosto); return(resultado); }
public void BuscarHabitaciones_HabitacionesNoReservadasLista() { //agregar habitaciones, que el usuario no haya reservado en esas fechas, a los resultados //Arrange var usuario = new Usuario() { Id = 555 }; var HabitaReserv = new Habitacion { Id = 11, Ocupacion = EstadoOcupacion.Ocupado }; var CostHabitaReserv = new CostoHabitacionPorDia(HabitaReserv, 100m, DateTime.Now); DateTime FechaIn = DateTime.Now; DateTime FechaOut = DateTime.Now.AddDays(4);//Fecha de salida menor a entrada List <Habitacion> Habitaciones = new List <Habitacion> { new Habitacion { Id = 1, Ocupacion = EstadoOcupacion.Ocupado }, new Habitacion { Id = 2, Ocupacion = EstadoOcupacion.Vacio }, new Habitacion { Id = 3, Ocupacion = EstadoOcupacion.Vacio }, new Habitacion { Id = 4, Ocupacion = EstadoOcupacion.Vacio } }; //Habitaciones.Add(new Habitacion { }); List <Reservacion> Reservaciones = new List <Reservacion> { new Reservacion { Id = 11, Usuario = usuario, HabitacionesReservadas = new List <CostoHabitacionPorDia> { CostHabitaReserv } } }; //Mock servicios var ObjetoFalsoHabitaciones = new Mock <IRepositorioHabitaciones>(); ObjetoFalsoHabitaciones .Setup(m => m.SeleccionarhabitacionesDisponibles(FechaIn, FechaOut)) .Returns(Habitaciones); var ObjetoFalsoReservaciones = new Mock <IRepositorioReservaciones>(); ObjetoFalsoReservaciones .Setup(m => m.BuscarReservacionesPorUsuario(usuario)) .Returns(Reservaciones); var servicio = new ServiciosReservacionDependientes(ObjetoFalsoHabitaciones.Object, ObjetoFalsoReservaciones.Object); //Act List <CostoHabitacionPorDia> result = servicio.BuscarHabitaciones(FechaIn, FechaOut, usuario); //Assert ArgumentException Assert.IsFalse(result.Contains(CostHabitaReserv)); }