Example #1
0
class LineItemTest(TestCase):
    def setUp(self):
        self.shift = Shift(begin_date=timezone.now())
        self.shift.save()
        self.transaction = self.shift.create_transaction()
        self.transaction.save()
        self.vendor = Vendor(name='Brand X')
        self.vendor.save()
        self.grocery = Grocery(upc='12345',
                               name='Product X',
                               vendor=self.vendor,
                               price=23.45,
                               taxable=True,
                               scalable=False)
        self.grocery.save()

    def test_line_item_total(self):
        line_item = self.transaction.create_line_item(self.grocery, 2)
        line_item.save()
        self.assertEqual(line_item.total(), Decimal(46.90))

    def test_can_cancel(self):
        line_item = self.transaction.create_line_item(self.grocery, 2)
        line_item.cancel()
        line_item.save()
        self.assertEqual(line_item.status, 'INACTIVE')
Example #2
0
class LineItemTest(TestCase):

    def setUp(self):
        self.shift = Shift(begin_date=timezone.now())
        self.shift.save()
        self.transaction = self.shift.create_transaction()
        self.transaction.save()
        self.vendor = Vendor(name='Brand X')
        self.vendor.save()
        self.grocery = Grocery(
            upc='12345',
            name='Product X',
            vendor=self.vendor,
            price=23.45,
            taxable=True,
            scalable=False
        )
        self.grocery.save()

    def test_line_item_total(self):
        line_item = self.transaction.create_line_item(self.grocery, 2)
        line_item.save()
        self.assertEqual(line_item.total(), Decimal(46.90))

    def test_can_cancel(self):
        line_item = self.transaction.create_line_item(self.grocery, 2)
        line_item.cancel()
        line_item.save()
        self.assertEqual(line_item.status, 'INACTIVE')
Example #3
0
def create_grocery(request):
    item = Grocery(upc=request.POST['upc'])
    if 'price' in request.POST:
        item.price = request.POST['price']
    if 'name' in request.POST:
        item.name = request.POST['name']
    if 'scalable' in request.POST:
        if request.POST['scalable'] == 'true':
            item.scalable = True
        else:
            item.scalable = False
    if 'taxable' in request.POST:
        if request.POST['taxable'] == 'true':
            item.taxable = True
        else:
            item.taxable = False
    if 'vendor' in request.POST:
        try:
            vendor = Vendor.objects.get(name=request.POST['vendor'])
        except ObjectDoesNotExist:
            vendor = Vendor(name=request.POST['vendor'])
            vendor.save()
        item.vendor = vendor
    item.save()

    context_instance = {'item': item}
    return render(
        request,
        'inventory/update_grocery.json',
        context_instance,
        content_type="application/json"
    )
Example #4
0
 def setUp(self):
     self.shift = Shift(begin_date=timezone.now())
     self.shift.save()
     self.transaction = self.shift.create_transaction()
     self.transaction.save()
     self.vendor = Vendor(name='Brand X')
     self.vendor.save()
     self.grocery = Grocery(upc='12345',
                            name='Product X',
                            vendor=self.vendor,
                            price=23.45,
                            taxable=True,
                            scalable=False)
     self.grocery.save()
Example #5
0
 def setUp(self):
     self.shift = Shift(begin_date=timezone.now())
     self.shift.save()
     self.transaction = self.shift.create_transaction()
     self.transaction.save()
     self.vendor = Vendor(name='Brand X')
     self.vendor.save()
     self.grocery = Grocery(
         upc='12345',
         name='Product X',
         vendor=self.vendor,
         price=23.45,
         taxable=True,
         scalable=False
     )
     self.grocery.save()
Example #6
0
class TransactionTest(TestCase):

    def setUp(self):
        self.shift = Shift(begin_date=timezone.now())
        self.shift.save()
        self.transaction = self.shift.create_transaction()
        self.transaction.save()
        self.vendor = Vendor(name='Brand X')
        self.vendor.save()
        self.grocery = Grocery(
            upc='12345',
            name='Product X',
            vendor=self.vendor,
            price=23.45,
            taxable=True,
            scalable=False
        )
        self.grocery.save()

    def test_end_transaction(self):
        self.transaction.end_transaction()
        self.assertIsNotNone(self.transaction.finish_date)

    def test_cannot_end_ended_transaction(self):
        self.transaction.end_transaction()
        finish_date = self.transaction.finish_date
        self.transaction.end_transaction()
        self.assertEqual(self.transaction.finish_date, finish_date)

    def test_create_line_item(self):
        line_item = self.transaction.create_line_item(self.grocery, 1)
        self.assertIsNotNone(line_item)

    def test_cannot_create_line_item_on_ended_transaction(self):
        self.transaction.create_line_item(self.grocery, 1)
        self.transaction.end_transaction()
        line_item = self.transaction.create_line_item(self.grocery, 1)
        self.assertIsNone(line_item)

    def test_line_item_description(self):
        line_item = self.transaction.create_line_item(self.grocery, 1)
        self.assertEqual(line_item.description, 'Brand X Product X')

    def test_get_totals(self):
        line_item = self.transaction.create_line_item(self.grocery, 1)
        line_item.save()
        line_item = self.transaction.create_line_item(self.grocery, 1)
        line_item.save()
        transaction_total = self.transaction.get_totals()
        self.assertEqual(transaction_total.sub_total, Decimal('46.90'))
        self.assertEqual(transaction_total.tax_total, Decimal('3.28'))
        self.assertEqual(transaction_total.total, Decimal('50.18'))

    def test_paid_tender_ends_transaction(self):
        self.transaction.create_line_item(self.grocery, 1)
        self.transaction.create_tender(25.09, 'CASH')
        self.assertIsNotNone(self.transaction.finish_date)

    def test_transaction_totals_with_canceled_item(self):
        self.transaction.create_line_item(self.grocery, 1)
        self.transaction.create_line_item(self.grocery, 1).cancel()
        transaction_total = self.transaction.get_totals()
        self.assertEqual(transaction_total.total, Decimal('50.18'))
        self.assertEqual(transaction_total.tax_total, Decimal('3.28'))
        self.assertEqual(transaction_total.total, Decimal('50.18'))

    def test_transaction_totals_with_canceled_item_again(self):
        line_item = self.transaction.create_line_item(self.grocery, 1)
        line_item.save()
        line_item = self.transaction.create_line_item(self.grocery, 1)
        line_item.cancel()
        line_item.save()
        transaction_total = self.transaction.get_totals()
        self.assertEqual(transaction_total.sub_total, Decimal('23.45'))
        self.assertEqual(transaction_total.tax_total, Decimal('1.64'))
        self.assertEqual(transaction_total.total, Decimal('25.09'))

    def test_cancel_sets_status(self):
        self.transaction.cancel()
        self.assertEqual(self.transaction.status, 'CANCELED')

    def test_cancel_cancels_children(self):
        self.transaction.create_line_item(self.grocery, 1)
        self.transaction.cancel()
        for line_item in self.transaction.lineitem_set.all():
            self.assertEqual(line_item.status, 'INACTIVE')

    def test_cancel_ends_shift(self):
        self.transaction.cancel()
        self.assertIsNotNone(self.transaction.finish_date)
Example #7
0
def create_grocery(request):
    item = Grocery(upc=request.POST['upc'])
    if 'price' in request.POST:
        item.price = request.POST['price']
    if 'name' in request.POST:
        item.name = request.POST['name']
    if 'scalable' in request.POST:
        if request.POST['scalable'] == 'true':
            item.scalable = True
        else:
            item.scalable = False
    if 'taxable' in request.POST:
        if request.POST['taxable'] == 'true':
            item.taxable = True
        else:
            item.taxable = False
    if 'vendor' in request.POST:
        try:
            vendor = Vendor.objects.get(name=request.POST['vendor'])
        except ObjectDoesNotExist:
            vendor = get_object_or_404(Vendor, request.POST['vendor'])
            vendor.save()
        item.vendor = vendor
    item.save()

    context_instance = {'item': item}
    return render(request,
                  'inventory/update_grocery.json',
                  context_instance,
                  content_type="application/json")
Example #8
0
class TransactionTest(TestCase):
    def setUp(self):
        self.shift = Shift(begin_date=timezone.now())
        self.shift.save()
        self.transaction = self.shift.create_transaction()
        self.transaction.save()
        self.vendor = Vendor(name='Brand X')
        self.vendor.save()
        self.grocery = Grocery(upc='12345',
                               name='Product X',
                               vendor=self.vendor,
                               price=23.45,
                               taxable=True,
                               scalable=False)
        self.grocery.save()

    def test_end_transaction(self):
        self.transaction.end_transaction()
        self.assertIsNotNone(self.transaction.finish_date)

    def test_cannot_end_ended_transaction(self):
        self.transaction.end_transaction()
        finish_date = self.transaction.finish_date
        self.transaction.end_transaction()
        self.assertEqual(self.transaction.finish_date, finish_date)

    def test_create_line_item(self):
        line_item = self.transaction.create_line_item(self.grocery, 1)
        self.assertIsNotNone(line_item)

    def test_cannot_create_line_item_on_ended_transaction(self):
        self.transaction.create_line_item(self.grocery, 1)
        self.transaction.end_transaction()
        line_item = self.transaction.create_line_item(self.grocery, 1)
        self.assertIsNone(line_item)

    def test_line_item_description(self):
        line_item = self.transaction.create_line_item(self.grocery, 1)
        self.assertEqual(line_item.description, 'Brand X Product X')

    def test_get_totals(self):
        line_item = self.transaction.create_line_item(self.grocery, 1)
        line_item.save()
        line_item = self.transaction.create_line_item(self.grocery, 1)
        line_item.save()
        transaction_total = self.transaction.get_totals()
        self.assertEqual(transaction_total.sub_total, Decimal('46.90'))
        self.assertEqual(transaction_total.tax_total, Decimal('3.28'))
        self.assertEqual(transaction_total.total, Decimal('50.18'))

    def test_paid_tender_ends_transaction(self):
        self.transaction.create_line_item(self.grocery, 1)
        self.transaction.create_tender(25.09, 'CASH')
        self.assertIsNotNone(self.transaction.finish_date)

    def test_transaction_totals_with_canceled_item(self):
        self.transaction.create_line_item(self.grocery, 1)
        self.transaction.create_line_item(self.grocery, 1).cancel()
        transaction_total = self.transaction.get_totals()
        self.assertEqual(transaction_total.total, Decimal('50.18'))
        self.assertEqual(transaction_total.tax_total, Decimal('3.28'))
        self.assertEqual(transaction_total.total, Decimal('50.18'))

    def test_transaction_totals_with_canceled_item_again(self):
        line_item = self.transaction.create_line_item(self.grocery, 1)
        line_item.save()
        line_item = self.transaction.create_line_item(self.grocery, 1)
        line_item.cancel()
        line_item.save()
        transaction_total = self.transaction.get_totals()
        self.assertEqual(transaction_total.sub_total, Decimal('23.45'))
        self.assertEqual(transaction_total.tax_total, Decimal('1.64'))
        self.assertEqual(transaction_total.total, Decimal('25.09'))

    def test_cancel_sets_status(self):
        self.transaction.cancel()
        self.assertEqual(self.transaction.status, 'CANCELED')

    def test_cancel_cancels_children(self):
        self.transaction.create_line_item(self.grocery, 1)
        self.transaction.cancel()
        for line_item in self.transaction.lineitem_set.all():
            self.assertEqual(line_item.status, 'INACTIVE')

    def test_cancel_ends_shift(self):
        self.transaction.cancel()
        self.assertIsNotNone(self.transaction.finish_date)
Example #9
0
 def setUp(self):
     self.vendor = Vendor(name='Brand X')
     self.grocery = Grocery(upc='12345',
                            name='Product X',
                            vendor=self.vendor)