def test_crear_cajas_crea_instancias_de_box(self): """ No boxes into the db but instances of 'Box' """ bt = BoxTransmogrifier() for x in xrange(1, 10): cajas = self.randomboxes(choices=[self.a_pk, self.b_pk], number=x) lista_de_cajas = bt.crear_lista_de_cajas_apartir_de_lista_str(cajas) # Has to be box instance self.assert_(all([isinstance(b, Box) for b in lista_de_cajas]))
def pedido(request): # Context for the first template alfajores = Producto.objects.filter(tipo="Alfajor") bombones = Producto.objects.filter(tipo="Bombon") alfajores_disp = Producto.objects.filter(tipo="Alfajor", disponible=True).order_by('?') if alfajores_disp: alfajor = alfajores_disp[0] else: alfajor = None c = { 'date' : datetime.now(), 'alfajores' : alfajores, 'bombones' : bombones, 'init_prod': alfajor, } pedido = request.session.get(SESSION_PEDIDO_KEY, None) if pedido: c['pedido'] = pedido context = RequestContext(request, c) if request.method == 'POST': cajas = [s for s in request.POST.getlist('cajas[]') if s] # Object to validate boxes bt = BoxTransmogrifier() try: # before creating an object into the db, validate. # If cajas == "", also throw ValueError lista_de_cajas = bt.crear_lista_de_cajas_apartir_de_lista_str(cajas) except ValueError, e: # if error, no order pedido = None else: pedido = bt # if there is an order, go to next step if pedido: request.session[SESSION_PEDIDO_KEY] = pedido return HttpResponseRedirect(reverse('datos-de-envio'))
def test_crear_pedido(self): bt = BoxTransmogrifier() bt.datos_de_envio = DatosDeEnvio.objects.create(**self._data) bt.gastos_de_envio = GastosDeEnvio.objects.get(provincia="C", localidad="") for x in xrange(1, 10): cajas = self.randomboxes(choices=[self.a_pk, self.b_pk], number=x) lista_de_cajas = bt.crear_lista_de_cajas_apartir_de_lista_str(cajas) pedido = bt.crear_pedido() self.assert_(pedido) self.assert_(pedido.pk) sk = lambda obj : obj.pk # Take into account that the order can be different, so we # compare size of boxes first _len = lambda obj : obj.total_de_productos() self.assertEqual(sorted(map(_len, lista_de_cajas)), sorted(map(_len, pedido.cajas.all()))) # Now we compare that every item of the box (flatten) elems0 = sorted((elem for box in lista_de_cajas for elem in box), key=sk) elems1 = sorted((elem for caja in pedido.cajas.all() for elem in caja), key=sk) self.assertEqual(list(elems0), list(elems1)) self.assertEqual(Pedido.objects.all().count(), 9)
def test_validar_cajas_simple(self): bt = BoxTransmogrifier() for x in xrange(1, 10): cajas = self.randomboxes(choices=[self.a_pk, self.b_pk], number=x) self.assert_(bt.crear_lista_de_cajas_apartir_de_lista_str(cajas))