def test_precio_doble_std(self): """Comprueba que tenemos precios correctos para la habitación en el caso de la habitación std""" # 2 AD 1 día consulta = Consulta( date.today() + timedelta(days=2), 1, tipo_habitacion=2, #std adultos=2) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles) == 1, "No hay disponibilidad" hotel = dispo.hoteles.get('test') assert len(hotel.habitaciones) == 1, "No hay habitaciones" habitacion = hotel.habitaciones.get('std-mp') assert habitacion.precio == 100, "El precio no concuerda (%s)" % habitacion.precio # 2 adultos consulta = Consulta( date.today() + timedelta(days=2), 4, tipo_habitacion=2, #std adultos=2) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles) == 1, "No hay disponibilidad" hotel = dispo.hoteles.get('test') assert len(hotel.habitaciones) == 1, "No hay habitaciones" habitacion = hotel.habitaciones.get('std-mp') assert habitacion.precio == 400, "El precio no concuerda (%s)" % habitacion.precio # 3 adultos consulta = Consulta( date.today() + timedelta(days=2), 4, tipo_habitacion=2, #std adultos=3) #1 adulto dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles) == 1, "No hay disponibilidad" hotel = dispo.hoteles.get('test') assert len(hotel.habitaciones) == 1, "No hay habitaciones" habitacion = hotel.habitaciones.get('std-mp') assert habitacion.precio == 480, "El precio no concuerda" consulta = Consulta( date.today() + timedelta(days=2), 4, tipo_habitacion=2, #std adultos=1) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles) == 1, "No hay disponibilidad" hotel = dispo.hoteles.get('test') assert len(hotel.habitaciones) == 1, "No hay habitaciones" habitacion = hotel.habitaciones.get('std-mp') assert habitacion.precio == 240, "El precio no concuerda"
def disponibilidad(request): """Buscador de disponibilidad""" data = {} if request.method == "POST": form = BuscarForm(request.POST) if form.is_valid(): # procesamos la dispo hotel = form.cleaned_data['hotel'] noches = form.cleaned_data['fecha_salida'] - form.cleaned_data[ 'fecha_llegada'] # Eliminamos los bebés de la dispo nins = 0 for x in range(1, form.cleaned_data['nins_d1'] + 1): if form.cleaned_data['edad_nin%s_d1' % x] > 2: nins += 1 consulta = Consulta(inicio=form.cleaned_data['fecha_llegada'], noches=noches.days, adultos=form.cleaned_data['adultos_d1'], ninyos=nins, hotel=hotel) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() data['consulta'] = consulta data['dispo'] = dispo return direct_to_template(request, template='hotel/disponibilidad.html', extra_context=data) else: form = BuscarForm() data['form'] = form return direct_to_template(request, template='hotel/index.html', extra_context=data)
def test_get_precios(self): consulta = Consulta(date.today()+timedelta(days=2) , noches=4) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles) == 1 , "Debe haber un hotel" hotel = dispo.hoteles['test'] assert len(hotel.suplementos_regimen) > 0, "No hay suplementos de regimen"
def test_disponibilidad_basica(self): """Comprueba una disponiblidad básica 2 ad 4 noches""" consulta = Consulta(date.today()+timedelta(days=2) , noches=4) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles) == 1 , "Debe haber un hotel" hotel = dispo.hoteles['test'] assert len(hotel.contratos) == 1, "Hay un contrato" assert len(hotel.habitaciones) == 2
def test_sin_dispo(self): """Comprueba que no devuelve disponibilidad si las condiciones de ocupación no se cumplen""" consulta = Consulta(date.today() + timedelta(days=2), 4, adultos=4, ninyos=2) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles) == 0, "No Debe haber un hotel"
def test_dispo_suite(self): """Comprueba que hay disponiblidad para la suite""" consulta = Consulta(date.today() + timedelta(days=2), 4, tipo_habitacion=3) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles) == 1, "Debe haber un hotel" hotel = dispo.hoteles['test'] assert len(hotel.habitaciones) == 1
def test_no_suite(self): """Comprueba que no hay disponiblidad si selecccionamos una suite""" log.debug('Test precio single para Suite') consulta = Consulta(date.today()+timedelta(days=2), tipo_habitacion = 3, noches=4, adultos = 1 ) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles)==0, "No debería haber disponibilidad"
def test_dispo_str(self): "Comprueba que existe representación textual para la dispo" consulta = Consulta(date.today()+timedelta(days=2), noches=4) fecha = date.today()+timedelta(days=4) for inv in Inventario.objects.filter(fecha=fecha, tipo_habitacion__slug='sui'): inv.is_paro_ventas = True inv.save() dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() log.info(dispo) assert len("%s" % dispo) > 0, "Debería haber disponiblidad"
def disponibilidad_2ad_1n(request): """Ejemplo de disponibilidad de dos adultos y un niño""" consulta = Consulta(date.today()+timedelta(days=5), noches=5, adultos = 2, ninyos = 1, ) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() form = BuscarForm() return direct_to_template(request, template='recepcion/disponibilidad.html', extra_context={'dispo': dispo, 'consulta':consulta, 'form':form})
def test_blackout(self): """"Comprobamos que no se puede reservar con una antelación menor que el blackout""" consulta = Consulta( date.today() + timedelta(days=2), noches=1, adultos=2, ninyos=2, ) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len( dispo.hoteles) == 0, "Hay blackout de 3 días y no debe haber dispo"
def test_restriccion_ocupacion_ninyos(self): """Comprueba que la restricción de ocupación se aplica. Se está consultando la ocupación de 2 adultos y dos niños """ assert RestriccionOcupacion.objects.all().count( ) > 0, "No hay restricciones de ocupación en el contrato" consulta = Consulta(date.today() + timedelta(days=2), tipo_habitacion=2, noches=4, ninyos=1) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles) == 0, "No Debe haber un hotel"
def test_precio_1N_1AD_3N(self): """Un adulto y tres niños. No hay disponiblidad, ya que están las habitaciones a un máximo de 2 niños""" consulta = Consulta( date.today() + timedelta(days=2), 1, tipo_habitacion=2, adultos=1, ninyos=3, ) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles) == 0, "No debiera haber disponibilidad"
def test_suplemento_dia(self): "Comprobamos que se aplican los suplementos" consulta = Consulta( date.today() + timedelta(days=3), noches=4, adultos=2, ninyos=0, ) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles) == 1, "Debería salir un hotel" hotel = dispo.hoteles.get('test') habitacion = hotel.habitaciones.get('std-mp') assert habitacion.precio == 500
def test_paro_ventas(self): """Comprobamos que si entre el rango de fechas hay un paro de ventas para esa habitación no sale""" consulta = Consulta(date.today()+timedelta(days=2), noches=4) fecha = date.today()+timedelta(days=4) for inv in Inventario.objects.filter(fecha=fecha, tipo_habitacion__slug='sui'): inv.is_paro_ventas = True inv.save() dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles) == 1 , "Debe haber un hotel" hotel = dispo.hoteles['test'] assert len(hotel.habitaciones) == 1
def test_estancia_minima(self): """"Comprobamos que no se puede reservar con una estancia mínima menor que la fijada en contrato""" log.info('Comprobamos primero que sin la restriccion tenemos dispo') consulta = Consulta(date.today()+timedelta(days=2), noches=5, adultos = 2, ninyos = 0, ) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles)==1, "Debería salir un hotel" log.info('Ahora con la restricción') consulta = Consulta(date.today()+timedelta(days=2), noches=2, adultos = 2, ninyos = 0, ) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles)==0, "No debería haber hotel"
def test_precio_1N_1AD_1N(self): "Un adulto y un niño. Implica habitación doble" consulta = Consulta( date.today() + timedelta(days=2), 1, tipo_habitacion=2, adultos=1, ninyos=1, ) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles) == 1, "No hay disponibilidad" hotel = dispo.hoteles.get('test') assert hotel.habitaciones.get('std-mp').precio == Decimal("60")
def test_precio_1N_2AD_2N(self): "Dos adultos y dos niños" consulta = Consulta( date.today() + timedelta(days=2), noches=1, tipo_habitacion=2, adultos=2, ninyos=2, ) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles) == 1, "No hay disponibilidad" hotel = dispo.hoteles.get('test') assert hotel.habitaciones.get('std-mp').precio == Decimal("87.5"), \ "Da %s"% hotel.habitaciones.get('std-mp').precio
def test_precio_single_noches(self): """Comprueba que tenemos precios correctos para la habitación en el caso de la consulta individual para más de una noche""" # 2 AD 1 día log.debug('Test precio single') consulta = Consulta(date.today()+timedelta(days=2), noches=4, adultos = 1 ) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles)==1, "No hay disponibilidad" hotel = dispo.hoteles.get('test') assert len(hotel.habitaciones)==2 #tiene que estar la std y ls ind assert hotel.habitaciones.get('ind-mp').precio == 240, "El precio no concuerda %s" % hotel.habitaciones.get('ind-mp').precio assert hotel.habitaciones.get('std-mp').precio == 240, "El precio no concuerda %s" % hotel.habitaciones.get('std-mp').precio
def test_precio_1N_2AD_1N(self): """Comprueba que tenemos precios correctos para la habitación en el caso de la consulta individual""" # 2 AD 1 día consulta = Consulta( date.today() + timedelta(days=2), 1, tipo_habitacion=2, adultos=2, ninyos=1, ) dispo = Disponibilidad(consulta) dispo.obtener_disponibilidad() assert len(dispo.hoteles) == 1, "No hay disponibilidad" hotel = dispo.hoteles.get('test') assert hotel.habitaciones.get('std-mp').precio == 88