diff --git a/README.md b/README.md index fbca08c..3e97436 100644 --- a/README.md +++ b/README.md @@ -154,11 +154,12 @@ Files are separated into: "/src/" and "/development/" ## history -* [**dev**](https://github.com/jedie/PyInventory/compare/v0.18.1...main) +* [**dev**](https://github.com/jedie/PyInventory/compare/v0.19.0...main) + * tbc +* [v0.19.0 - 15.06.2023](https://github.com/jedie/PyInventory/compare/v0.18.1...v0.19.0) * Update to Django 4.2 * remove django-processinfo * Bugfix ItemModelAdmin - * tbc * [v0.18.1 - 15.06.2023](https://github.com/jedie/PyInventory/compare/v0.18.0...v0.18.1) * Update requirements * [v0.18.0 - 04.04.2023](https://github.com/jedie/PyInventory/compare/v0.17.0...v0.18.0) diff --git a/deployment/project.env b/deployment/project.env index 024e73d..b1dfb81 100644 --- a/deployment/project.env +++ b/deployment/project.env @@ -1,3 +1,3 @@ export PROJECT_NAME=pyinventory export PROJECT_PACKAGE_NAME=pyinventory -export PROJECT_VERSION=0.18.1 +export PROJECT_VERSION=0.19.0 diff --git a/pyproject.toml b/pyproject.toml index c43f3b8..5cb1509 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "PyInventory" -version = "0.18.1" +version = "0.19.0" description = "Web based management to catalog things including state and location etc. using Python/Django." authors = [ "Jens Diemer ", diff --git a/src/inventory/tests/test_admin_location.py b/src/inventory/tests/test_admin_location.py index e421be8..c3c881e 100644 --- a/src/inventory/tests/test_admin_location.py +++ b/src/inventory/tests/test_admin_location.py @@ -4,8 +4,8 @@ from bx_django_utils.test_utils.html_assertion import HtmlAssertionMixin, assert from django.template.defaulttags import CsrfTokenNode, NowNode from django.test import TestCase, override_settings -from inventory import __version__ from inventory_project.tests.fixtures import get_normal_user +from inventory_project.tests.mocks import MockInventoryVersionString @override_settings(SECURE_SSL_REDIRECT=False) @@ -18,7 +18,7 @@ class AdminTestCase(HtmlAssertionMixin, TestCase): self.client.force_login(self.normaluser) with mock.patch.object(NowNode, 'render', return_value='MockedNowNode'), mock.patch.object( CsrfTokenNode, 'render', return_value='MockedCsrfTokenNode' - ): + ), MockInventoryVersionString(): response = self.client.get( path='/admin/inventory/locationmodel/', ) @@ -26,7 +26,7 @@ class AdminTestCase(HtmlAssertionMixin, TestCase): self.assert_html_parts( response, parts=( - f'Select Location to change | PyInventory v{__version__}', + 'Select Location to change | PyInventory vMockedVersionString', 'Add Location', '

0 Locations

', ), diff --git a/src/inventory_project/tests/mocks.py b/src/inventory_project/tests/mocks.py new file mode 100644 index 0000000..38b0285 --- /dev/null +++ b/src/inventory_project/tests/mocks.py @@ -0,0 +1,15 @@ +from unittest import mock + +from bx_py_utils.test_utils.context_managers import MassContextManager + +from inventory import context_processors + + +class MockInventoryVersionString(MassContextManager): + def __init__(self): + self.mocks = [ + mock.patch.object(context_processors, '__version__', self), + ] + + def __repr__(self): + return 'MockedVersionString' diff --git a/src/inventory_project/tests/test_admin_item.py b/src/inventory_project/tests/test_admin_item.py index ef64292..4e7ee4a 100644 --- a/src/inventory_project/tests/test_admin_item.py +++ b/src/inventory_project/tests/test_admin_item.py @@ -10,16 +10,15 @@ from django.utils import timezone from django_tools.unittest_utils.mockup import ImageDummy from reversion.models import Revision -from inventory import __version__ from inventory.models import ItemImageModel, ItemModel from inventory_project.tests.fixtures import get_normal_user +from inventory_project.tests.mocks import MockInventoryVersionString ITEM_FORM_DEFAULTS = { 'version': 0, # VersionProtectBaseModel field 'kind': 'kind', 'name': 'name', - 'itemimagemodel_set-TOTAL_FORMS': '0', 'itemimagemodel_set-INITIAL_FORMS': '0', 'itemimagemodel_set-MIN_NUM_FORMS': '0', @@ -55,27 +54,22 @@ class AdminAnonymousTests(HtmlAssertionMixin, TestCase): fetch_redirect_response=False ) - response = self.client.get( - path='/admin/inventory/itemmodel/add/', - secure=True, - HTTP_ACCEPT_LANGUAGE='en' - ) + response = self.client.get(path='/admin/inventory/itemmodel/add/', secure=True, HTTP_ACCEPT_LANGUAGE='en') self.assertRedirects( - response, - expected_url='/admin/login/?next=/admin/inventory/itemmodel/add/', - fetch_redirect_response=False + response, expected_url='/admin/login/?next=/admin/inventory/itemmodel/add/', fetch_redirect_response=False ) - with mock.patch.object(CsrfTokenNode, 'render', return_value='MockedCsrfTokenNode'): - response = self.client.get( - path='/admin/login/', - secure=True, - HTTP_ACCEPT_LANGUAGE='en' + with mock.patch.object( + CsrfTokenNode, 'render', return_value='MockedCsrfTokenNode' + ), MockInventoryVersionString(): + response = self.client.get(path='/admin/login/', secure=True, HTTP_ACCEPT_LANGUAGE='en') + self.assert_html_parts( + response, + parts=( + 'Log in | PyInventory vMockedVersionString', + '', + '', + ), ) - self.assert_html_parts(response, parts=( - f'Log in | PyInventory v{__version__}', - '', - '', - )) assert_html_response_snapshot(response, validate=False) @@ -87,16 +81,16 @@ class AdminTestCase(HtmlAssertionMixin, TestCase): def test_normal_user_create_minimal_item(self): offset = datetime.timedelta(minutes=1) - with mock.patch.object(timezone, 'now', MockDatetimeGenerator(offset=offset)),\ - mock.patch.object(NowNode, 'render', return_value='MockedNowNode'), \ - mock.patch.object(CsrfTokenNode, 'render', return_value='MockedCsrfTokenNode'): + with mock.patch.object(timezone, 'now', MockDatetimeGenerator(offset=offset)), mock.patch.object( + NowNode, 'render', return_value='MockedNowNode' + ), mock.patch.object( + CsrfTokenNode, 'render', return_value='MockedCsrfTokenNode' + ), MockInventoryVersionString(): self.client.force_login(self.normaluser) response = self.client.get('/admin/inventory/itemmodel/add/') assert response.status_code == 200 - self.assert_html_parts(response, parts=( - f'Add Item | PyInventory v{__version__}', - )) + self.assert_html_parts(response, parts=('Add Item | PyInventory vMockedVersionString',)) assert_html_response_snapshot(response=response, validate=False) assert ItemModel.objects.count() == 0 @@ -133,11 +127,14 @@ class AdminTestCase(HtmlAssertionMixin, TestCase): path=f'/admin/inventory/itemmodel/{item.pk}/change/', data=post_data, ) - self.assert_html_parts(response, parts=( - f'Change Item | PyInventory v{__version__}', - '
  • Version error: Overwrite version 2 with 1 is forbidden!
  • ', - '
    - "name"\n+ "A new Name!"
    ' - )) + self.assert_html_parts( + response, + parts=( + 'Change Item | PyInventory vMockedVersionString', + '
  • Version error: Overwrite version 2 with 1 is forbidden!
  • ', + '
    - "name"\n+ "A new Name!"
    ', + ), + ) html = response.content.decode('utf-8') html = html.replace(str(item.pk), '') assert_html_snapshot(got=html, validate=False) @@ -217,7 +214,7 @@ class AdminTestCase(HtmlAssertionMixin, TestCase): with mock.patch.object(NowNode, 'render', return_value='MockedNowNode'), mock.patch.object( CsrfTokenNode, 'render', return_value='MockedCsrfTokenNode' - ): + ), MockInventoryVersionString(): response = self.client.get( path='/admin/inventory/itemmodel/', ) @@ -225,7 +222,7 @@ class AdminTestCase(HtmlAssertionMixin, TestCase): self.assert_html_parts( response, parts=( - f'Select Item to change | PyInventory v{__version__}', + 'Select Item to change | PyInventory vMockedVersionString', '' 'main item 1', '' diff --git a/src/inventory_project/tests/test_admin_item_normal_user_create_minimal_item_2.snapshot.html b/src/inventory_project/tests/test_admin_item_normal_user_create_minimal_item_2.snapshot.html index 9d36377..a8347f9 100644 --- a/src/inventory_project/tests/test_admin_item_normal_user_create_minimal_item_2.snapshot.html +++ b/src/inventory_project/tests/test_admin_item_normal_user_create_minimal_item_2.snapshot.html @@ -2,7 +2,7 @@ - Change Item | PyInventory v0.18.1 + Change Item | PyInventory vMockedVersionString @@ -77,7 +77,7 @@ diff --git a/src/inventory_project/tests/test_admin_memo.py b/src/inventory_project/tests/test_admin_memo.py index 1197f6f..3820f17 100644 --- a/src/inventory_project/tests/test_admin_memo.py +++ b/src/inventory_project/tests/test_admin_memo.py @@ -8,9 +8,9 @@ from django_tools.unittest_utils.mockup import ImageDummy from model_bakery import baker from reversion.models import Revision -from inventory import __version__ from inventory.models import MemoImageModel, MemoModel from inventory.permissions import get_or_create_normal_user_group +from inventory_project.tests.mocks import MockInventoryVersionString class AdminAnonymousTests(TestCase): @@ -42,13 +42,12 @@ class AdminTestCase(HtmlAssertionMixin, TestCase): def test_normal_user_create_minimal_item(self): self.client.force_login(self.normaluser) - with mock.patch.object(NowNode, 'render', return_value='MockedNowNode'), \ - mock.patch.object(CsrfTokenNode, 'render', return_value='MockedCsrfTokenNode'): + with mock.patch.object(NowNode, 'render', return_value='MockedNowNode'), mock.patch.object( + CsrfTokenNode, 'render', return_value='MockedCsrfTokenNode' + ), MockInventoryVersionString(): response = self.client.get('/admin/inventory/memomodel/add/') assert response.status_code == 200 - self.assert_html_parts(response, parts=( - f'Add Memo | PyInventory v{__version__}', - )) + self.assert_html_parts(response, parts=('Add Memo | PyInventory vMockedVersionString',)) assert_html_response_snapshot(response=response, validate=False) assert MemoModel.objects.count() == 0