def test_create_order_as_dealer(self): dealer = create_basic_dealer_account("test-dealer", "dealer", "*****@*****.**") order = WorkingOrder.objects.create_order(dealer, 'test project') order.save() self.failUnless(order.tracking_code, 'empty tracking code') self.failUnless(order.account_code, 'empty account code') self.failUnlessEqual(order.project_name, 'test project') self.failUnlessEqual(order.project_type, BaseOrder.Const.KITCHEN_DESIGN)
def test_standard_flow(self): # create a valid dealer and login username, password = '******', 'dealer' dealer = create_basic_dealer_account(dealer_name='dealer-%s' % username, username=username, email='%s@%s.com' % (username, username), password=password, account_status=Dealer.Const.ACTIVE, initial_balance=500) self.failUnless(self.client.login(username=username, password=password)) # create an new (blank) order and validate I can't submit it (needs attachment) submiturl = reverse('create-order') data = dict(tracking_code='testtrack123', project_name='test-project', project_type='K', floorplan='/tmp/dummy.txt' ) response = self.client.post(submiturl, data, follow=True) # expect response is redirected to 'manufacturer' screen self.failUnless( response.redirect_chain) self.assertEqual(response.template[0].name, 'wizard/step_manufacturer.html') # get order id from context orderid = response.context['wizard'].order.id self.failUnless(orderid) # expect order status to be DEALER_EDIT order = WorkingOrder.objects.get(pk=orderid) self.failUnlessEqual(order.status, BaseOrder.Const.DEALER_EDIT) # try to submit the order prematurely.. submiturl = reverse('submit-order', args=[orderid]) data = dict(rush=False, client_notes="this is a test", design_product="1") response = self.client.post(submiturl, data) # fail with attachment error self.assertContains(response, '<ul class="errorlist"><li>Your order has no attachments!', status_code=200) # add a 'floorplan' attachment submiturl = reverse('order-wizard-step', args=[orderid, 'diagrams']) f = open('../../static/dummy-template.pdf') print submiturl data = dict(next_step_='_next_', type=1, source='U', upload_file='Upload', file = f ) response = self.client.post(submiturl, data, follow=True) f.close() # validate attachment appears on page self.assertContains(response, '<title>test-project | Diagrams</title>') self.assertContains(response, 'href="/orders/ajax/attachment/') # validate attachment associated with order self.failUnless(Attachment.objects.filter(order__id=orderid)) # try to submit the order again submiturl = reverse('submit-order', args=[orderid]) data = dict(rush=False, design_product="1", tracking_code=order.tracking_code, project_name=order.project_name, project_type=order.project_type) response = self.client.post(submiturl, data, follow=True) # expect success self.failUnless( response.redirect_chain ) self.assertEqual(response.template[0].name, 'orders/confirm_submission.html', 200) # confirm the submission receipt self.assertContains(response, order.project_name) self.assertContains(response, order.get_project_type_display()) self.assertContains(response, order.id) # make sure status attributes change appropriately on submisssion order = WorkingOrder.objects.get(pk=orderid) self.failUnlessEqual(order.status, BaseOrder.Const.SUBMITTED) # validate we cannot submit an already submitted order submiturl = reverse('submit-order', args=[orderid]) data = dict(rush=False, design_product="1", tracking_code=order.tracking_code, project_name=order.project_name, project_type=order.project_type) response = self.client.post(submiturl, data, follow=True) self.assertRedirects(response, reverse('submit-order-completed', args=[orderid]))