def test_dashboard_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"]), 24) self.assertEquals(len(report["y_range"]), 11) self.assertEquals(report["max_revenue"], D("60"))
def test_dashboard_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']), 24) self.assertEquals(len(report['y_range']), 11) self.assertEquals(report['max_revenue'], D('60'))
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)
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_creation_with_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)
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)
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)
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)
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()
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")
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)
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'')
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)
def test_404_received_for_order_with_incorrect_hash(self): order = create_order() response = self.client.get( reverse('customer:anon-order', kwargs={ 'order_number': order.number, 'hash': 'bad' })) self.assertEqual(httplib.NOT_FOUND, response.status_code)
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)
def test_searching_for_valid_order_number_redirects_to_order_page(self): 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)
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')
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')
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()
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)
def test_200_received_for_order_with_correct_hash(self): order = create_order() response = self.client.get( reverse('customer:anon-order', kwargs={ 'order_number': order.number, 'hash': order.verification_hash() })) self.assertEqual(httplib.OK, response.status_code)
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)
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 )
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')
def test_can_reorder_line(self): order = create_order(user=self.user) line = order.lines.all()[0] Basket.objects.all().delete() self.client.post(reverse('customer:order-line', args=(order.number, line.pk)), {'action': 'reorder'}) basket = Basket.objects.all()[0] self.assertEquals(len(basket.all_lines()), 1)
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)
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)
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)
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)
def test_cannot_reorder_out_of_stock_line(self): order = create_order(user=self.user) line = order.lines.all()[0] product = line.product product.stockrecord.num_in_stock = 0 product.stockrecord.save() Basket.objects.all().delete() self.client.post(reverse('customer:order-line', args=(order.number, line.pk)), {'action': 'reorder'}) basket = Basket.objects.all()[0] self.assertEquals(len(basket.all_lines()), 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)
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)
def test_set_status_works(self): self.order = create_order(status='PENDING') self.order.set_status('SHIPPED') self.assertEqual('SHIPPED', self.order.status)
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()
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()
def test_creation_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)
def test_404_received_for_order_with_incorrect_hash(self): order = create_order() response = self.client.get(reverse('customer:anon-order', kwargs={'order_number': order.number, 'hash': 'bad'})) self.assertEqual(httplib.NOT_FOUND, response.status_code)
def test_200_received_for_order_with_correct_hash(self): order = create_order() response = self.client.get(reverse('customer:anon-order', kwargs={'order_number': order.number, 'hash': order.verification_hash()})) self.assertEqual(httplib.OK, response.status_code)
def test_set_status_respects_pipeline(self): self.order = create_order(status='SHIPPED') with self.assertRaises(InvalidOrderStatus): self.order.set_status('PENDING')
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)
def test_available_statuses_for_shipped_order(self): self.order = create_order(status='SHIPPED') self.assertEqual(('COMPLETE',), self.order.available_statuses())
def test_no_statuses_available_for_no_status(self): self.order = create_order() self.assertEqual((), self.order.available_statuses())
def test_available_statuses_for_shipped_order(self): self.order = create_order(status='SHIPPED') self.assertEqual(('COMPLETE', ), self.order.available_statuses())
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()
def setUp(self): self.order = create_order()
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)
def setUp(self): self.user = User.objects.create_user('_', self.email, self.password) self.order = create_order(user=self.user)
def test_available_statuses_for_pending(self): self.order = create_order(status='PENDING') self.assertEqual(('SHIPPED', 'CANCELLED'), self.order.available_statuses())