mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-31 21:25:42 +00:00 
			
		
		
		
	Merge pull request #2991 from matmair/not-working-tests
Static test fixes
This commit is contained in:
		
							
								
								
									
										14
									
								
								.github/workflows/qc_checks.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.github/workflows/qc_checks.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -182,9 +182,9 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           sudo apt-get update |           sudo apt-get update | ||||||
|           sudo apt-get install gettext |           sudo apt-get install gettext | ||||||
|  |           python -m pip install -U pip | ||||||
|           pip3 install invoke |           pip3 install invoke | ||||||
|           invoke install |           invoke update | ||||||
|           invoke static |  | ||||||
|       - name: Coverage Tests |       - name: Coverage Tests | ||||||
|         run: | |         run: | | ||||||
|           invoke coverage |           invoke coverage | ||||||
| @@ -245,11 +245,12 @@ jobs: | |||||||
|       - name: Install Dependencies |       - name: Install Dependencies | ||||||
|         run: | |         run: | | ||||||
|           sudo apt-get update |           sudo apt-get update | ||||||
|           sudo apt-get install libpq-dev |           sudo apt-get install libpq-dev gettext | ||||||
|  |           python -m pip install -U pip | ||||||
|           pip3 install invoke |           pip3 install invoke | ||||||
|           pip3 install psycopg2 |           pip3 install psycopg2 | ||||||
|           pip3 install django-redis>=5.0.0 |           pip3 install django-redis>=5.0.0 | ||||||
|           invoke install |           invoke update | ||||||
|       - name: Run Tests |       - name: Run Tests | ||||||
|         run: invoke test |         run: invoke test | ||||||
|       - name: Data Import Export |       - name: Data Import Export | ||||||
| @@ -302,10 +303,11 @@ jobs: | |||||||
|       - name: Install Dependencies |       - name: Install Dependencies | ||||||
|         run: | |         run: | | ||||||
|           sudo apt-get update |           sudo apt-get update | ||||||
|           sudo apt-get install libmysqlclient-dev |           sudo apt-get install libmysqlclient-dev gettext | ||||||
|  |           python -m pip install -U pip | ||||||
|           pip3 install invoke |           pip3 install invoke | ||||||
|           pip3 install mysqlclient |           pip3 install mysqlclient | ||||||
|           invoke install |           invoke update | ||||||
|       - name: Run Tests |       - name: Run Tests | ||||||
|         run: invoke test |         run: invoke test | ||||||
|       - name: Data Import Export |       - name: Data Import Export | ||||||
|   | |||||||
| @@ -32,6 +32,10 @@ class MiddlewareTests(TestCase): | |||||||
|         # logout |         # logout | ||||||
|         self.client.logout() |         self.client.logout() | ||||||
|  |  | ||||||
|  |         # check that static files go through | ||||||
|  |         # TODO @matmair reenable this check | ||||||
|  |         # self.check_path('/static/css/inventree.css', 302) | ||||||
|  |  | ||||||
|         # check that account things go through |         # check that account things go through | ||||||
|         self.check_path(reverse('account_login')) |         self.check_path(reverse('account_login')) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1722,6 +1722,9 @@ class ColorTheme(models.Model): | |||||||
|     @classmethod |     @classmethod | ||||||
|     def get_color_themes_choices(cls): |     def get_color_themes_choices(cls): | ||||||
|         """ Get all color themes from static folder """ |         """ Get all color themes from static folder """ | ||||||
|  |         if settings.TESTING and not os.path.exists(settings.STATIC_COLOR_THEMES_DIR): | ||||||
|  |             logger.error('Theme directory does not exsist') | ||||||
|  |             return [] | ||||||
|  |  | ||||||
|         # Get files list from css/color-themes/ folder |         # Get files list from css/color-themes/ folder | ||||||
|         files_list = [] |         files_list = [] | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ from InvenTree.helpers import str2bool | |||||||
| from plugin.models import NotificationUserSetting, PluginConfig | from plugin.models import NotificationUserSetting, PluginConfig | ||||||
| from plugin import registry | from plugin import registry | ||||||
|  |  | ||||||
| from .models import InvenTreeSetting, InvenTreeUserSetting, WebhookEndpoint, WebhookMessage, NotificationEntry | from .models import InvenTreeSetting, InvenTreeUserSetting, WebhookEndpoint, WebhookMessage, NotificationEntry, ColorTheme | ||||||
| from .api import WebhookView | from .api import WebhookView | ||||||
|  |  | ||||||
| CONTENT_TYPE_JSON = 'application/json' | CONTENT_TYPE_JSON = 'application/json' | ||||||
| @@ -716,3 +716,35 @@ class LoadingTest(TestCase): | |||||||
|  |  | ||||||
|         # now it should be false again |         # now it should be false again | ||||||
|         self.assertFalse(common.models.InvenTreeSetting.get_setting('SERVER_RESTART_REQUIRED')) |         self.assertFalse(common.models.InvenTreeSetting.get_setting('SERVER_RESTART_REQUIRED')) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class ColorThemeTest(TestCase): | ||||||
|  |     """Tests for ColorTheme""" | ||||||
|  |  | ||||||
|  |     def test_choices(self): | ||||||
|  |         """Test that default choices are returned""" | ||||||
|  |         result = ColorTheme.get_color_themes_choices() | ||||||
|  |  | ||||||
|  |         # skip | ||||||
|  |         if not result: | ||||||
|  |             return | ||||||
|  |         self.assertIn(('default', 'Default'), result) | ||||||
|  |  | ||||||
|  |     def test_valid_choice(self): | ||||||
|  |         """Check that is_valid_choice works correctly""" | ||||||
|  |         result = ColorTheme.get_color_themes_choices() | ||||||
|  |  | ||||||
|  |         # skip | ||||||
|  |         if not result: | ||||||
|  |             return | ||||||
|  |  | ||||||
|  |         # check wrong reference | ||||||
|  |         self.assertFalse(ColorTheme.is_valid_choice('abcdd')) | ||||||
|  |  | ||||||
|  |         # create themes | ||||||
|  |         aa = ColorTheme.objects.create(user='aa', name='testname') | ||||||
|  |         ab = ColorTheme.objects.create(user='ab', name='darker') | ||||||
|  |  | ||||||
|  |         # check valid theme | ||||||
|  |         self.assertFalse(ColorTheme.is_valid_choice(aa)) | ||||||
|  |         self.assertTrue(ColorTheme.is_valid_choice(ab)) | ||||||
|   | |||||||
| @@ -2,6 +2,7 @@ import os | |||||||
| import shutil | import shutil | ||||||
| import logging | import logging | ||||||
| import hashlib | import hashlib | ||||||
|  | import warnings | ||||||
|  |  | ||||||
| from django.apps import AppConfig | from django.apps import AppConfig | ||||||
| from django.conf import settings | from django.conf import settings | ||||||
| @@ -42,6 +43,15 @@ class LabelConfig(AppConfig): | |||||||
|         """ |         """ | ||||||
|         Create all default templates |         Create all default templates | ||||||
|         """ |         """ | ||||||
|  |         # Test if models are ready | ||||||
|  |         try: | ||||||
|  |             from .models import StockLocationLabel | ||||||
|  |             assert bool(StockLocationLabel is not None) | ||||||
|  |         except AppRegistryNotReady: | ||||||
|  |             # Database might not yet be ready | ||||||
|  |             warnings.warn('Database was not ready for creating labels') | ||||||
|  |             return | ||||||
|  |  | ||||||
|         self.create_stock_item_labels() |         self.create_stock_item_labels() | ||||||
|         self.create_stock_location_labels() |         self.create_stock_location_labels() | ||||||
|         self.create_part_labels() |         self.create_part_labels() | ||||||
| @@ -52,11 +62,7 @@ class LabelConfig(AppConfig): | |||||||
|         if they do not already exist |         if they do not already exist | ||||||
|         """ |         """ | ||||||
|  |  | ||||||
|         try: |         from .models import StockItemLabel | ||||||
|             from .models import StockItemLabel |  | ||||||
|         except AppRegistryNotReady:  # pragma: no cover |  | ||||||
|             # Database might not by ready yet |  | ||||||
|             return |  | ||||||
|  |  | ||||||
|         src_dir = os.path.join( |         src_dir = os.path.join( | ||||||
|             os.path.dirname(os.path.realpath(__file__)), |             os.path.dirname(os.path.realpath(__file__)), | ||||||
| @@ -139,11 +145,7 @@ class LabelConfig(AppConfig): | |||||||
|         if they do not already exist |         if they do not already exist | ||||||
|         """ |         """ | ||||||
|  |  | ||||||
|         try: |         from .models import StockLocationLabel | ||||||
|             from .models import StockLocationLabel |  | ||||||
|         except AppRegistryNotReady:  # pragma: no cover |  | ||||||
|             # Database might not yet be ready |  | ||||||
|             return |  | ||||||
|  |  | ||||||
|         src_dir = os.path.join( |         src_dir = os.path.join( | ||||||
|             os.path.dirname(os.path.realpath(__file__)), |             os.path.dirname(os.path.realpath(__file__)), | ||||||
| @@ -233,11 +235,7 @@ class LabelConfig(AppConfig): | |||||||
|         if they do not already exist. |         if they do not already exist. | ||||||
|         """ |         """ | ||||||
|  |  | ||||||
|         try: |         from .models import PartLabel | ||||||
|             from .models import PartLabel |  | ||||||
|         except AppRegistryNotReady:  # pragma: no cover |  | ||||||
|             # Database might not yet be ready |  | ||||||
|             return |  | ||||||
|  |  | ||||||
|         src_dir = os.path.join( |         src_dir = os.path.join( | ||||||
|             os.path.dirname(os.path.realpath(__file__)), |             os.path.dirname(os.path.realpath(__file__)), | ||||||
|   | |||||||
| @@ -4,12 +4,14 @@ import os | |||||||
|  |  | ||||||
| from django.conf import settings | from django.conf import settings | ||||||
| from django.apps import apps | from django.apps import apps | ||||||
|  | from django.urls import reverse | ||||||
| from django.core.exceptions import ValidationError | from django.core.exceptions import ValidationError | ||||||
|  |  | ||||||
| from InvenTree.helpers import validateFilterString | from InvenTree.helpers import validateFilterString | ||||||
| from InvenTree.api_tester import InvenTreeAPITestCase | from InvenTree.api_tester import InvenTreeAPITestCase | ||||||
|  |  | ||||||
| from .models import StockItemLabel, StockLocationLabel | from .models import StockItemLabel, StockLocationLabel, PartLabel | ||||||
|  | from part.models import Part | ||||||
| from stock.models import StockItem | from stock.models import StockItem | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -82,3 +84,13 @@ class LabelTest(InvenTreeAPITestCase): | |||||||
|  |  | ||||||
|         with self.assertRaises(ValidationError): |         with self.assertRaises(ValidationError): | ||||||
|             validateFilterString(bad_filter_string, model=StockItem) |             validateFilterString(bad_filter_string, model=StockItem) | ||||||
|  |  | ||||||
|  |     def test_label_rendering(self): | ||||||
|  |         """Test label rendering""" | ||||||
|  |  | ||||||
|  |         labels = PartLabel.objects.all() | ||||||
|  |         part = Part.objects.first() | ||||||
|  |  | ||||||
|  |         for label in labels: | ||||||
|  |             url = reverse('api-part-label-print', kwargs={'pk': label.pk}) | ||||||
|  |             self.get(f'{url}?parts={part.pk}', expected_code=200) | ||||||
|   | |||||||
| @@ -83,7 +83,7 @@ def render_date(context, date_object): | |||||||
|  |  | ||||||
|         user = context.get('user', None) |         user = context.get('user', None) | ||||||
|  |  | ||||||
|         if user: |         if user and user.is_authenticated: | ||||||
|             # User is specified - look for their date display preference |             # User is specified - look for their date display preference | ||||||
|             user_date_format = InvenTreeUserSetting.get_setting('DATE_DISPLAY_FORMAT', user=user) |             user_date_format = InvenTreeUserSetting.get_setting('DATE_DISPLAY_FORMAT', user=user) | ||||||
|         else: |         else: | ||||||
| @@ -329,7 +329,7 @@ def settings_value(key, *args, **kwargs): | |||||||
|     """ |     """ | ||||||
|  |  | ||||||
|     if 'user' in kwargs: |     if 'user' in kwargs: | ||||||
|         if not kwargs['user']: |         if not kwargs['user'] or (kwargs['user'] and kwargs['user'].is_authenticated is False): | ||||||
|             return InvenTreeUserSetting.get_setting(key) |             return InvenTreeUserSetting.get_setting(key) | ||||||
|         return InvenTreeUserSetting.get_setting(key, user=kwargs['user']) |         return InvenTreeUserSetting.get_setting(key, user=kwargs['user']) | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user