new: first commit !minor
This commit is contained in:
commit
5848134067
45 changed files with 2754 additions and 0 deletions
107
order/tests.py
Normal file
107
order/tests.py
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
from django.contrib.auth.models import User
|
||||
from django.test import TestCase, Client
|
||||
from rest_framework import status
|
||||
from rest_framework.utils import json
|
||||
|
||||
from order.models import SaleOrder, SaleOrderLine, Product
|
||||
from order.serializers import SaleOrderSerializer
|
||||
|
||||
|
||||
class OrderTests(TestCase):
|
||||
def setUp(self) -> None:
|
||||
self.product_1: Product = Product.objects.create(name="Product 1", unit_price=10.0)
|
||||
self.product_2: Product = Product.objects.create(name="Product 2", unit_price=20.0)
|
||||
self.product_3: Product = Product.objects.create(name="Product 3", unit_price=30.0)
|
||||
self.product_4: Product = Product.objects.create(name="Product 4", unit_price=40.0)
|
||||
|
||||
self.order_1: SaleOrder = SaleOrder.objects.create(name="Order 1")
|
||||
self.order_2: SaleOrder = SaleOrder.objects.create(name="Order 2")
|
||||
|
||||
self.line_1_1: SaleOrderLine = SaleOrderLine.objects.create(
|
||||
name="Line 1/Order1", order=self.order_1, product=self.product_1
|
||||
)
|
||||
self.line_1_2: SaleOrderLine = SaleOrderLine.objects.create(
|
||||
name="Line 2/Order 1", quantity=3, order=self.order_1, product=self.product_2
|
||||
)
|
||||
|
||||
self.line_2_1: SaleOrderLine = SaleOrderLine.objects.create(
|
||||
name="Line 1/Order2", order=self.order_2, product=self.product_3
|
||||
)
|
||||
|
||||
self.line_2_2: SaleOrderLine = SaleOrderLine.objects.create(
|
||||
name="Line 2/Order2", order=self.order_2, product=self.product_4
|
||||
)
|
||||
|
||||
self.user_foo: User = User.objects.create(
|
||||
username="foo"
|
||||
)
|
||||
self.user_foo.set_password("foo")
|
||||
self.user_foo.save()
|
||||
self.user_bar = User.objects.create(
|
||||
username="bar", password="bar"
|
||||
)
|
||||
|
||||
self.client = Client()
|
||||
self.client.login(username="foo", password="foo")
|
||||
|
||||
def test_model_getters(self):
|
||||
self.assertEqual(len(self.order_1.saleorderline_set.all()), 2)
|
||||
self.assertEqual(self.order_1.total, 0.0)
|
||||
self.assertEqual(self.order_1.amount_total, 70.0)
|
||||
self.assertEqual(len(self.order_2.saleorderline_set.all()), 2)
|
||||
self.assertEqual(self.order_2.total, 0.0)
|
||||
self.assertEqual(self.order_2.amount_total, 70.0)
|
||||
self.assertIsNotNone(self.line_1_1.product)
|
||||
self.assertIsNotNone(self.line_1_2.product)
|
||||
self.assertIsNotNone(self.line_2_1.product)
|
||||
self.assertIsNotNone(self.line_2_2.product)
|
||||
|
||||
def test_model_sell(self):
|
||||
self.assertIsNone(self.order_1.sold_at)
|
||||
self.assertIsNone(self.order_1.sold_to)
|
||||
self.order_1.sell(user=self.user_bar)
|
||||
old_date = self.order_1.sold_at
|
||||
old_user = self.order_1.sold_to
|
||||
self.assertIsNotNone(self.order_1.sold_at)
|
||||
self.assertIsNotNone(self.order_1.sold_to)
|
||||
self.assertEqual(self.order_1.total, self.order_1.amount_total)
|
||||
self.assertEqual(self.order_1.total, 70.0)
|
||||
self.order_1.sell(user=self.user_bar)
|
||||
self.assertEqual(self.order_1.sold_at, old_date)
|
||||
self.assertEqual(self.order_1.sold_to, old_user)
|
||||
|
||||
def test_view_readonly(self):
|
||||
response = self.client.patch(
|
||||
path="/api/orders/1/",
|
||||
data={
|
||||
"sold_at": "foo"
|
||||
},
|
||||
content_type="application/json",
|
||||
)
|
||||
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
response = self.client.patch(
|
||||
path="/api/orders/1/",
|
||||
data={
|
||||
"sold_to": self.user_foo.id
|
||||
},
|
||||
content_type="application/json"
|
||||
)
|
||||
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
def test_view_total(self):
|
||||
response = self.client.get(
|
||||
path="/api/orders/1/total/"
|
||||
)
|
||||
self.assertEqual(json.loads(response.content.decode())['amount_total'], 70.0)
|
||||
response = self.client.get(
|
||||
path="/api/orders/2/total/"
|
||||
)
|
||||
self.assertEqual(json.loads(response.content.decode())['amount_total'], 70.0)
|
||||
|
||||
def test_view_sell(self):
|
||||
response = self.client.get(
|
||||
path="/api/orders/2/sold/"
|
||||
)
|
||||
self.order_2.refresh_from_db()
|
||||
self.assertEqual(self.order_2.sold_to, self.user_foo)
|
||||
Loading…
Add table
Add a link
Reference in a new issue