mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Cleanup / consolidate unit testing code (#4831)
- Move testing code out of helpers.py - Create new file unit_test.py
This commit is contained in:
parent
f85b378115
commit
4785f465e8
@ -6,7 +6,7 @@ Only used for testing the js files! - This file is omited from coverage.
|
|||||||
import os # pragma: no cover
|
import os # pragma: no cover
|
||||||
import pathlib # pragma: no cover
|
import pathlib # pragma: no cover
|
||||||
|
|
||||||
from InvenTree.helpers import InvenTreeTestCase # pragma: no cover
|
from InvenTree.unit_test import InvenTreeTestCase # pragma: no cover
|
||||||
|
|
||||||
|
|
||||||
class RenderJavascriptFiles(InvenTreeTestCase): # pragma: no cover
|
class RenderJavascriptFiles(InvenTreeTestCase): # pragma: no cover
|
||||||
|
@ -8,18 +8,15 @@ import os
|
|||||||
import os.path
|
import os.path
|
||||||
import re
|
import re
|
||||||
from decimal import Decimal, InvalidOperation
|
from decimal import Decimal, InvalidOperation
|
||||||
from pathlib import Path
|
|
||||||
from wsgiref.util import FileWrapper
|
from wsgiref.util import FileWrapper
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth.models import Permission
|
|
||||||
from django.contrib.staticfiles.storage import StaticFilesStorage
|
from django.contrib.staticfiles.storage import StaticFilesStorage
|
||||||
from django.core.exceptions import FieldError, ValidationError
|
from django.core.exceptions import FieldError, ValidationError
|
||||||
from django.core.files.storage import default_storage
|
from django.core.files.storage import default_storage
|
||||||
from django.core.validators import URLValidator
|
from django.core.validators import URLValidator
|
||||||
from django.db.utils import OperationalError, ProgrammingError
|
from django.db.utils import OperationalError, ProgrammingError
|
||||||
from django.http import StreamingHttpResponse
|
from django.http import StreamingHttpResponse
|
||||||
from django.test import TestCase
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
import moneyed.localization
|
import moneyed.localization
|
||||||
@ -36,7 +33,6 @@ from common.notifications import (InvenTreeNotificationBodies,
|
|||||||
NotificationBody, trigger_notification)
|
NotificationBody, trigger_notification)
|
||||||
from common.settings import currency_code_default
|
from common.settings import currency_code_default
|
||||||
|
|
||||||
from .api_tester import ExchangeRateMixin, UserMixin
|
|
||||||
from .settings import MEDIA_URL, STATIC_URL
|
from .settings import MEDIA_URL, STATIC_URL
|
||||||
|
|
||||||
logger = logging.getLogger('inventree')
|
logger = logging.getLogger('inventree')
|
||||||
@ -850,75 +846,6 @@ def validateFilterString(value, model=None):
|
|||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
||||||
def addUserPermission(user, permission):
|
|
||||||
"""Shortcut function for adding a certain permission to a user."""
|
|
||||||
perm = Permission.objects.get(codename=permission)
|
|
||||||
user.user_permissions.add(perm)
|
|
||||||
|
|
||||||
|
|
||||||
def addUserPermissions(user, permissions):
|
|
||||||
"""Shortcut function for adding multiple permissions to a user."""
|
|
||||||
for permission in permissions:
|
|
||||||
addUserPermission(user, permission)
|
|
||||||
|
|
||||||
|
|
||||||
def getMigrationFileNames(app):
|
|
||||||
"""Return a list of all migration filenames for provided app."""
|
|
||||||
local_dir = Path(__file__).parent
|
|
||||||
files = local_dir.joinpath('..', app, 'migrations').iterdir()
|
|
||||||
|
|
||||||
# Regex pattern for migration files
|
|
||||||
regex = re.compile(r"^[\d]+_.*\.py$")
|
|
||||||
|
|
||||||
migration_files = []
|
|
||||||
|
|
||||||
for f in files:
|
|
||||||
if regex.match(f.name):
|
|
||||||
migration_files.append(f.name)
|
|
||||||
|
|
||||||
return migration_files
|
|
||||||
|
|
||||||
|
|
||||||
def getOldestMigrationFile(app, exclude_extension=True, ignore_initial=True):
|
|
||||||
"""Return the filename associated with the oldest migration."""
|
|
||||||
oldest_num = -1
|
|
||||||
oldest_file = None
|
|
||||||
|
|
||||||
for f in getMigrationFileNames(app):
|
|
||||||
|
|
||||||
if ignore_initial and f.startswith('0001_initial'):
|
|
||||||
continue
|
|
||||||
|
|
||||||
num = int(f.split('_')[0])
|
|
||||||
|
|
||||||
if oldest_file is None or num < oldest_num:
|
|
||||||
oldest_num = num
|
|
||||||
oldest_file = f
|
|
||||||
|
|
||||||
if exclude_extension:
|
|
||||||
oldest_file = oldest_file.replace('.py', '')
|
|
||||||
|
|
||||||
return oldest_file
|
|
||||||
|
|
||||||
|
|
||||||
def getNewestMigrationFile(app, exclude_extension=True):
|
|
||||||
"""Return the filename associated with the newest migration."""
|
|
||||||
newest_file = None
|
|
||||||
newest_num = -1
|
|
||||||
|
|
||||||
for f in getMigrationFileNames(app):
|
|
||||||
num = int(f.split('_')[0])
|
|
||||||
|
|
||||||
if newest_file is None or num > newest_num:
|
|
||||||
newest_num = num
|
|
||||||
newest_file = f
|
|
||||||
|
|
||||||
if exclude_extension:
|
|
||||||
newest_file = newest_file.replace('.py', '')
|
|
||||||
|
|
||||||
return newest_file
|
|
||||||
|
|
||||||
|
|
||||||
def clean_decimal(number):
|
def clean_decimal(number):
|
||||||
"""Clean-up decimal value."""
|
"""Clean-up decimal value."""
|
||||||
# Check if empty
|
# Check if empty
|
||||||
@ -1091,11 +1018,6 @@ def inheritors(cls):
|
|||||||
return subcls
|
return subcls
|
||||||
|
|
||||||
|
|
||||||
class InvenTreeTestCase(ExchangeRateMixin, UserMixin, TestCase):
|
|
||||||
"""Testcase with user setup buildin."""
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def notify_responsible(instance, sender, content: NotificationBody = InvenTreeNotificationBodies.NewOrder, exclude=None):
|
def notify_responsible(instance, sender, content: NotificationBody = InvenTreeNotificationBodies.NewOrder, exclude=None):
|
||||||
"""Notify all responsible parties of a change in an instance.
|
"""Notify all responsible parties of a change in an instance.
|
||||||
|
|
||||||
|
@ -6,8 +6,7 @@ from django.urls import reverse
|
|||||||
|
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
|
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase
|
from InvenTree.unit_test import InvenTreeAPITestCase, InvenTreeTestCase
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
|
||||||
from users.models import RuleSet, update_group_roles
|
from users.models import RuleSet, update_group_roles
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ from django.urls import reverse
|
|||||||
from error_report.models import Error
|
from error_report.models import Error
|
||||||
|
|
||||||
from InvenTree.exceptions import log_error
|
from InvenTree.exceptions import log_error
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
from InvenTree.unit_test import InvenTreeTestCase
|
||||||
|
|
||||||
|
|
||||||
class MiddlewareTests(InvenTreeTestCase):
|
class MiddlewareTests(InvenTreeTestCase):
|
||||||
|
@ -5,7 +5,7 @@ import os
|
|||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
from InvenTree.unit_test import InvenTreeTestCase
|
||||||
|
|
||||||
|
|
||||||
class ViewTests(InvenTreeTestCase):
|
class ViewTests(InvenTreeTestCase):
|
||||||
|
@ -24,6 +24,7 @@ import InvenTree.tasks
|
|||||||
from common.models import InvenTreeSetting
|
from common.models import InvenTreeSetting
|
||||||
from common.settings import currency_codes
|
from common.settings import currency_codes
|
||||||
from InvenTree.sanitizer import sanitize_svg
|
from InvenTree.sanitizer import sanitize_svg
|
||||||
|
from InvenTree.unit_test import InvenTreeTestCase
|
||||||
from part.models import Part, PartCategory
|
from part.models import Part, PartCategory
|
||||||
from stock.models import StockItem, StockLocation
|
from stock.models import StockItem, StockLocation
|
||||||
|
|
||||||
@ -711,7 +712,7 @@ class TestStatus(TestCase):
|
|||||||
self.assertEqual(ready.isImportingData(), False)
|
self.assertEqual(ready.isImportingData(), False)
|
||||||
|
|
||||||
|
|
||||||
class TestSettings(helpers.InvenTreeTestCase):
|
class TestSettings(InvenTreeTestCase):
|
||||||
"""Unit tests for settings."""
|
"""Unit tests for settings."""
|
||||||
|
|
||||||
superuser = True
|
superuser = True
|
||||||
@ -850,7 +851,7 @@ class TestSettings(helpers.InvenTreeTestCase):
|
|||||||
self.assertEqual(config.get_setting(TEST_ENV_NAME, None, typecast=dict), {})
|
self.assertEqual(config.get_setting(TEST_ENV_NAME, None, typecast=dict), {})
|
||||||
|
|
||||||
|
|
||||||
class TestInstanceName(helpers.InvenTreeTestCase):
|
class TestInstanceName(InvenTreeTestCase):
|
||||||
"""Unit tests for instance name."""
|
"""Unit tests for instance name."""
|
||||||
|
|
||||||
def test_instance_name(self):
|
def test_instance_name(self):
|
||||||
@ -878,7 +879,7 @@ class TestInstanceName(helpers.InvenTreeTestCase):
|
|||||||
self.assertEqual(site_obj.domain, 'http://127.1.2.3')
|
self.assertEqual(site_obj.domain, 'http://127.1.2.3')
|
||||||
|
|
||||||
|
|
||||||
class TestOffloadTask(helpers.InvenTreeTestCase):
|
class TestOffloadTask(InvenTreeTestCase):
|
||||||
"""Tests for offloading tasks to the background worker"""
|
"""Tests for offloading tasks to the background worker"""
|
||||||
|
|
||||||
fixtures = [
|
fixtures = [
|
||||||
@ -975,7 +976,7 @@ class TestOffloadTask(helpers.InvenTreeTestCase):
|
|||||||
self.assertTrue(result)
|
self.assertTrue(result)
|
||||||
|
|
||||||
|
|
||||||
class BarcodeMixinTest(helpers.InvenTreeTestCase):
|
class BarcodeMixinTest(InvenTreeTestCase):
|
||||||
"""Tests for the InvenTreeBarcodeMixin mixin class"""
|
"""Tests for the InvenTreeBarcodeMixin mixin class"""
|
||||||
|
|
||||||
def test_barcode_model_type(self):
|
def test_barcode_model_type(self):
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
"""Helper functions for performing API unit tests."""
|
"""Helper functions for unit testing / CI"""
|
||||||
|
|
||||||
import csv
|
import csv
|
||||||
import io
|
import io
|
||||||
import re
|
import re
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.auth.models import Group
|
from django.contrib.auth.models import Group, Permission
|
||||||
from django.http.response import StreamingHttpResponse
|
from django.http.response import StreamingHttpResponse
|
||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
from djmoney.contrib.exchange.models import ExchangeBackend, Rate
|
from djmoney.contrib.exchange.models import ExchangeBackend, Rate
|
||||||
from rest_framework.test import APITestCase
|
from rest_framework.test import APITestCase
|
||||||
@ -15,6 +17,75 @@ from plugin import registry
|
|||||||
from plugin.models import PluginConfig
|
from plugin.models import PluginConfig
|
||||||
|
|
||||||
|
|
||||||
|
def addUserPermission(user, permission):
|
||||||
|
"""Shortcut function for adding a certain permission to a user."""
|
||||||
|
perm = Permission.objects.get(codename=permission)
|
||||||
|
user.user_permissions.add(perm)
|
||||||
|
|
||||||
|
|
||||||
|
def addUserPermissions(user, permissions):
|
||||||
|
"""Shortcut function for adding multiple permissions to a user."""
|
||||||
|
for permission in permissions:
|
||||||
|
addUserPermission(user, permission)
|
||||||
|
|
||||||
|
|
||||||
|
def getMigrationFileNames(app):
|
||||||
|
"""Return a list of all migration filenames for provided app."""
|
||||||
|
local_dir = Path(__file__).parent
|
||||||
|
files = local_dir.joinpath('..', app, 'migrations').iterdir()
|
||||||
|
|
||||||
|
# Regex pattern for migration files
|
||||||
|
regex = re.compile(r"^[\d]+_.*\.py$")
|
||||||
|
|
||||||
|
migration_files = []
|
||||||
|
|
||||||
|
for f in files:
|
||||||
|
if regex.match(f.name):
|
||||||
|
migration_files.append(f.name)
|
||||||
|
|
||||||
|
return migration_files
|
||||||
|
|
||||||
|
|
||||||
|
def getOldestMigrationFile(app, exclude_extension=True, ignore_initial=True):
|
||||||
|
"""Return the filename associated with the oldest migration."""
|
||||||
|
oldest_num = -1
|
||||||
|
oldest_file = None
|
||||||
|
|
||||||
|
for f in getMigrationFileNames(app):
|
||||||
|
|
||||||
|
if ignore_initial and f.startswith('0001_initial'):
|
||||||
|
continue
|
||||||
|
|
||||||
|
num = int(f.split('_')[0])
|
||||||
|
|
||||||
|
if oldest_file is None or num < oldest_num:
|
||||||
|
oldest_num = num
|
||||||
|
oldest_file = f
|
||||||
|
|
||||||
|
if exclude_extension:
|
||||||
|
oldest_file = oldest_file.replace('.py', '')
|
||||||
|
|
||||||
|
return oldest_file
|
||||||
|
|
||||||
|
|
||||||
|
def getNewestMigrationFile(app, exclude_extension=True):
|
||||||
|
"""Return the filename associated with the newest migration."""
|
||||||
|
newest_file = None
|
||||||
|
newest_num = -1
|
||||||
|
|
||||||
|
for f in getMigrationFileNames(app):
|
||||||
|
num = int(f.split('_')[0])
|
||||||
|
|
||||||
|
if newest_file is None or num > newest_num:
|
||||||
|
newest_num = num
|
||||||
|
newest_file = f
|
||||||
|
|
||||||
|
if exclude_extension:
|
||||||
|
newest_file = newest_file.replace('.py', '')
|
||||||
|
|
||||||
|
return newest_file
|
||||||
|
|
||||||
|
|
||||||
class UserMixin:
|
class UserMixin:
|
||||||
"""Mixin to setup a user and login for tests.
|
"""Mixin to setup a user and login for tests.
|
||||||
|
|
||||||
@ -337,3 +408,8 @@ class InvenTreeAPITestCase(ExchangeRateMixin, UserMixin, APITestCase):
|
|||||||
data.append(entry)
|
data.append(entry)
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
class InvenTreeTestCase(ExchangeRateMixin, UserMixin, TestCase):
|
||||||
|
"""Testcase with user setup buildin."""
|
||||||
|
pass
|
@ -11,7 +11,7 @@ from build.models import Build, BuildItem
|
|||||||
from stock.models import StockItem
|
from stock.models import StockItem
|
||||||
|
|
||||||
from InvenTree.status_codes import BuildStatus, StockStatus
|
from InvenTree.status_codes import BuildStatus, StockStatus
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase
|
from InvenTree.unit_test import InvenTreeAPITestCase
|
||||||
|
|
||||||
|
|
||||||
class TestBuildAPI(InvenTreeAPITestCase):
|
class TestBuildAPI(InvenTreeAPITestCase):
|
||||||
|
@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
from django_test_migrations.contrib.unittest_case import MigratorTestCase
|
from django_test_migrations.contrib.unittest_case import MigratorTestCase
|
||||||
|
|
||||||
from InvenTree import helpers
|
from InvenTree import unit_test
|
||||||
|
|
||||||
|
|
||||||
class TestForwardMigrations(MigratorTestCase):
|
class TestForwardMigrations(MigratorTestCase):
|
||||||
"""Test entire schema migration sequence for the build app."""
|
"""Test entire schema migration sequence for the build app."""
|
||||||
|
|
||||||
migrate_from = ('build', helpers.getOldestMigrationFile('build'))
|
migrate_from = ('build', unit_test.getOldestMigrationFile('build'))
|
||||||
migrate_to = ('build', helpers.getNewestMigrationFile('build'))
|
migrate_to = ('build', unit_test.getNewestMigrationFile('build'))
|
||||||
|
|
||||||
def prepare(self):
|
def prepare(self):
|
||||||
"""Create initial data!"""
|
"""Create initial data!"""
|
||||||
@ -58,7 +58,7 @@ class TestForwardMigrations(MigratorTestCase):
|
|||||||
class TestReferenceMigration(MigratorTestCase):
|
class TestReferenceMigration(MigratorTestCase):
|
||||||
"""Test custom migration which adds 'reference' field to Build model."""
|
"""Test custom migration which adds 'reference' field to Build model."""
|
||||||
|
|
||||||
migrate_from = ('build', helpers.getOldestMigrationFile('build'))
|
migrate_from = ('build', unit_test.getOldestMigrationFile('build'))
|
||||||
migrate_to = ('build', '0018_build_reference')
|
migrate_to = ('build', '0018_build_reference')
|
||||||
|
|
||||||
def prepare(self):
|
def prepare(self):
|
||||||
@ -113,7 +113,7 @@ class TestReferencePatternMigration(MigratorTestCase):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
migrate_from = ('build', '0019_auto_20201019_1302')
|
migrate_from = ('build', '0019_auto_20201019_1302')
|
||||||
migrate_to = ('build', helpers.getNewestMigrationFile('build'))
|
migrate_to = ('build', unit_test.getNewestMigrationFile('build'))
|
||||||
|
|
||||||
def prepare(self):
|
def prepare(self):
|
||||||
"""Create some initial data prior to migration"""
|
"""Create some initial data prior to migration"""
|
||||||
|
@ -4,7 +4,7 @@ from django.urls import reverse
|
|||||||
|
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
from InvenTree.unit_test import InvenTreeTestCase
|
||||||
|
|
||||||
from .models import Build
|
from .models import Build
|
||||||
from stock.models import StockItem
|
from stock.models import StockItem
|
||||||
|
@ -14,8 +14,9 @@ from django.urls import reverse
|
|||||||
|
|
||||||
import PIL
|
import PIL
|
||||||
|
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase, PluginMixin
|
from InvenTree.helpers import str2bool
|
||||||
from InvenTree.helpers import InvenTreeTestCase, str2bool
|
from InvenTree.unit_test import (InvenTreeAPITestCase, InvenTreeTestCase,
|
||||||
|
PluginMixin)
|
||||||
from plugin import registry
|
from plugin import registry
|
||||||
from plugin.models import NotificationUserSetting
|
from plugin.models import NotificationUserSetting
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ from django.urls import reverse
|
|||||||
|
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
|
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase
|
from InvenTree.unit_test import InvenTreeAPITestCase
|
||||||
|
|
||||||
from .models import Company, Contact, SupplierPart
|
from .models import Company, Contact, SupplierPart
|
||||||
|
|
||||||
|
@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
from django_test_migrations.contrib.unittest_case import MigratorTestCase
|
from django_test_migrations.contrib.unittest_case import MigratorTestCase
|
||||||
|
|
||||||
from InvenTree import helpers
|
from InvenTree import unit_test
|
||||||
|
|
||||||
|
|
||||||
class TestForwardMigrations(MigratorTestCase):
|
class TestForwardMigrations(MigratorTestCase):
|
||||||
"""Unit testing class for testing 'company' app migrations"""
|
"""Unit testing class for testing 'company' app migrations"""
|
||||||
|
|
||||||
migrate_from = ('company', helpers.getOldestMigrationFile('company'))
|
migrate_from = ('company', unit_test.getOldestMigrationFile('company'))
|
||||||
migrate_to = ('company', helpers.getNewestMigrationFile('company'))
|
migrate_to = ('company', unit_test.getNewestMigrationFile('company'))
|
||||||
|
|
||||||
def prepare(self):
|
def prepare(self):
|
||||||
"""Create some simple Company data, and ensure that it migrates OK."""
|
"""Create some simple Company data, and ensure that it migrates OK."""
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
from InvenTree.unit_test import InvenTreeTestCase
|
||||||
|
|
||||||
|
|
||||||
class CompanyViewTest(InvenTreeTestCase):
|
class CompanyViewTest(InvenTreeTestCase):
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase
|
from InvenTree.unit_test import InvenTreeAPITestCase
|
||||||
|
|
||||||
|
|
||||||
class TestReportTests(InvenTreeAPITestCase):
|
class TestReportTests(InvenTreeAPITestCase):
|
||||||
|
@ -9,8 +9,8 @@ from django.core.files.base import ContentFile
|
|||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from common.models import InvenTreeSetting
|
from common.models import InvenTreeSetting
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase
|
|
||||||
from InvenTree.helpers import validateFilterString
|
from InvenTree.helpers import validateFilterString
|
||||||
|
from InvenTree.unit_test import InvenTreeAPITestCase
|
||||||
from part.models import Part
|
from part.models import Part
|
||||||
from stock.models import StockItem
|
from stock.models import StockItem
|
||||||
|
|
||||||
|
@ -15,10 +15,10 @@ from rest_framework import status
|
|||||||
|
|
||||||
from common.settings import currency_codes
|
from common.settings import currency_codes
|
||||||
from company.models import Company
|
from company.models import Company
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase
|
|
||||||
from InvenTree.status_codes import (PurchaseOrderStatus, ReturnOrderLineStatus,
|
from InvenTree.status_codes import (PurchaseOrderStatus, ReturnOrderLineStatus,
|
||||||
ReturnOrderStatus, SalesOrderStatus,
|
ReturnOrderStatus, SalesOrderStatus,
|
||||||
StockStatus)
|
StockStatus)
|
||||||
|
from InvenTree.unit_test import InvenTreeAPITestCase
|
||||||
from order import models
|
from order import models
|
||||||
from part.models import Part
|
from part.models import Part
|
||||||
from stock.models import StockItem
|
from stock.models import StockItem
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
from InvenTree.unit_test import InvenTreeTestCase
|
||||||
|
|
||||||
|
|
||||||
class OrderViewTestCase(InvenTreeTestCase):
|
class OrderViewTestCase(InvenTreeTestCase):
|
||||||
|
@ -18,9 +18,9 @@ import company.models
|
|||||||
import order.models
|
import order.models
|
||||||
from common.models import InvenTreeSetting
|
from common.models import InvenTreeSetting
|
||||||
from company.models import Company, SupplierPart
|
from company.models import Company, SupplierPart
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase
|
|
||||||
from InvenTree.status_codes import (BuildStatus, PurchaseOrderStatus,
|
from InvenTree.status_codes import (BuildStatus, PurchaseOrderStatus,
|
||||||
StockStatus)
|
StockStatus)
|
||||||
|
from InvenTree.unit_test import InvenTreeAPITestCase
|
||||||
from part.models import (BomItem, BomItemSubstitute, Part, PartCategory,
|
from part.models import (BomItem, BomItemSubstitute, Part, PartCategory,
|
||||||
PartCategoryParameterTemplate, PartParameterTemplate,
|
PartCategoryParameterTemplate, PartParameterTemplate,
|
||||||
PartRelated, PartStocktake)
|
PartRelated, PartStocktake)
|
||||||
|
@ -4,7 +4,7 @@ import csv
|
|||||||
|
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
from InvenTree.unit_test import InvenTreeTestCase
|
||||||
|
|
||||||
|
|
||||||
class BomExportTest(InvenTreeTestCase):
|
class BomExportTest(InvenTreeTestCase):
|
||||||
|
@ -5,7 +5,7 @@ from django.urls import reverse
|
|||||||
|
|
||||||
import tablib
|
import tablib
|
||||||
|
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase
|
from InvenTree.unit_test import InvenTreeAPITestCase
|
||||||
from part.models import Part
|
from part.models import Part
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
from django_test_migrations.contrib.unittest_case import MigratorTestCase
|
from django_test_migrations.contrib.unittest_case import MigratorTestCase
|
||||||
|
|
||||||
from InvenTree import helpers
|
from InvenTree import unit_test
|
||||||
|
|
||||||
|
|
||||||
class TestForwardMigrations(MigratorTestCase):
|
class TestForwardMigrations(MigratorTestCase):
|
||||||
"""Test entire schema migration sequence for the part app."""
|
"""Test entire schema migration sequence for the part app."""
|
||||||
|
|
||||||
migrate_from = ('part', helpers.getOldestMigrationFile('part'))
|
migrate_from = ('part', unit_test.getOldestMigrationFile('part'))
|
||||||
migrate_to = ('part', helpers.getNewestMigrationFile('part'))
|
migrate_to = ('part', unit_test.getNewestMigrationFile('part'))
|
||||||
|
|
||||||
def prepare(self):
|
def prepare(self):
|
||||||
"""Create initial data."""
|
"""Create initial data."""
|
||||||
@ -52,7 +52,7 @@ class TestBomItemMigrations(MigratorTestCase):
|
|||||||
"""Tests for BomItem migrations"""
|
"""Tests for BomItem migrations"""
|
||||||
|
|
||||||
migrate_from = ('part', '0002_auto_20190520_2204')
|
migrate_from = ('part', '0002_auto_20190520_2204')
|
||||||
migrate_to = ('part', helpers.getNewestMigrationFile('part'))
|
migrate_to = ('part', unit_test.getNewestMigrationFile('part'))
|
||||||
|
|
||||||
def prepare(self):
|
def prepare(self):
|
||||||
"""Create intial dataset"""
|
"""Create intial dataset"""
|
||||||
|
@ -14,7 +14,7 @@ from common.models import (InvenTreeSetting, InvenTreeUserSetting,
|
|||||||
NotificationEntry, NotificationMessage)
|
NotificationEntry, NotificationMessage)
|
||||||
from common.notifications import UIMessageNotification, storage
|
from common.notifications import UIMessageNotification, storage
|
||||||
from InvenTree import version
|
from InvenTree import version
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
from InvenTree.unit_test import InvenTreeTestCase
|
||||||
|
|
||||||
from .models import (Part, PartCategory, PartCategoryStar, PartRelated,
|
from .models import (Part, PartCategory, PartCategoryStar, PartRelated,
|
||||||
PartStar, PartStocktake, PartTestTemplate,
|
PartStar, PartStocktake, PartTestTemplate,
|
||||||
|
@ -10,8 +10,8 @@ import company.models
|
|||||||
import order.models
|
import order.models
|
||||||
import part.models
|
import part.models
|
||||||
import stock.models
|
import stock.models
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
|
||||||
from InvenTree.status_codes import PurchaseOrderStatus
|
from InvenTree.status_codes import PurchaseOrderStatus
|
||||||
|
from InvenTree.unit_test import InvenTreeTestCase
|
||||||
|
|
||||||
|
|
||||||
class PartPricingTests(InvenTreeTestCase):
|
class PartPricingTests(InvenTreeTestCase):
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
from InvenTree.unit_test import InvenTreeTestCase
|
||||||
|
|
||||||
from .models import Part
|
from .models import Part
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
from InvenTree.unit_test import InvenTreeTestCase
|
||||||
from plugin import InvenTreePlugin
|
from plugin import InvenTreePlugin
|
||||||
from plugin.mixins import ActionMixin
|
from plugin.mixins import ActionMixin
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ from django.urls import reverse
|
|||||||
|
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
|
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase
|
from InvenTree.unit_test import InvenTreeAPITestCase
|
||||||
from stock.models import StockItem
|
from stock.models import StockItem
|
||||||
|
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ from django.urls import include, re_path, reverse
|
|||||||
|
|
||||||
from error_report.models import Error
|
from error_report.models import Error
|
||||||
|
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
from InvenTree.unit_test import InvenTreeTestCase
|
||||||
from plugin import InvenTreePlugin
|
from plugin import InvenTreePlugin
|
||||||
from plugin.base.integration.mixins import PanelMixin
|
from plugin.base.integration.mixins import PanelMixin
|
||||||
from plugin.helpers import MixinNotImplementedError
|
from plugin.helpers import MixinNotImplementedError
|
||||||
|
@ -8,7 +8,7 @@ from django.urls import reverse
|
|||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
from common.models import InvenTreeSetting
|
from common.models import InvenTreeSetting
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase
|
from InvenTree.unit_test import InvenTreeAPITestCase
|
||||||
from label.models import PartLabel, StockItemLabel, StockLocationLabel
|
from label.models import PartLabel, StockItemLabel, StockLocationLabel
|
||||||
from part.models import Part
|
from part.models import Part
|
||||||
from plugin.base.label.mixins import LabelPrintingMixin
|
from plugin.base.label.mixins import LabelPrintingMixin
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase
|
from InvenTree.unit_test import InvenTreeAPITestCase
|
||||||
from plugin import InvenTreePlugin, MixinNotImplementedError, registry
|
from plugin import InvenTreePlugin, MixinNotImplementedError, registry
|
||||||
from plugin.base.locate.mixins import LocateMixin
|
from plugin.base.locate.mixins import LocateMixin
|
||||||
from stock.models import StockItem, StockLocation
|
from stock.models import StockItem, StockLocation
|
||||||
|
@ -4,7 +4,7 @@ from django.urls import reverse
|
|||||||
|
|
||||||
import part.models
|
import part.models
|
||||||
import stock.models
|
import stock.models
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase
|
from InvenTree.unit_test import InvenTreeAPITestCase
|
||||||
|
|
||||||
|
|
||||||
class TestInvenTreeBarcode(InvenTreeAPITestCase):
|
class TestInvenTreeBarcode(InvenTreeAPITestCase):
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
"""Unit tests for action plugins."""
|
"""Unit tests for action plugins."""
|
||||||
|
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
from InvenTree.unit_test import InvenTreeTestCase
|
||||||
|
|
||||||
|
|
||||||
class SampleIntegrationPluginTests(InvenTreeTestCase):
|
class SampleIntegrationPluginTests(InvenTreeTestCase):
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
"""Unit tests for action plugins."""
|
"""Unit tests for action plugins."""
|
||||||
|
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
from InvenTree.unit_test import InvenTreeTestCase
|
||||||
from plugin.samples.integration.simpleactionplugin import SimpleActionPlugin
|
from plugin.samples.integration.simpleactionplugin import SimpleActionPlugin
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase
|
from InvenTree.unit_test import InvenTreeAPITestCase
|
||||||
from plugin import InvenTreePlugin, registry
|
from plugin import InvenTreePlugin, registry
|
||||||
from plugin.helpers import MixinNotImplementedError
|
from plugin.helpers import MixinNotImplementedError
|
||||||
from plugin.mixins import LocateMixin
|
from plugin.mixins import LocateMixin
|
||||||
|
@ -4,7 +4,7 @@ from django.urls import reverse
|
|||||||
|
|
||||||
from rest_framework.exceptions import NotFound
|
from rest_framework.exceptions import NotFound
|
||||||
|
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase, PluginMixin
|
from InvenTree.unit_test import InvenTreeAPITestCase, PluginMixin
|
||||||
from plugin.api import check_plugin
|
from plugin.api import check_plugin
|
||||||
from plugin.models import PluginConfig
|
from plugin.models import PluginConfig
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ from PIL import Image
|
|||||||
import report.models as report_models
|
import report.models as report_models
|
||||||
from build.models import Build
|
from build.models import Build
|
||||||
from common.models import InvenTreeSetting, InvenTreeUserSetting
|
from common.models import InvenTreeSetting, InvenTreeUserSetting
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase
|
from InvenTree.unit_test import InvenTreeAPITestCase
|
||||||
from report.templatetags import barcode as barcode_tags
|
from report.templatetags import barcode as barcode_tags
|
||||||
from report.templatetags import report as report_tags
|
from report.templatetags import report as report_tags
|
||||||
from stock.models import StockItem, StockItemAttachment
|
from stock.models import StockItem, StockItemAttachment
|
||||||
|
@ -16,8 +16,8 @@ from rest_framework import status
|
|||||||
import company.models
|
import company.models
|
||||||
import part.models
|
import part.models
|
||||||
from common.models import InvenTreeSetting
|
from common.models import InvenTreeSetting
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase
|
|
||||||
from InvenTree.status_codes import StockStatus
|
from InvenTree.status_codes import StockStatus
|
||||||
|
from InvenTree.unit_test import InvenTreeAPITestCase
|
||||||
from part.models import Part
|
from part.models import Part
|
||||||
from stock.models import StockItem, StockItemTestResult, StockLocation
|
from stock.models import StockItem, StockItemTestResult, StockLocation
|
||||||
|
|
||||||
|
@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
from django_test_migrations.contrib.unittest_case import MigratorTestCase
|
from django_test_migrations.contrib.unittest_case import MigratorTestCase
|
||||||
|
|
||||||
from InvenTree import helpers
|
from InvenTree import unit_test
|
||||||
|
|
||||||
|
|
||||||
class TestSerialNumberMigration(MigratorTestCase):
|
class TestSerialNumberMigration(MigratorTestCase):
|
||||||
"""Test data migration which updates serial numbers"""
|
"""Test data migration which updates serial numbers"""
|
||||||
|
|
||||||
migrate_from = ('stock', '0067_alter_stockitem_part')
|
migrate_from = ('stock', '0067_alter_stockitem_part')
|
||||||
migrate_to = ('stock', helpers.getNewestMigrationFile('stock'))
|
migrate_to = ('stock', unit_test.getNewestMigrationFile('stock'))
|
||||||
|
|
||||||
def prepare(self):
|
def prepare(self):
|
||||||
"""Create initial data for this migration"""
|
"""Create initial data for this migration"""
|
||||||
@ -73,7 +73,7 @@ class TestScheduledForDeletionMigration(MigratorTestCase):
|
|||||||
"""Test data migration for removing 'scheduled_for_deletion' field"""
|
"""Test data migration for removing 'scheduled_for_deletion' field"""
|
||||||
|
|
||||||
migrate_from = ('stock', '0066_stockitem_scheduled_for_deletion')
|
migrate_from = ('stock', '0066_stockitem_scheduled_for_deletion')
|
||||||
migrate_to = ('stock', helpers.getNewestMigrationFile('stock'))
|
migrate_to = ('stock', unit_test.getNewestMigrationFile('stock'))
|
||||||
|
|
||||||
def prepare(self):
|
def prepare(self):
|
||||||
"""Create some initial stock items"""
|
"""Create some initial stock items"""
|
||||||
|
@ -4,8 +4,8 @@ from django.contrib.auth.models import Group
|
|||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from common.models import InvenTreeSetting
|
from common.models import InvenTreeSetting
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
|
||||||
from InvenTree.status_codes import StockStatus
|
from InvenTree.status_codes import StockStatus
|
||||||
|
from InvenTree.unit_test import InvenTreeTestCase
|
||||||
from stock.models import StockItem, StockLocation
|
from stock.models import StockItem, StockLocation
|
||||||
from users.models import Owner
|
from users.models import Owner
|
||||||
|
|
||||||
|
@ -9,8 +9,8 @@ from django.test import override_settings
|
|||||||
from build.models import Build
|
from build.models import Build
|
||||||
from common.models import InvenTreeSetting
|
from common.models import InvenTreeSetting
|
||||||
from company.models import Company
|
from company.models import Company
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
|
||||||
from InvenTree.status_codes import StockHistoryCode
|
from InvenTree.status_codes import StockHistoryCode
|
||||||
|
from InvenTree.unit_test import InvenTreeTestCase
|
||||||
from order.models import SalesOrder
|
from order.models import SalesOrder
|
||||||
from part.models import Part
|
from part.models import Part
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
from django.contrib.auth.models import Group, User
|
from django.contrib.auth.models import Group, User
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from InvenTree.api_tester import InvenTreeAPITestCase
|
from InvenTree.unit_test import InvenTreeAPITestCase
|
||||||
|
|
||||||
|
|
||||||
class UserAPITests(InvenTreeAPITestCase):
|
class UserAPITests(InvenTreeAPITestCase):
|
||||||
|
@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
from django_test_migrations.contrib.unittest_case import MigratorTestCase
|
from django_test_migrations.contrib.unittest_case import MigratorTestCase
|
||||||
|
|
||||||
from InvenTree import helpers
|
from InvenTree import unit_test
|
||||||
|
|
||||||
|
|
||||||
class TestForwardMigrations(MigratorTestCase):
|
class TestForwardMigrations(MigratorTestCase):
|
||||||
"""Test entire schema migration sequence for the users app."""
|
"""Test entire schema migration sequence for the users app."""
|
||||||
|
|
||||||
migrate_from = ('users', helpers.getOldestMigrationFile('users'))
|
migrate_from = ('users', unit_test.getOldestMigrationFile('users'))
|
||||||
migrate_to = ('users', helpers.getNewestMigrationFile('users'))
|
migrate_to = ('users', unit_test.getNewestMigrationFile('users'))
|
||||||
|
|
||||||
def prepare(self):
|
def prepare(self):
|
||||||
"""Setup the initial state of the database before migrations"""
|
"""Setup the initial state of the database before migrations"""
|
||||||
|
@ -7,7 +7,7 @@ from django.urls import reverse
|
|||||||
|
|
||||||
from rest_framework.authtoken.models import Token
|
from rest_framework.authtoken.models import Token
|
||||||
|
|
||||||
from InvenTree.helpers import InvenTreeTestCase
|
from InvenTree.unit_test import InvenTreeTestCase
|
||||||
from users.models import Owner, RuleSet
|
from users.models import Owner, RuleSet
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user