feat: added lots of tests

This commit is contained in:
2024-05-13 12:35:58 +02:00
parent 05caeb9607
commit 9d83c3b30f
8 changed files with 545 additions and 0 deletions
+66
View File
@@ -0,0 +1,66 @@
from rest_framework import status
from rest_framework.test import APITestCase
from config.tests.mixins import TestUserAuthenticationMixin
class TestCustomersAPI(APITestCase, TestUserAuthenticationMixin):
model_name = "customer"
def setUp(self):
self.create_user()
def test_create_retrieve_customer(self):
self.login()
response = self.client.post(
f"/api/v1/shop/customers/",
{
"vat_id": "11111111H",
"first_name": "Darth",
"last_name": "Maull",
"email": "darth@maul.com",
"address": "Dathomir",
"city": "Dathomir",
"state": "Dathomir",
"country": "Dathomir",
"zip": "00001",
},
)
assert response.status_code == status.HTTP_201_CREATED
pk = response.data.get("id")
response = self.client.get(f"/api/v1/shop/customers/{pk}/")
assert response.status_code == status.HTTP_200_OK
def test_create_update_customer(self):
self.login()
response = self.client.post(
f"/api/v1/shop/customers/",
{
"vat_id": "11111111H",
"first_name": "Darth",
"last_name": "Maull",
"email": "darth@maul.com",
"address": "Dathomir",
"city": "Dathomir",
"state": "Dathomir",
"country": "Dathomir",
"zip": "00001",
},
)
assert response.status_code == status.HTTP_201_CREATED
pk = response.data.get("id")
response = self.client.get(f"/api/v1/shop/customers/{pk}/")
assert response.status_code == status.HTTP_200_OK
response = self.client.patch(
f"/api/v1/shop/customers/{pk}/",
{
"address": "Mandalore",
},
)
assert response.status_code == status.HTTP_200_OK
response = self.client.get(f"/api/v1/shop/customers/{pk}/")
assert response.status_code == status.HTTP_200_OK
assert response.data.get("address") == "Mandalore"
+60
View File
@@ -0,0 +1,60 @@
from decimal import Decimal
from rest_framework import status
from rest_framework.test import APITestCase
from config.tests.mixins import TestUserAuthenticationMixin
from shop.models import Product, ProductBatch
class TestProductBatchesAPI(APITestCase, TestUserAuthenticationMixin):
model_name = "productbatch"
def setUp(self):
self.create_user()
def create_product(self):
self.product = Product.objects.create(
name="Papafritas",
description="Las mejores papafritas",
is_digital_asset=False,
url="",
)
def test_create_retrieve_product_batch(self):
self.login()
self.create_product()
response = self.client.post(
"/api/v1/shop/product-batches/",
{"code": "B00001", "product": self.product.pk, "quantity": "5"},
)
assert response.status_code == status.HTTP_201_CREATED
pk = response.data.get("id")
response = self.client.get(f"/api/v1/shop/product-batches/{pk}/")
assert response.status_code == status.HTTP_200_OK
def test_create_update_tax(self):
self.login()
self.create_product()
response = self.client.post(
"/api/v1/shop/product-batches/",
{"code": "B00001", "product": self.product.pk, "quantity": "5"},
)
assert response.status_code == status.HTTP_201_CREATED
pk = response.data.get("id")
response = self.client.get(f"/api/v1/shop/product-batches/{pk}/")
assert response.status_code == status.HTTP_200_OK
response = self.client.patch(
f"/api/v1/shop/product-batches/{pk}/",
{
"quantity": "10",
},
)
assert response.status_code == status.HTTP_200_OK
response = self.client.get(f"/api/v1/shop/product-batches/{pk}/")
assert response.status_code == status.HTTP_200_OK
assert Decimal(response.data.get("quantity")) == Decimal("10")
+117
View File
@@ -0,0 +1,117 @@
from decimal import Decimal
from rest_framework import status
from rest_framework.test import APITestCase
from django.utils import timezone
from config.tests.mixins import TestUserAuthenticationMixin
from shop.models import Product, ProductPrice, Tax, ProductBatch
class TestProductPricessAPI(APITestCase, TestUserAuthenticationMixin):
model_name = "productprice"
def setUp(self):
self.create_user()
self.tax = Tax.objects.create(
code="IVA",
value=21,
)
def create_products(self):
self.product = Product.objects.create(
name="Papafritas",
description="Las mejores papafritas",
is_digital_asset=False,
url="",
)
ProductPrice.objects.create(
product=self.product,
price=Decimal("1.20"),
tax=self.tax,
)
def test_fetch_product_prices(self):
self.login()
self.create_products()
response = self.client.get(f"/api/v1/shop/products/{self.product.pk}/prices/")
assert response.status_code == status.HTTP_200_OK
assert len(response.data.get("results")) == 1
def test_create_product_prices(self):
self.login()
product = Product.objects.create(
name="Papafritas",
description="Las mejores papafritas",
is_digital_asset=False,
url="",
)
response = self.client.post(
f"/api/v1/shop/products/{product.pk}/prices/",
{
"price": "1.20",
"tax": self.tax.pk,
},
)
assert response.status_code == status.HTTP_201_CREATED
response = self.client.get(f"/api/v1/shop/products/{product.pk}/prices/")
assert response.status_code == status.HTTP_200_OK
assert len(response.data.get("results")) == 1
def test_create_update_product_prices(self):
self.login()
product = Product.objects.create(
name="Papafritas",
description="Las mejores papafritas",
is_digital_asset=False,
url="",
)
response = self.client.post(
f"/api/v1/shop/products/{product.pk}/prices/",
{
"price": "1.20",
"tax": self.tax.pk,
},
)
assert response.status_code == status.HTTP_201_CREATED
pk = response.data.get("id")
response = self.client.patch(
f"/api/v1/shop/products/{product.pk}/prices/{pk}/",
{
"price": "1.10",
},
)
assert response.status_code == status.HTTP_200_OK
response = self.client.get(f"/api/v1/shop/products/{product.pk}/prices/{pk}/")
assert response.data.get("price") == "1.10"
def test_create_delete_product_prices(self):
self.login()
product = Product.objects.create(
name="Papafritas",
description="Las mejores papafritas",
is_digital_asset=False,
url="",
)
response = self.client.post(
f"/api/v1/shop/products/{product.pk}/prices/",
{
"price": "1.20",
"tax": self.tax.pk,
},
)
assert response.status_code == status.HTTP_201_CREATED
pk = response.data.get("id")
response = self.client.delete(
f"/api/v1/shop/products/{product.pk}/prices/{pk}/"
)
assert response.status_code == status.HTTP_204_NO_CONTENT
response = self.client.get(f"/api/v1/shop/products/{product.pk}/prices/{pk}/")
assert response.status_code == status.HTTP_404_NOT_FOUND
+129
View File
@@ -0,0 +1,129 @@
from decimal import Decimal
from rest_framework import status
from rest_framework.test import APITestCase
from django.utils import timezone
from config.tests.mixins import TestUserAuthenticationMixin
from shop.models import Product, ProductPrice, Tax, ProductBatch
class TestProductsAPI(APITestCase, TestUserAuthenticationMixin):
model_name = "product"
def setUp(self):
self.create_user()
self.tax = Tax.objects.create(
code="IVA",
value=21,
)
def create_products(self):
self.product = Product.objects.create(
name="Papafritas",
description="Las mejores papafritas",
is_digital_asset=False,
url="",
)
self.product_price = ProductPrice.objects.create(
product=self.product,
price=Decimal("1.20"),
tax=self.tax,
date=timezone.now(),
)
self.batch = ProductBatch.objects.create(
code="B0001",
product=self.product,
quantity=Decimal("10"),
)
def test_fetch_products(self):
self.login()
self.create_products()
response = self.client.get("/api/v1/shop/products/")
assert response.status_code == status.HTTP_200_OK
assert len(response.data.get("results")) == 1
def test_create_product(self):
self.login()
response = self.client.post(
"/api/v1/shop/products/",
{
"name": "Papafritas",
"description": "Las mejores papafritas",
"is_digital_asset": False,
"url": "",
"price": "1.20",
"stock": "100",
"tax": self.tax.pk,
},
)
assert response.status_code == status.HTTP_201_CREATED
pk = response.data.get("id")
response = self.client.get(f"/api/v1/shop/products/{pk}/")
assert response.status_code == status.HTTP_200_OK
def test_create_update_product(self):
self.login()
response = self.client.post(
"/api/v1/shop/products/",
{
"name": "Papafritas",
"description": "Las mejores papafritas",
"is_digital_asset": False,
"url": "",
"price": "1.20",
"stock": "100",
"tax": self.tax.pk,
},
)
assert response.status_code == status.HTTP_201_CREATED
pk = response.data.get("id")
response = self.client.get(f"/api/v1/shop/products/{pk}/")
assert response.status_code == status.HTTP_200_OK
response = self.client.patch(
f"/api/v1/shop/products/{pk}/", {"name": "Papafritas pafritas"}
)
assert response.status_code == status.HTTP_200_OK
response = self.client.get(f"/api/v1/shop/products/{pk}/")
assert response.data.get("name") == "Papafritas pafritas"
def test_create_delete_product(self):
self.login()
response = self.client.post(
"/api/v1/shop/products/",
{
"name": "Papafritas",
"description": "Las mejores papafritas",
"is_digital_asset": False,
"url": "",
"price": "1.20",
"stock": "100",
"tax": self.tax.pk,
},
)
assert response.status_code == status.HTTP_201_CREATED
pk = response.data.get("id")
response = self.client.get(f"/api/v1/shop/products/{pk}/")
assert response.status_code == status.HTTP_200_OK
response = self.client.delete(f"/api/v1/shop/products/{pk}/")
assert response.status_code == status.HTTP_204_NO_CONTENT
response = self.client.get(f"/api/v1/shop/products/{pk}/")
assert response.status_code == status.HTTP_404_NOT_FOUND
def test_create_cannot_delete_product_with_a_batch(self):
self.login()
self.create_products()
response = self.client.get(f"/api/v1/shop/products/{self.product.pk}/")
assert response.status_code == status.HTTP_200_OK
response = self.client.delete(f"/api/v1/shop/products/{self.product.pk}/")
assert response.status_code == status.HTTP_400_BAD_REQUEST
+66
View File
@@ -0,0 +1,66 @@
from rest_framework import status
from rest_framework.test import APITestCase
from config.tests.mixins import TestUserAuthenticationMixin
class TestProvidersAPI(APITestCase, TestUserAuthenticationMixin):
model_name = "provider"
def setUp(self):
self.create_user()
def test_create_retrieve_provider(self):
self.login()
response = self.client.post(
f"/api/v1/shop/providers/",
{
"vat_id": "11111111H",
"name": "Darth Maul",
"email": "darth@maul.com",
"address": "Dathomir",
"city": "Dathomir",
"state": "Dathomir",
"country": "Dathomir",
"zip": "00001",
},
)
assert response.status_code == status.HTTP_201_CREATED
pk = response.data.get("id")
response = self.client.get(f"/api/v1/shop/providers/{pk}/")
assert response.status_code == status.HTTP_200_OK
def test_create_update_provider(self):
self.login()
response = self.client.post(
f"/api/v1/shop/providers/",
{
"vat_id": "11111111H",
"name": "Darth Maul",
"email": "darth@maul.com",
"address": "Dathomir",
"city": "Dathomir",
"state": "Dathomir",
"country": "Dathomir",
"zip": "00001",
},
)
assert response.status_code == status.HTTP_201_CREATED
pk = response.data.get("id")
response = self.client.get(f"/api/v1/shop/providers/{pk}/")
assert response.status_code == status.HTTP_200_OK
response = self.client.patch(
f"/api/v1/shop/providers/{pk}/",
{
"address": "Mandalore",
},
)
assert response.status_code == status.HTTP_200_OK
response = self.client.get(f"/api/v1/shop/providers/{pk}/")
assert response.status_code == status.HTTP_200_OK
assert response.data.get("address") == "Mandalore"
+54
View File
@@ -0,0 +1,54 @@
from rest_framework import status
from rest_framework.test import APITestCase
from config.tests.mixins import TestUserAuthenticationMixin
from shop.models import Tax
class TestTaxesAPI(APITestCase, TestUserAuthenticationMixin):
model_name = "tax"
def setUp(self):
self.create_user()
def create_taxes(self):
Tax.objects.create(
code="IVA",
value=21,
)
def test_fetch_taxes(self):
self.create_taxes()
self.login()
response = self.client.get("/api/v1/shop/taxes/")
assert response.status_code == status.HTTP_200_OK
assert len(response.data.get("results")) == 1
def test_create_retrieve_tax(self):
self.login()
response = self.client.post("/api/v1/shop/taxes/", {"code": "IVA5", "value": 5})
assert response.status_code == status.HTTP_201_CREATED
pk = response.data.get("id")
response = self.client.get(f"/api/v1/shop/taxes/{pk}/")
assert response.status_code == status.HTTP_200_OK
def test_create_update_tax(self):
self.login()
response = self.client.post("/api/v1/shop/taxes/", {"code": "IVA5", "value": 5})
assert response.status_code == status.HTTP_201_CREATED
pk = response.data.get("id")
response = self.client.get(f"/api/v1/shop/taxes/{pk}/")
assert response.status_code == status.HTTP_200_OK
response = self.client.patch(
f"/api/v1/shop/taxes/{pk}/", {"code": "IVA10", "value": 10}
)
assert response.status_code == status.HTTP_200_OK
response = self.client.get(f"/api/v1/shop/taxes/{pk}/")
assert response.status_code == status.HTTP_200_OK
assert response.data.get("code") == "IVA10"
assert response.data.get("value") == 10