diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 677f5ef..cbd6fb9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,6 +10,13 @@ jobs: build: runs-on: ubuntu-latest + env: + DJANGO_SECRET_KEY: ${{ secrets.DJANGO_SECRET_KEY }} + DJANGO_DEBUG: True + DJANGO_ALLOWED_HOSTS: localhost,127.0.0.1 + DATABASE_URL: ${{ secrets.DATABASE_URL }} + + steps: - uses: actions/checkout@v4 @@ -26,4 +33,4 @@ jobs: - name: Run Django Tests working-directory: ./warehouse_managment run: | - python manage.py test --keepdb + python manage.py test product/tests warehouse_managment/tests --keepdb diff --git a/warehouse_managment/product/tests/__init__.py b/warehouse_managment/product/tests/__init__.py new file mode 100644 index 0000000..8255b2a --- /dev/null +++ b/warehouse_managment/product/tests/__init__.py @@ -0,0 +1 @@ +# __init__.py file for the product tests package \ No newline at end of file diff --git a/warehouse_managment/product/tests/test_views.py b/warehouse_managment/product/tests/test_views.py new file mode 100644 index 0000000..fbecd74 --- /dev/null +++ b/warehouse_managment/product/tests/test_views.py @@ -0,0 +1,55 @@ +from django.urls import reverse +from rest_framework import status +from rest_framework.test import APITestCase +from product.models import Product, ProductCategory, SupplierProduct + +class ProductTests(APITestCase): + def setUp(self): + # Create test data + self.category = ProductCategory.objects.create(category_name="Electronics") + self.product = Product.objects.create(product_name="Laptop", unit_price=1000.00, category=self.category) + self.supplier_product = SupplierProduct.objects.create(supplier_id=1, product=self.product, maximum_capacity=100, supplier_price=900.00) + + def test_product_list(self): + url = reverse('product-list') + response = self.client.get(url) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(len(response.data), 1) + + def test_product_detail(self): + url = reverse('product-detail', args=[self.product.id]) + response = self.client.get(url) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data['product_name'], "Laptop") + + def test_category_list(self): + url = reverse('category-list') + response = self.client.get(url) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(len(response.data), 1) + + def test_category_detail(self): + url = reverse('category-detail', args=[self.category.id]) + response = self.client.get(url) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data['category_name'], "Electronics") + + def test_supplier_product_list(self): + url = reverse('supplier-product-list') + response = self.client.get(url) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(len(response.data), 1) + + def test_update_supplier_product(self): + url = reverse('update-supplier-product') + data = { + 'supplier_id': 1, + 'product_id': self.product.id, + 'maximum_capacity': 150 + } + response = self.client.post(url, data, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.supplier_product.refresh_from_db() + self.assertEqual(self.supplier_product.maximum_capacity, 150) + + \ No newline at end of file diff --git a/warehouse_managment/warehouse/tests.py b/warehouse_managment/warehouse/tests.py deleted file mode 100644 index e69de29..0000000 diff --git a/warehouse_managment/product/tests.py b/warehouse_managment/warehouse_managment/tests/__init__.py similarity index 100% rename from warehouse_managment/product/tests.py rename to warehouse_managment/warehouse_managment/tests/__init__.py diff --git a/warehouse_managment/warehouse_managment/tests/test_views.py b/warehouse_managment/warehouse_managment/tests/test_views.py new file mode 100644 index 0000000..c6572ff --- /dev/null +++ b/warehouse_managment/warehouse_managment/tests/test_views.py @@ -0,0 +1,46 @@ +from django.urls import reverse +from rest_framework import status +from rest_framework.test import APITestCase +from warehouse.models import Warehouse, WarehouseInventory, InventoryTransaction +from product.models import Product, ProductCategory + +class WarehouseTests(APITestCase): + def setUp(self): + # Create test data + self.category = ProductCategory.objects.create(category_name="Electronics") + self.product = Product.objects.create(product_name="Laptop", unit_price=1000.00, category=self.category) + self.warehouse = Warehouse.objects.create(location_x="10", location_y="20", warehouse_name="Main Warehouse") + self.inventory = WarehouseInventory.objects.create(warehouse=self.warehouse, product=self.product, supplier_id=1, quantity=50) + self.transaction = InventoryTransaction.objects.create(inventory=self.inventory, transaction_type='INCOMING', quantity_change=50, created_by="Test User") + + def test_warehouse_list(self): + url = reverse('warehouse-list') + response = self.client.get(url) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(len(response.data), 1) + + def test_warehouse_inventory_list(self): + url = reverse('inventory-list') + response = self.client.get(url) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(len(response.data), 1) + + def test_transaction_list(self): + url = reverse('transaction-list') + response = self.client.get(url) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(len(response.data), 1) + + def test_supplier_dashboard(self): + url = reverse('supplier-dashboard') + '?supplier_id=1' + response = self.client.get(url) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(len(response.data), 1) + + + + # def test_supplier_inventory(self): + # url = reverse('supplier-inventory') + '?supplier_id=1' + # response = self.client.get(url) + # self.assertEqual(response.status_code, status.HTTP_200_OK) + # self.assertEqual(len(response.data), 1)