Merge pull request #2991 from matmair/not-working-tests

Static test fixes
This commit is contained in:
Oliver 2022-05-20 20:46:28 +10:00 committed by GitHub
commit bd195105e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 78 additions and 27 deletions

View File

@ -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

View File

@ -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'))

View File

@ -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 = []

View File

@ -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))

View File

@ -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__)),

View 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)

View File

@ -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'])

View File

@ -15,7 +15,6 @@ def apps():
""" """
return [ return [
'barcode',
'build', 'build',
'common', 'common',
'company', 'company',
@ -24,8 +23,9 @@ def apps():
'part', 'part',
'report', 'report',
'stock', 'stock',
'InvenTree',
'users', 'users',
'plugin',
'InvenTree',
] ]