diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 0f8057da83b7..165f25f85417 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -84,3 +84,7 @@ repos:
# rev: 3.0.0
# hooks:
# - id: shellcheck
+- repo: https://github.com/isidentical/teyit
+ rev: 0.4.3
+ hooks:
+ - id: teyit
diff --git a/src/backend/InvenTree/InvenTree/test_api.py b/src/backend/InvenTree/InvenTree/test_api.py
index 58e18df2e5b9..ea1a6c5b4a15 100644
--- a/src/backend/InvenTree/InvenTree/test_api.py
+++ b/src/backend/InvenTree/InvenTree/test_api.py
@@ -128,7 +128,7 @@ def test_role_view(self):
response = self.client.get(url, format='json')
# Not logged in, so cannot access user role data
- self.assertTrue(response.status_code in [401, 403])
+ self.assertIn(response.status_code, [401, 403])
# Now log in!
self.basicAuth()
diff --git a/src/backend/InvenTree/InvenTree/tests.py b/src/backend/InvenTree/InvenTree/tests.py
index 6f3299559237..b0e3e075c2ce 100644
--- a/src/backend/InvenTree/InvenTree/tests.py
+++ b/src/backend/InvenTree/InvenTree/tests.py
@@ -1030,7 +1030,7 @@ def test_tuple(self):
s = '.'.join([str(i) for i in v])
- self.assertTrue(s in version.inventreeVersion())
+ self.assertIn(s, version.inventreeVersion())
def test_comparison(self):
"""Test direct comparison of version numbers."""
@@ -1039,10 +1039,10 @@ def test_comparison(self):
v_c = version.inventreeVersionTuple('1.2.4')
v_d = version.inventreeVersionTuple('2.0.0')
- self.assertTrue(v_b > v_a)
- self.assertTrue(v_c > v_b)
- self.assertTrue(v_d > v_c)
- self.assertTrue(v_d > v_a)
+ self.assertGreater(v_b, v_a)
+ self.assertGreater(v_c, v_b)
+ self.assertGreater(v_d, v_c)
+ self.assertGreater(v_d, v_a)
def test_commit_info(self):
"""Test that the git commit information is extracted successfully."""
@@ -1505,7 +1505,7 @@ def test_generation(self):
self.assertEqual(mail.outbox[0].subject, '[InvenTree] Log in to the app')
# Check that the token is in the email
- self.assertTrue('http://testserver/api/email/login/' in mail.outbox[0].body)
+ self.assertIn('http://testserver/api/email/login/', mail.outbox[0].body)
token = mail.outbox[0].body.split('/')[-1].split('\n')[0][8:]
self.assertEqual(get_user(token), self.user)
diff --git a/src/backend/InvenTree/InvenTree/unit_test.py b/src/backend/InvenTree/InvenTree/unit_test.py
index 4ad2d68b7b4b..c5f8804d239c 100644
--- a/src/backend/InvenTree/InvenTree/unit_test.py
+++ b/src/backend/InvenTree/InvenTree/unit_test.py
@@ -397,7 +397,7 @@ def process_csv(
):
"""Helper function to process and validate a downloaded csv file."""
# Check that the correct object type has been passed
- self.assertTrue(isinstance(file_object, io.StringIO))
+ self.assertIsInstance(file_object, io.StringIO)
file_object.seek(0)
diff --git a/src/backend/InvenTree/build/test_api.py b/src/backend/InvenTree/build/test_api.py
index 131dabaf3f97..de8f0bbed87a 100644
--- a/src/backend/InvenTree/build/test_api.py
+++ b/src/backend/InvenTree/build/test_api.py
@@ -247,7 +247,7 @@ def test_complete(self):
expected_code=400
)
- self.assertTrue('accept_unallocated' in response.data)
+ self.assertIn('accept_unallocated', response.data)
# Accept unallocated stock
self.post(
@@ -934,7 +934,7 @@ def test_overallocated_requires_acceptance(self):
{},
expected_code=400
)
- self.assertTrue('accept_overallocated' in response.data)
+ self.assertIn('accept_overallocated', response.data)
# Check stock items have not reduced at all
for si, oq, _ in self.state.values():
diff --git a/src/backend/InvenTree/common/tests.py b/src/backend/InvenTree/common/tests.py
index 6a5b26766df4..cc5ac61270c7 100644
--- a/src/backend/InvenTree/common/tests.py
+++ b/src/backend/InvenTree/common/tests.py
@@ -50,7 +50,7 @@ def test_settings_objects(self):
# There should be two settings objects in the database
settings = InvenTreeSetting.objects.all()
- self.assertTrue(settings.count() >= 2)
+ self.assertGreaterEqual(settings.count(), 2)
instance_name = InvenTreeSetting.objects.get(pk=1)
self.assertEqual(instance_name.key, 'INVENTREE_INSTANCE')
@@ -207,7 +207,7 @@ def run_settings_check(self, key, setting):
- Ensure that every setting key is valid
- Ensure that a validator is supplied
"""
- self.assertTrue(type(setting) is dict)
+ self.assertIs(type(setting), dict)
name = setting.get('name', None)
@@ -726,7 +726,7 @@ def test_scheduled_tasks(self):
response = self.get(url, expected_code=200)
for task in response.data:
- self.assertTrue(task['name'] == 'time.sleep')
+ self.assertEqual(task['name'], 'time.sleep')
class WebhookMessageTests(TestCase):
diff --git a/src/backend/InvenTree/company/test_api.py b/src/backend/InvenTree/company/test_api.py
index 332292ca3c8e..65b55089a3c6 100644
--- a/src/backend/InvenTree/company/test_api.py
+++ b/src/backend/InvenTree/company/test_api.py
@@ -130,7 +130,7 @@ def test_company_create(self):
expected_code=400,
)
- self.assertTrue('currency' in response.data)
+ self.assertIn('currency', response.data)
def test_company_active(self):
"""Test that the 'active' value and filter works."""
diff --git a/src/backend/InvenTree/label/tests.py b/src/backend/InvenTree/label/tests.py
index b4afce22168e..62a84c6439b7 100644
--- a/src/backend/InvenTree/label/tests.py
+++ b/src/backend/InvenTree/label/tests.py
@@ -36,18 +36,18 @@ def test_default_labels(self):
"""Test that the default label templates are copied across."""
labels = StockItemLabel.objects.all()
- self.assertTrue(labels.count() > 0)
+ self.assertGreater(labels.count(), 0)
labels = StockLocationLabel.objects.all()
- self.assertTrue(labels.count() > 0)
+ self.assertGreater(labels.count(), 0)
def test_default_files(self):
"""Test that label files exist in the MEDIA directory."""
def test_subdir(ref_name):
item_dir = settings.MEDIA_ROOT.joinpath('label', 'inventree', ref_name)
- self.assertTrue(len([item_dir.iterdir()]) > 0)
+ self.assertGreater(len([item_dir.iterdir()]), 0)
test_subdir('stockitem')
test_subdir('stocklocation')
diff --git a/src/backend/InvenTree/machine/test_api.py b/src/backend/InvenTree/machine/test_api.py
index f67b48d005d4..1a2e40a51774 100644
--- a/src/backend/InvenTree/machine/test_api.py
+++ b/src/backend/InvenTree/machine/test_api.py
@@ -80,15 +80,18 @@ def test_machine_type_list(self):
machine_type = [t for t in response.data if t['slug'] == 'label-printer']
self.assertEqual(len(machine_type), 1)
machine_type = machine_type[0]
- self.assertDictContainsSubset(
+ self.assertEqual(
+ machine_type,
{
- 'slug': 'label-printer',
- 'name': 'Label Printer',
- 'description': 'Directly print labels for various items.',
- 'provider_plugin': None,
- 'is_builtin': True,
+ **machine_type,
+ **{
+ 'slug': 'label-printer',
+ 'name': 'Label Printer',
+ 'description': 'Directly print labels for various items.',
+ 'provider_plugin': None,
+ 'is_builtin': True,
+ },
},
- machine_type,
)
self.assertTrue(
machine_type['provider_file'].endswith(
@@ -102,17 +105,20 @@ def test_machine_driver_list(self):
driver = [a for a in response.data if a['slug'] == 'test-label-printer-api']
self.assertEqual(len(driver), 1)
driver = driver[0]
- self.assertDictContainsSubset(
+ self.assertEqual(
+ driver,
{
- 'slug': 'test-label-printer-api',
- 'name': 'Test label printer',
- 'description': 'This is a test label printer driver for testing.',
- 'provider_plugin': None,
- 'is_builtin': True,
- 'machine_type': 'label-printer',
- 'driver_errors': [],
+ **driver,
+ **{
+ 'slug': 'test-label-printer-api',
+ 'name': 'Test label printer',
+ 'description': 'This is a test label printer driver for testing.',
+ 'provider_plugin': None,
+ 'is_builtin': True,
+ 'machine_type': 'label-printer',
+ 'driver_errors': [],
+ },
},
- driver,
)
self.assertEqual(driver['provider_file'], __file__)
@@ -163,19 +169,22 @@ def test_machine_list(self):
response = self.get(reverse('api-machine-list'))
self.assertEqual(len(response.data), 1)
- self.assertDictContainsSubset(
+ self.assertEqual(
+ response.data[0],
{
- 'name': 'Test Machine',
- 'machine_type': 'label-printer',
- 'driver': 'test-label-printer-api',
- 'initialized': True,
- 'active': True,
- 'status': 101,
- 'status_model': 'LabelPrinterStatus',
- 'status_text': '',
- 'is_driver_available': True,
+ **response.data[0],
+ **{
+ 'name': 'Test Machine',
+ 'machine_type': 'label-printer',
+ 'driver': 'test-label-printer-api',
+ 'initialized': True,
+ 'active': True,
+ 'status': 101,
+ 'status_model': 'LabelPrinterStatus',
+ 'status_text': '',
+ 'is_driver_available': True,
+ },
},
- response.data[0],
)
def test_machine_detail(self):
@@ -195,19 +204,21 @@ def test_machine_detail(self):
# Create a machine
response = self.post(reverse('api-machine-list'), machine_data)
- self.assertDictContainsSubset(machine_data, response.data)
+ self.assertEqual(response.data, {**response.data, **machine_data})
pk = response.data['pk']
# Retrieve the machine
response = self.get(reverse('api-machine-detail', kwargs={'pk': pk}))
- self.assertDictContainsSubset(machine_data, response.data)
+ self.assertEqual(response.data, {**response.data, **machine_data})
# Update the machine
response = self.patch(
reverse('api-machine-detail', kwargs={'pk': pk}),
{'name': 'Updated Machine'},
)
- self.assertDictContainsSubset({'name': 'Updated Machine'}, response.data)
+ self.assertEqual(
+ response.data, {**response.data, **{'name': 'Updated Machine'}}
+ )
self.assertEqual(MachineConfig.objects.get(pk=pk).name, 'Updated Machine')
# Delete the machine
diff --git a/src/backend/InvenTree/order/test_api.py b/src/backend/InvenTree/order/test_api.py
index d9f63d67c073..fb59f8b44611 100644
--- a/src/backend/InvenTree/order/test_api.py
+++ b/src/backend/InvenTree/order/test_api.py
@@ -418,7 +418,7 @@ def test_po_duplicate(self):
po = models.PurchaseOrder.objects.get(pk=1)
- self.assertTrue(po.lines.count() > 0)
+ self.assertGreater(po.lines.count(), 0)
lines = []
@@ -839,7 +839,7 @@ def test_download_line_items(self):
expected_code=200,
expected_fn='InvenTree_PurchaseOrderItems.xlsx',
) as file:
- self.assertTrue(isinstance(file, io.BytesIO))
+ self.assertIsInstance(file, io.BytesIO)
class PurchaseOrderReceiveTest(OrderTest):
@@ -1570,7 +1570,7 @@ def test_download_xls(self):
expected_fn='InvenTree_SalesOrders.xls',
decode=False,
) as file:
- self.assertTrue(isinstance(file, io.BytesIO))
+ self.assertIsInstance(file, io.BytesIO)
def test_download_csv(self):
"""Test that the list of sales orders can be downloaded as a .csv file."""
@@ -1772,7 +1772,7 @@ def check_template(line_item):
# At least one item should be allocated, and all should be variants
self.assertGreater(self.order.stock_allocations.count(), 0)
for allocation in self.order.stock_allocations.all():
- self.assertNotEquals(allocation.item.part.pk, allocation.line.part.pk)
+ self.assertNotEqual(allocation.item.part.pk, allocation.line.part.pk)
def test_shipment_complete(self):
"""Test that we can complete a shipment via the API."""
diff --git a/src/backend/InvenTree/part/test_api.py b/src/backend/InvenTree/part/test_api.py
index 9459ee3bae19..f65d06a425c0 100644
--- a/src/backend/InvenTree/part/test_api.py
+++ b/src/backend/InvenTree/part/test_api.py
@@ -463,12 +463,12 @@ def test_path_detail(self):
response = self.get(url, {'path_detail': False}, expected_code=200)
# Check that the path detail information is not included
- self.assertFalse('path' in response.data.keys())
+ self.assertNotIn('path', response.data.keys())
# Now, request *with* path detail
response = self.get(url, {'path_detail': True}, expected_code=200)
- self.assertTrue('path' in response.data.keys())
+ self.assertIn('path', response.data.keys())
path = response.data['path']
@@ -520,7 +520,7 @@ def test_part(self):
# Check that a bunch o' fields are contained
for f in ['assembly', 'component', 'description', 'image', 'IPN']:
- self.assertTrue(f in actions.keys())
+ self.assertIn(f, actions.keys())
# Active is a 'boolean' field
active = actions['active']
@@ -553,7 +553,7 @@ def test_category(self):
actions = self.getActions(reverse('api-part-category-list'))
# actions should *not* contain 'POST' as we do not have the correct role
- self.assertFalse('POST' in actions)
+ self.assertNotIn('POST', actions)
self.assignRole('part_category.add')
@@ -1055,8 +1055,8 @@ def test_date_filters(self):
# Filter by creation date
response = self.get(url, {'created_before': '2019-01-01'}, expected_code=200)
- self.assertTrue(len(response.data) < n)
- self.assertTrue(len(response.data) > 0)
+ self.assertLess(len(response.data), n)
+ self.assertGreater(len(response.data), 0)
for item in response.data:
self.assertIsNotNone(item['creation_date'])
@@ -1066,8 +1066,8 @@ def test_date_filters(self):
response = self.get(url, {'created_after': '2019-01-01'}, expected_code=200)
- self.assertTrue(len(response.data) < n)
- self.assertTrue(len(response.data) > 0)
+ self.assertLess(len(response.data), n)
+ self.assertGreater(len(response.data), 0)
for item in response.data:
self.assertIsNotNone(item['creation_date'])
@@ -2153,7 +2153,7 @@ def test_bom_list(self):
response = self.get(url, data={'validated': False}, expected_code=200)
# There should be at least one non-validated item
- self.assertTrue(len(response.data) > 0)
+ self.assertGreater(len(response.data), 0)
# Now, let's validate an item
bom_item = BomItem.objects.first()
@@ -2169,7 +2169,7 @@ def test_bom_list(self):
# Each item in response should contain expected keys
for el in response.data:
for key in ['available_stock', 'available_substitute_stock']:
- self.assertTrue(key in el)
+ self.assertIn(key, el)
def test_bom_list_search(self):
"""Test that we can search the BOM list API endpoint."""
@@ -2208,7 +2208,7 @@ def test_bom_list_ordering(self):
q1 = response.data[0]['quantity']
q2 = response.data[-1]['quantity']
- self.assertTrue(q1 < q2)
+ self.assertLess(q1, q2)
# Order by decreasing quantity
response = self.get(f'{url}?ordering=-quantity', expected_code=200)
@@ -2255,7 +2255,7 @@ def test_get_bom_detail(self):
]
for key in expected_values:
- self.assertTrue(key in response.data)
+ self.assertIn(key, response.data)
self.assertEqual(int(float(response.data['quantity'])), 25)
diff --git a/src/backend/InvenTree/part/test_category.py b/src/backend/InvenTree/part/test_category.py
index d3e89994ab35..34308bf28566 100644
--- a/src/backend/InvenTree/part/test_category.py
+++ b/src/backend/InvenTree/part/test_category.py
@@ -117,7 +117,7 @@ def test_path_string(self):
child.pathstring,
'Cat/AAAAAAAAAA/BBBBBBBBBB/CCCCCCCCCC/DDDDDDDDDD/EEEEEEEEEE/FFFFFFFFFF/GGGGGGGGGG/HHHHHHHHHH/IIIIIIIIII/JJJJJJJJJJ/KKKKKKKKK...OO/PPPPPPPPPP/QQQQQQQQQQ/RRRRRRRRRR/SSSSSSSSSS/TTTTTTTTTT/UUUUUUUUUU/VVVVVVVVVV/WWWWWWWWWW/XXXXXXXXXX/YYYYYYYYYY/ZZZZZZZZZZ',
)
- self.assertTrue(len(child.pathstring) <= 250)
+ self.assertLessEqual(len(child.pathstring), 250)
# Attempt an invalid move
with self.assertRaises(ValidationError):
@@ -325,7 +325,7 @@ def test_category_tree(self):
self.assertEqual(descendants.count(), 3)
for loc in [C11, C12, C13]:
- self.assertTrue(loc in descendants)
+ self.assertIn(loc, descendants)
# Check category C1x, should be B1 -> C1x
for loc in [C11, C12, C13]:
diff --git a/src/backend/InvenTree/plugin/base/integration/test_mixins.py b/src/backend/InvenTree/plugin/base/integration/test_mixins.py
index 0cba7f5854c0..00f3d437c040 100644
--- a/src/backend/InvenTree/plugin/base/integration/test_mixins.py
+++ b/src/backend/InvenTree/plugin/base/integration/test_mixins.py
@@ -351,7 +351,7 @@ def test_installed(self):
"""Test that the sample panel plugin is installed."""
plugins = registry.with_mixin('panel')
- self.assertTrue(len(plugins) == 0)
+ self.assertEqual(len(plugins), 0)
# Now enable the plugin
registry.set_plugin_state('samplepanel', True)
diff --git a/src/backend/InvenTree/plugin/base/label/test_label_mixin.py b/src/backend/InvenTree/plugin/base/label/test_label_mixin.py
index 29b986af0cee..3fa140968765 100644
--- a/src/backend/InvenTree/plugin/base/label/test_label_mixin.py
+++ b/src/backend/InvenTree/plugin/base/label/test_label_mixin.py
@@ -196,7 +196,7 @@ def test_printing_options(self):
options = self.options(
self.do_url(parts, plugin_ref, label), expected_code=200
).json()
- self.assertTrue('amount' in options['actions']['POST'])
+ self.assertIn('amount', options['actions']['POST'])
plg = registry.get_plugin(plugin_ref)
with mock.patch.object(plg, 'print_label') as print_label:
@@ -206,7 +206,7 @@ def test_printing_options(self):
data={'amount': '-no-valid-int-'},
expected_code=400,
).json()
- self.assertTrue('amount' in res)
+ self.assertIn('amount', res)
print_label.assert_not_called()
# correct value type
diff --git a/src/backend/InvenTree/plugin/base/locate/test_locate.py b/src/backend/InvenTree/plugin/base/locate/test_locate.py
index 4bc152d71c23..e03070a4112f 100644
--- a/src/backend/InvenTree/plugin/base/locate/test_locate.py
+++ b/src/backend/InvenTree/plugin/base/locate/test_locate.py
@@ -26,9 +26,9 @@ def test_installed(self):
"""Test that a locate plugin is actually installed."""
plugins = registry.with_mixin('locate')
- self.assertTrue(len(plugins) > 0)
+ self.assertGreater(len(plugins), 0)
- self.assertTrue('samplelocate' in [p.slug for p in plugins])
+ self.assertIn('samplelocate', [p.slug for p in plugins])
def test_locate_fail(self):
"""Test various API failure modes."""
diff --git a/src/backend/InvenTree/plugin/test_api.py b/src/backend/InvenTree/plugin/test_api.py
index b66282f21be3..51c2d560375c 100644
--- a/src/backend/InvenTree/plugin/test_api.py
+++ b/src/backend/InvenTree/plugin/test_api.py
@@ -196,8 +196,9 @@ def test_model(self):
mixin_dict = plg.mixins()
self.assertIn('base', mixin_dict)
- self.assertDictContainsSubset(
- {'base': {'key': 'base', 'human_name': 'base'}}, mixin_dict
+ self.assertEqual(
+ mixin_dict,
+ {**mixin_dict, **{'base': {'key': 'base', 'human_name': 'base'}}},
)
# check reload on save
diff --git a/src/backend/InvenTree/plugin/test_helpers.py b/src/backend/InvenTree/plugin/test_helpers.py
index 4a32c02fb97e..95cff3ea95e2 100644
--- a/src/backend/InvenTree/plugin/test_helpers.py
+++ b/src/backend/InvenTree/plugin/test_helpers.py
@@ -22,5 +22,5 @@ class ErrorSource:
response = render_template(
ErrorSource(), 'sample/wrongsample.html', {'abc': 123}
)
- self.assertTrue('lert alert-block alert-danger' in response)
- self.assertTrue('Template file sample/wrongsample.html' in response)
+ self.assertIn('lert alert-block alert-danger', response)
+ self.assertIn('Template file sample/wrongsample.html', response)
diff --git a/src/backend/InvenTree/plugin/test_plugin.py b/src/backend/InvenTree/plugin/test_plugin.py
index 557a86b75ab0..cff4373975c0 100644
--- a/src/backend/InvenTree/plugin/test_plugin.py
+++ b/src/backend/InvenTree/plugin/test_plugin.py
@@ -275,13 +275,13 @@ def test_broken_samples(self):
self.assertEqual(len(registry.errors), 3)
# There should be at least one discovery error in the module `broken_file`
- self.assertTrue(len(registry.errors.get('discovery')) > 0)
+ self.assertGreater(len(registry.errors.get('discovery')), 0)
self.assertEqual(
registry.errors.get('discovery')[0]['broken_file'],
"name 'bb' is not defined",
)
# There should be at least one load error with an intentional KeyError
- self.assertTrue(len(registry.errors.get('load')) > 0)
+ self.assertGreater(len(registry.errors.get('load')), 0)
self.assertEqual(
registry.errors.get('load')[0]['broken_sample'], "'This is a dummy error'"
)
diff --git a/src/backend/InvenTree/report/tests.py b/src/backend/InvenTree/report/tests.py
index e44d19b46708..4d40a2c460fd 100644
--- a/src/backend/InvenTree/report/tests.py
+++ b/src/backend/InvenTree/report/tests.py
@@ -194,19 +194,19 @@ def test_barcode(self):
"""Test the barcode generation tag."""
barcode = barcode_tags.barcode('12345')
- self.assertTrue(isinstance(barcode, str))
+ self.assertIsInstance(barcode, str)
self.assertTrue(barcode.startswith('data:image/png;'))
# Try with a different format
barcode = barcode_tags.barcode('99999', format='BMP')
- self.assertTrue(isinstance(barcode, str))
+ self.assertIsInstance(barcode, str)
self.assertTrue(barcode.startswith('data:image/bmp;'))
def test_qrcode(self):
"""Test the qrcode generation tag."""
# Test with default settings
qrcode = barcode_tags.qrcode('hello world')
- self.assertTrue(isinstance(qrcode, str))
+ self.assertIsInstance(qrcode, str)
self.assertTrue(qrcode.startswith('data:image/png;'))
self.assertEqual(len(qrcode), 700)
@@ -214,7 +214,7 @@ def test_qrcode(self):
qrcode = barcode_tags.qrcode(
'hello_world', version=2, box_size=50, format='BMP'
)
- self.assertTrue(isinstance(qrcode, str))
+ self.assertIsInstance(qrcode, str)
self.assertTrue(qrcode.startswith('data:image/bmp;'))
self.assertEqual(len(qrcode), 309720)
diff --git a/src/backend/InvenTree/stock/test_api.py b/src/backend/InvenTree/stock/test_api.py
index 88fe7bb0c05b..eff284ad893b 100644
--- a/src/backend/InvenTree/stock/test_api.py
+++ b/src/backend/InvenTree/stock/test_api.py
@@ -552,7 +552,7 @@ def test_top_level_filtering(self):
response = self.get(
self.list_url, {'location': 'null', 'cascade': False}, expected_code=200
)
- self.assertTrue(len(response.data) < StockItem.objects.count())
+ self.assertLess(len(response.data), StockItem.objects.count())
# Filter with "cascade=True"
response = self.get(
@@ -662,10 +662,10 @@ def test_filter_by_has_batch(self):
self.assertEqual(n_stock_items, len(with_batch) + len(without_batch))
for item in with_batch:
- self.assertFalse(item['batch'] in [None, ''])
+ self.assertNotIn(item['batch'], [None, ''])
for item in without_batch:
- self.assertTrue(item['batch'] in [None, ''])
+ self.assertIn(item['batch'], [None, ''])
def test_filter_by_tracked(self):
"""Test the 'tracked' filter.
@@ -746,9 +746,7 @@ def export_data(self, filters=None):
self.assertEqual(response.status_code, 200)
- self.assertTrue(
- isinstance(response, django.http.response.StreamingHttpResponse)
- )
+ self.assertIsInstance(response, django.http.response.StreamingHttpResponse)
file_object = io.StringIO(response.getvalue().decode('utf-8'))
@@ -1132,7 +1130,7 @@ def test_creation_with_serials(self):
# Check that each serial number was created
for i in range(1, 11):
- self.assertTrue(str(i) in sn)
+ self.assertIn(str(i), sn)
# Check the unique stock item has been created
diff --git a/src/backend/InvenTree/users/tests.py b/src/backend/InvenTree/users/tests.py
index 84f0cd1668d0..44ea1ac1e8d2 100644
--- a/src/backend/InvenTree/users/tests.py
+++ b/src/backend/InvenTree/users/tests.py
@@ -182,13 +182,13 @@ def test_owner(self):
# Get related owners (user + group)
related_owners = group_as_owner.get_related_owners(include_group=True)
- self.assertTrue(user_as_owner in related_owners)
- self.assertTrue(group_as_owner in related_owners)
+ self.assertIn(user_as_owner, related_owners)
+ self.assertIn(group_as_owner, related_owners)
# Get related owners (only user)
related_owners = group_as_owner.get_related_owners(include_group=False)
- self.assertTrue(user_as_owner in related_owners)
- self.assertFalse(group_as_owner in related_owners)
+ self.assertIn(user_as_owner, related_owners)
+ self.assertNotIn(group_as_owner, related_owners)
# Get related owners on user
related_owners = user_as_owner.get_related_owners()
diff --git a/src/backend/InvenTree/web/tests.py b/src/backend/InvenTree/web/tests.py
index df13a20d30a8..d63fe112d05a 100644
--- a/src/backend/InvenTree/web/tests.py
+++ b/src/backend/InvenTree/web/tests.py
@@ -18,10 +18,10 @@ class TemplateTagTest(InvenTreeTestCase):
def assertSettings(self, settings_data):
"""Helper to test if needed args are in the settings."""
- self.assertTrue('debug' in settings_data)
- self.assertTrue('server_list' in settings_data)
- self.assertTrue('show_server_selector' in settings_data)
- self.assertTrue('environment' in settings_data)
+ self.assertIn('debug', settings_data)
+ self.assertIn('server_list', settings_data)
+ self.assertIn('show_server_selector', settings_data)
+ self.assertIn('environment', settings_data)
def test_spa_bundle(self):
"""Test the 'spa_bundle' template tag."""
@@ -32,8 +32,8 @@ def test_spa_bundle(self):
return # pragma: no cover
shipped_js = resp.split('