示例#1
0
    def test_includes_hourly_report_with_orders(self):
        create_order(total_incl_tax=D('34.05'), total_excl_tax=D('34.05'))
        create_order(total_incl_tax=D('21.90'), total_excl_tax=D('21.90'))
        report = IndexView().get_hourly_report()

        self.assertEquals(len(report['order_total_hourly']), 12)
        self.assertEquals(len(report['y_range']), 11)
        self.assertEquals(report['max_revenue'], D('60'))
示例#2
0
 def setUp(self):
     Line.pipeline = {'A': ('B', 'C'),
                      'B': ('C',)}
     self.order = create_order()
     self.line = self.order.lines.all()[0]
     self.line.status = 'A'
     self.line.save()
示例#3
0
 def test_can_be_created_with_an_offer(self):
     offer = create_offer()
     order = create_order(number='100002')
     discount = OrderDiscount.objects.create(order=order, amount=D('10.00'),
                                             offer_id=offer.id)
     self.assertEqual(offer.id, discount.offer.id)
     self.assertEqual(offer.name, discount.offer_name)
示例#4
0
 def test_can_see_order_status(self):
     order = create_order()
     path = reverse('customer:anon-order',
                    kwargs={'order_number': order.number,
                            'hash': order.verification_hash()})
     response = self.app.get(path)
     self.assertEqual(httplib.OK, response.status_code)
示例#5
0
 def test_gets_404_when_using_incorrect_hash(self):
     order = create_order()
     path = reverse('customer:anon-order',
                    kwargs={'order_number': order.number,
                            'hash': 'bad'})
     response = self.app.get(path, status="*")
     self.assertEqual(httplib.NOT_FOUND, response.status_code)
示例#6
0
 def test_can_be_created_with_a_voucher(self):
     voucher = create_voucher()
     order = create_order(number='100002')
     discount = OrderDiscount.objects.create(order=order, amount=D('10.00'),
                                             voucher_id=voucher.id)
     self.assertEqual(voucher.id, discount.voucher.id)
     self.assertEqual(voucher.code, discount.voucher_code)
    def test_sending_a_order_related_messages(self):
        email = '*****@*****.**'
        user = User.objects.create_user('testuser', email,
                                        'somesimplepassword')

        order_number = '12345'
        order = create_order(number=order_number, user=user)
        et = CommunicationEventType.objects.create(code="ORDER_PLACED",
                                                   name="Order Placed",
                                                   category="Order related")

        messages = et.get_messages({
            'order': order,
            'lines': order.lines.all()
        })

        self.assertIn(order_number, messages['body'])
        self.assertIn(order_number, messages['html'])

        dispatcher = Dispatcher()
        dispatcher.dispatch_order_messages(order, messages, et)

        self.assertEquals(len(mail.outbox), 1)

        message = mail.outbox[0]
        self.assertIn(order_number, message.body)
示例#8
0
 def test_can_be_created_with_an_offer_and_specified_offer_name(self):
     offer = create_offer(name="My offer")
     order = create_order(number='100002')
     discount = OrderDiscount.objects.create(order=order, amount=D('10.00'),
                                             offer_id=offer.id,
                                             offer_name="Your offer")
     self.assertEqual(offer.id, discount.offer.id)
     self.assertEqual("Your offer", discount.offer_name)
示例#9
0
    def test_can_be_created_without_offer_or_voucher(self):
        order = create_order(number='100002')
        discount = OrderDiscount.objects.create(order=order, amount=D('10.00'))

        self.assertTrue(discount.voucher is None)
        self.assertTrue(discount.offer is None)

        self.assertEquals(discount.description(), u'')
示例#10
0
    def test_can_be_created_without_offer_or_voucher(self):
        order = create_order(number='100002')
        discount = OrderDiscount.objects.create(order=order, amount=D('10.00'))

        self.assertTrue(discount.voucher is None)
        self.assertTrue(discount.offer is None)

        self.assertEquals(discount.description(), u'')
示例#11
0
 def test_can_be_created_with_an_offer(self):
     offer = create_offer()
     order = create_order(number='100002')
     discount = OrderDiscount.objects.create(order=order,
                                             amount=D('10.00'),
                                             offer_id=offer.id)
     self.assertEqual(offer.id, discount.offer.id)
     self.assertEqual(offer.name, discount.offer_name)
示例#12
0
 def test_can_be_created_with_a_voucher(self):
     voucher = create_voucher()
     order = create_order(number='100002')
     discount = OrderDiscount.objects.create(order=order,
                                             amount=D('10.00'),
                                             voucher_id=voucher.id)
     self.assertEqual(voucher.id, discount.voucher.id)
     self.assertEqual(voucher.code, discount.voucher_code)
示例#13
0
 def test_can_be_created_with_a_voucher_and_specidied_voucher_code(self):
     voucher = create_voucher()
     order = create_order(number='100002')
     discount = OrderDiscount.objects.create(order=order, amount=D('10.00'),
                                             voucher_id=voucher.id,
                                             voucher_code="anothercode")
     self.assertEqual(voucher.id, discount.voucher.id)
     self.assertEqual('anothercode', discount.voucher_code)
示例#14
0
 def setUp(self):
     basket = Basket()
     basket.add_product(create_product(price=D('10.00')), 4)
     self.order = create_order(number='100002', basket=basket)
     self.line = self.order.lines.all()[0]
     self.order_placed, _ = ShippingEventType.objects.get_or_create(
         code='order_placed', name='Order placed')
     self.dispatched, _ = ShippingEventType.objects.get_or_create(
         code='dispatched', name='Dispatched')
示例#15
0
 def setUp(self):
     basket = Basket()
     basket.add_product(create_product(price=D('10.00')), 4)
     self.order = create_order(number='100002', basket=basket)
     self.line = self.order.lines.all()[0]
     self.order_placed,_ = ShippingEventType.objects.get_or_create(code='order_placed',
                                                                   name='Order placed')
     self.dispatched,_ = ShippingEventType.objects.get_or_create(code='dispatched',
                                                                 name='Dispatched')
示例#16
0
 def test_can_be_created_with_an_offer_and_specified_offer_name(self):
     offer = create_offer(name="My offer")
     order = create_order(number='100002')
     discount = OrderDiscount.objects.create(order=order,
                                             amount=D('10.00'),
                                             offer_id=offer.id,
                                             offer_name="Your offer")
     self.assertEqual(offer.id, discount.offer.id)
     self.assertEqual("Your offer", discount.offer_name)
示例#17
0
 def test_can_be_created_with_a_voucher_and_specidied_voucher_code(self):
     voucher = create_voucher()
     order = create_order(number='100002')
     discount = OrderDiscount.objects.create(order=order,
                                             amount=D('10.00'),
                                             voucher_id=voucher.id,
                                             voucher_code="anothercode")
     self.assertEqual(voucher.id, discount.voucher.id)
     self.assertEqual('anothercode', discount.voucher_code)
示例#18
0
    def setUp(self):
        basket = Basket()
        basket.add_product(create_product(price=D('10.00')), 4)
        self.order = create_order(number='100002', basket=basket)
        self.line = self.order.lines.all()[0]

        self.shipped, _ = ShippingEventType.objects.get_or_create(
            name='Shipped', is_required=True, sequence_number=0)
        self.returned, _ = ShippingEventType.objects.get_or_create(
            name='Returned', is_required=False, sequence_number=1)
示例#19
0
    def test_contains_offer_details_after_offer_is_deleted(self):
        offer = create_offer(name="Get 200% off")
        order = create_order(number='100002')
        discount = OrderDiscount.objects.create(order=order, amount=D('10.00'),
                                                offer_id=offer.id)
        offer.delete()

        self.assertTrue(discount.voucher is None)
        self.assertTrue(discount.offer is None)

        self.assertEquals(discount.description(), u'Get 200% off')
示例#20
0
    def test_contains_voucher_details_after_voucher_is_deleted(self):
        voucher = create_voucher()
        order = create_order(number='100002')
        discount = OrderDiscount.objects.create(order=order, amount=D('10.00'),
                                                voucher_id=voucher.id)
        voucher.delete()

        self.assertTrue(discount.voucher is None)
        self.assertTrue(discount.offer is None)

        self.assertEquals(discount.description(), voucher.code)
示例#21
0
 def test_searching_for_valid_order_number_redirects_to_order_page(self):
     # Importing here as the import makes DB queries
     from oscar.apps.dashboard.orders.forms import OrderSearchForm
     order = create_order()
     fields = OrderSearchForm.base_fields.keys()
     pairs = dict(zip(fields, ['']*len(fields)))
     pairs['order_number'] = order.number
     pairs['response_format'] = 'html'
     url = '%s?%s' % (reverse('dashboard:order-list'), '&'.join(['%s=%s' % (k,v) for k,v in pairs.items()]))
     response = self.client.get(url)
     self.assertEqual(httplib.FOUND, response.status_code)
示例#22
0
    def setUp(self):
        basket = Basket()
        basket.add_product(create_product(price=D('10.00')), 4)
        self.order = create_order(number='100002', basket=basket)
        self.line = self.order.lines.all()[0]

        self.shipped,_ = ShippingEventType.objects.get_or_create(name='Shipped',
                                                                 is_required=True,
                                                                 sequence_number=0)
        self.returned,_ = ShippingEventType.objects.get_or_create(name='Returned',
                                                                 is_required=False,
                                                                 sequence_number=1)
示例#23
0
    def test_contains_voucher_details_after_voucher_is_deleted(self):
        voucher = create_voucher()
        order = create_order(number='100002')
        discount = OrderDiscount.objects.create(order=order,
                                                amount=D('10.00'),
                                                voucher_id=voucher.id)
        voucher.delete()

        self.assertTrue(discount.voucher is None)
        self.assertTrue(discount.offer is None)

        self.assertEquals(discount.description(), voucher.code)
示例#24
0
    def test_contains_offer_details_after_offer_is_deleted(self):
        offer = create_offer(name="Get 200% off")
        order = create_order(number='100002')
        discount = OrderDiscount.objects.create(order=order,
                                                amount=D('10.00'),
                                                offer_id=offer.id)
        offer.delete()

        self.assertTrue(discount.voucher is None)
        self.assertTrue(discount.offer is None)

        self.assertEquals(discount.description(), u'Get 200% off')
示例#25
0
    def test_cannot_reorder_line_when_basket_maximum_exceeded(self):
        order = create_order(user=self.user)
        line = order.lines.all()[0]

        Basket.objects.all().delete()
        #add a product
        product = create_product(price=D('12.00'))
        self.client.post(reverse('basket:add'), {'product_id': product.id,
                                                 'quantity': 1})

        basket = Basket.objects.all()[0]
        self.assertEquals(len(basket.all_lines()), 1)

        self.client.post(reverse('customer:order-line',
                                            args=(order.number, line.pk)),
                                    {'action': 'reorder'})

        self.assertEquals(len(basket.all_lines()), 1)
        self.assertNotEqual(line.product.pk, product.pk)
示例#26
0
    def test_cannot_reorder_line_when_basket_maximum_exceeded(self):
        order = create_order(user=self.user)
        line = order.lines.all()[0]

        Basket.objects.all().delete()
        #add a product
        product = create_product(price=D('12.00'))
        self.client.post(reverse('basket:add'), {'product_id': product.id,
                                                 'quantity': 1})

        basket = Basket.objects.all()[0]
        self.assertEquals(len(basket.all_lines()), 1)

        self.client.post(reverse('customer:order-line',
                                            args=(order.number, line.pk)),
                                    {'action': 'reorder'})

        self.assertEquals(len(basket.all_lines()), 1)
        self.assertNotEqual(line.product.pk, product.pk)
示例#27
0
 def setUp(self):
     Order.pipeline = {'A': ('B', 'C')}
     self.order = create_order(status='A')
     self.url = reverse('dashboard:order-detail', kwargs={'number': self.order.number})
     super(OrderDetailTests, self).setUp()
示例#28
0
 def test_max_applications_is_correct_when_more_applications(self):
     order = create_order(user=self.user)
     G(OrderDiscount, order=order, offer_id=self.offer.id, frequency=5)
     self.assertEqual(0, self.offer.get_max_applications(self.user))
示例#29
0
 def setUp(self):
     self.order = create_order()
     self.handler = EventHandler()
     self.shipped = models.ShippingEventType.objects.create(name='Shipped')
     self.returned = models.ShippingEventType.objects.create(name='Returned')
示例#30
0
 def setUp(self):
     self.order = create_order()
     self.line = self.order.lines.all()[0]
     self.url = reverse('dashboard:order-line-detail', kwargs={'number': self.order.number,
                                                               'line_id': self.line.id})
     super(LineDetailTests, self).setUp()
示例#31
0
 def test_available_statuses_for_pending(self):
     self.order = create_order(status='PENDING')
     self.assertEqual(('SHIPPED', 'CANCELLED'),
                      self.order.available_statuses())
示例#32
0
 def setUp(self):
     self.user = User.objects.create_user('_', self.email, self.password)
     self.order = create_order(user=self.user)
示例#33
0
 def test_no_statuses_available_for_no_status(self):
     self.order = create_order()
     self.assertEqual((), self.order.available_statuses())
示例#34
0
 def test_cascading_status_change(self):
     self.order = create_order(status='PENDING')
     self.order.set_status('SHIPPED')
     for line in self.order.lines.all():
         self.assertEqual('SHIPPED', line.status)
示例#35
0
 def test_cascading_status_change(self):
     self.order = create_order(status='PENDING')
     self.order.set_status('SHIPPED')
     for line in self.order.lines.all():
         self.assertEqual('SHIPPED', line.status)
示例#36
0
 def test_set_status_does_nothing_for_same_status(self):
     self.order = create_order(status='PENDING')
     self.order.set_status('PENDING')
     self.assertEqual('PENDING', self.order.status)
示例#37
0
 def test_max_applications_is_correct_when_more_applications(self):
     order = create_order(user=self.user)
     G(OrderDiscount, order=order, offer_id=self.offer.id, frequency=5)
     self.assertEqual(0, self.offer.get_max_applications(self.user))
示例#38
0
 def setUp(self):
     self.order = create_order()
     self.handler = EventHandler()
     self.shipped = models.ShippingEventType.objects.create(name='Shipped')
     self.returned = models.ShippingEventType.objects.create(
         name='Returned')
示例#39
0
 def setUp(self):
     self.order = create_order()
示例#40
0
 def setUp(self):
     self.user = User.objects.create_user('_', self.email, self.password)
     self.order = create_order(user=self.user)
示例#41
0
 def setUp(self):
     Line.pipeline = {'A': ('B', 'C'), 'B': ('C', )}
     self.order = create_order()
     self.line = self.order.lines.all()[0]
     self.line.status = 'A'
     self.line.save()
示例#42
0
 def test_available_statuses_for_pending(self):
     self.order = create_order(status='PENDING')
     self.assertEqual(('SHIPPED', 'CANCELLED'),
                      self.order.available_statuses())
示例#43
0
 def test_set_status_works(self):
     self.order = create_order(status='PENDING')
     self.order.set_status('SHIPPED')
     self.assertEqual('SHIPPED', self.order.status)
示例#44
0
 def test_available_statuses_for_shipped_order(self):
     self.order = create_order(status='SHIPPED')
     self.assertEqual(('COMPLETE', ), self.order.available_statuses())
示例#45
0
 def test_available_statuses_for_shipped_order(self):
     self.order = create_order(status='SHIPPED')
     self.assertEqual(('COMPLETE',), self.order.available_statuses())
示例#46
0
 def test_set_status_respects_pipeline(self):
     self.order = create_order(status='SHIPPED')
     with self.assertRaises(InvalidOrderStatus):
         self.order.set_status('PENDING')
示例#47
0
 def test_no_statuses_available_for_no_status(self):
     self.order = create_order()
     self.assertEqual((), self.order.available_statuses())
示例#48
0
 def test_set_status_works(self):
     self.order = create_order(status='PENDING')
     self.order.set_status('SHIPPED')
     self.assertEqual('SHIPPED', self.order.status)
示例#49
0
 def test_set_status_respects_pipeline(self):
     self.order = create_order(status='SHIPPED')
     with self.assertRaises(InvalidOrderStatus):
         self.order.set_status('PENDING')
示例#50
0
 def setUp(self):
     self.order = create_order()
示例#51
0
 def test_set_status_does_nothing_for_same_status(self):
     self.order = create_order(status='PENDING')
     self.order.set_status('PENDING')
     self.assertEqual('PENDING', self.order.status)