aa-ledger 1.0.4__py3-none-any.whl → 2.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {aa_ledger-1.0.4.dist-info → aa_ledger-2.0.0.dist-info}/METADATA +5 -6
- aa_ledger-2.0.0.dist-info/RECORD +267 -0
- ledger/__init__.py +2 -2
- ledger/admin.py +23 -18
- ledger/api/__init__.py +23 -7
- ledger/api/{ledger/admin.py → admin.py} +25 -31
- ledger/api/alliance.py +755 -0
- ledger/api/character.py +786 -0
- ledger/api/corporation.py +1141 -0
- ledger/api/{helpers.py → helpers/core.py} +33 -33
- ledger/api/helpers/icons.py +372 -0
- ledger/api/helpers/planetary_helper.py +354 -0
- ledger/api/planetary.py +354 -0
- ledger/api/schema.py +240 -15
- ledger/app_settings.py +11 -27
- ledger/auth_hooks.py +2 -2
- ledger/constants.py +50 -177
- ledger/decorators.py +2 -46
- ledger/forms.py +133 -39
- ledger/helpers/billboard.py +194 -144
- ledger/helpers/cache.py +105 -0
- ledger/helpers/discord.py +2 -4
- ledger/helpers/eveonline.py +160 -0
- ledger/helpers/ledger_data.py +23 -0
- ledger/helpers/ref_type.py +53 -78
- ledger/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
- ledger/locale/cs_CZ/LC_MESSAGES/django.po +349 -193
- ledger/locale/de/LC_MESSAGES/django.mo +0 -0
- ledger/locale/de/LC_MESSAGES/django.po +528 -379
- ledger/locale/django.pot +721 -546
- ledger/locale/es/LC_MESSAGES/django.mo +0 -0
- ledger/locale/es/LC_MESSAGES/django.po +349 -194
- ledger/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
- ledger/locale/fr_FR/LC_MESSAGES/django.po +349 -193
- ledger/locale/it_IT/LC_MESSAGES/django.mo +0 -0
- ledger/locale/it_IT/LC_MESSAGES/django.po +349 -193
- ledger/locale/ja/LC_MESSAGES/django.mo +0 -0
- ledger/locale/ja/LC_MESSAGES/django.po +348 -193
- ledger/locale/ko_KR/LC_MESSAGES/django.mo +0 -0
- ledger/locale/ko_KR/LC_MESSAGES/django.po +349 -193
- ledger/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
- ledger/locale/nl_NL/LC_MESSAGES/django.po +349 -193
- ledger/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
- ledger/locale/pl_PL/LC_MESSAGES/django.po +350 -193
- ledger/locale/ru/LC_MESSAGES/django.mo +0 -0
- ledger/locale/ru/LC_MESSAGES/django.po +348 -193
- ledger/locale/sk/LC_MESSAGES/django.mo +0 -0
- ledger/locale/sk/LC_MESSAGES/django.po +348 -193
- ledger/locale/uk/LC_MESSAGES/django.mo +0 -0
- ledger/locale/uk/LC_MESSAGES/django.po +348 -193
- ledger/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- ledger/locale/zh_Hans/LC_MESSAGES/django.po +348 -193
- ledger/managers/character_audit_manager.py +28 -20
- ledger/managers/character_journal_manager.py +185 -357
- ledger/managers/character_mining_manager.py +52 -26
- ledger/managers/character_planetary_manager.py +178 -136
- ledger/managers/corporation_audit_manager.py +36 -27
- ledger/managers/corporation_journal_manager.py +92 -56
- ledger/managers/general_manager.py +8 -7
- ledger/migrations/0018_remove_characterplanet_ledger_char_planet__58a5b6_idx_and_more.py +44 -0
- ledger/migrations/0019_rename_characteraudit_characterowner_and_more.py +48 -0
- ledger/models/__init__.py +5 -11
- ledger/models/characteraudit.py +101 -109
- ledger/models/corporationaudit.py +94 -49
- ledger/models/general.py +105 -211
- ledger/models/helpers/update_manager.py +302 -0
- ledger/models/planetary.py +60 -205
- ledger/providers.py +101 -0
- ledger/static/ledger/css/{ledger.css → aa-ledger.css} +54 -28
- ledger/static/ledger/js/aa-ledger.js +124 -0
- ledger/static/ledger/js/charts.js +25 -1
- ledger/static/ledger/js/view-alliance-ledger.js +383 -0
- ledger/static/ledger/js/view-character-ledger.js +388 -0
- ledger/static/ledger/js/view-corporation-ledger.js +402 -0
- ledger/static/ledger/js/view-planetary.js +492 -0
- ledger/static/ledger/libs/amCharts/5.14.4/js/flow.js +2 -0
- ledger/static/ledger/libs/amCharts/5.14.4/js/index.js +2 -0
- ledger/static/ledger/libs/amCharts/5.14.4/js/percent.js +2 -0
- ledger/static/ledger/libs/amCharts/5.14.4/js/themes/Animated.js +2 -0
- ledger/static/ledger/libs/amCharts/5.14.4/js/themes/Dark.js +2 -0
- ledger/static/ledger/libs/amCharts/5.14.4/js/xy.js +2 -0
- ledger/static/ledger/libs/datatables/2.3.5/css/dataTables.bootstrap5.css +610 -0
- ledger/static/ledger/libs/datatables/2.3.5/js/dataTables.bootstrap5.js +122 -0
- ledger/static/ledger/libs/datatables/2.3.5/js/dataTables.js +14127 -0
- ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/css/columnControl.bootstrap5.css +516 -0
- ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/css/columnControl.dataTables.css +529 -0
- ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/js/columnControl.bootstrap5.js +73 -0
- ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/js/dataTables.columnControl.js +3090 -0
- ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/css/fixedHeader.bootstrap5.css +20 -0
- ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/js/dataTables.fixedHeader.js +1203 -0
- ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/js/fixedHeader.bootstrap5.js +59 -0
- ledger/tasks.py +157 -141
- ledger/templates/ledger/base.html +59 -21
- ledger/templates/ledger/bundles/aa-ledger-css.html +3 -0
- ledger/templates/ledger/bundles/aa-ledger-js.html +3 -0
- ledger/templates/ledger/bundles/view-alliance-ledger-js.html +14 -0
- ledger/templates/ledger/bundles/view-character-ledger-js.html +15 -0
- ledger/templates/ledger/bundles/view-character-planetary-css.html +3 -0
- ledger/templates/ledger/bundles/view-character-planetary-js.html +4 -0
- ledger/templates/ledger/bundles/view-corporation-ledger-js.html +15 -0
- ledger/templates/ledger/partials/modal/confirm.html +0 -1
- ledger/templates/ledger/partials/modal/request-accept-delete-alliance.html +38 -0
- ledger/templates/ledger/partials/modal/request-accept-delete-character.html +38 -0
- ledger/templates/ledger/partials/modal/request-accept-delete-corporation.html +38 -0
- ledger/templates/ledger/partials/modal/request-accept-switch-notification.html +38 -0
- ledger/templates/ledger/partials/modal/request-view-alliance-details.html +26 -0
- ledger/templates/ledger/partials/modal/request-view-character-details.html +26 -0
- ledger/templates/ledger/partials/modal/request-view-corporation-details.html +26 -0
- ledger/templates/ledger/partials/modal/request-view-extractor.html +32 -0
- ledger/templates/ledger/partials/modal/request-view-factory.html +31 -0
- ledger/templates/ledger/partials/{menu → navigation}/administration.html +8 -0
- ledger/templates/ledger/partials/{menu → navigation}/navigation.html +2 -2
- ledger/templates/ledger/partials/{administration → view-alliance-administration}/alliance_corporations.html +3 -3
- ledger/templates/ledger/partials/view-alliance-administration/dashboard.html +81 -0
- ledger/templates/ledger/partials/view-alliance-ledger/alliance-billboard.html +25 -0
- ledger/templates/ledger/partials/view-alliance-ledger/alliance-ledger-details.html +21 -0
- ledger/templates/ledger/partials/view-alliance-ledger/alliance-table.html +24 -0
- ledger/templates/ledger/partials/view-alliance-ledger/information/daily.html +18 -0
- ledger/templates/ledger/partials/view-alliance-ledger/information/hourly.html +18 -0
- ledger/templates/ledger/partials/view-alliance-ledger/information/summary.html +19 -0
- ledger/templates/ledger/partials/{administration → view-character-administration}/character.html +1 -9
- ledger/templates/ledger/partials/{administration → view-character-administration}/dashboard.html +0 -34
- ledger/templates/ledger/partials/view-character-ledger/character-billboard.html +25 -0
- ledger/templates/ledger/partials/view-character-ledger/character-ledger-details.html +21 -0
- ledger/templates/ledger/partials/view-character-ledger/character-table.html +25 -0
- ledger/templates/ledger/partials/view-character-ledger/information/daily.html +18 -0
- ledger/templates/ledger/partials/view-character-ledger/information/hourly.html +18 -0
- ledger/templates/ledger/partials/view-character-ledger/information/summary.html +19 -0
- ledger/templates/ledger/partials/view-character-planetary/extractor-table.html +24 -0
- ledger/templates/ledger/partials/view-character-planetary/factory-table.html +24 -0
- ledger/templates/ledger/partials/view-character-planetary/planetary-table.html +22 -0
- ledger/templates/ledger/partials/view-character-planetary/storage-table.html +23 -0
- ledger/templates/ledger/partials/{administration → view-corporation-administration}/corporation.html +5 -13
- ledger/templates/ledger/partials/{administration → view-corporation-administration}/corporation_characters.html +1 -1
- ledger/templates/ledger/partials/view-corporation-administration/dashboard.html +81 -0
- ledger/templates/ledger/partials/view-corporation-ledger/corporation-billboard.html +25 -0
- ledger/templates/ledger/partials/view-corporation-ledger/corporation-ledger-details.html +21 -0
- ledger/templates/ledger/partials/view-corporation-ledger/corporation-table.html +26 -0
- ledger/templates/ledger/partials/view-corporation-ledger/information/daily.html +18 -0
- ledger/templates/ledger/partials/view-corporation-ledger/information/hourly.html +18 -0
- ledger/templates/ledger/partials/view-corporation-ledger/information/summary.html +19 -0
- ledger/templates/ledger/view-administration.html +62 -0
- ledger/templates/ledger/view-alliance-administration.html +49 -0
- ledger/templates/ledger/view-alliance-ledger.html +72 -0
- ledger/templates/ledger/view-alliance-overview.html +131 -0
- ledger/templates/ledger/view-character-administration.html +42 -0
- ledger/templates/ledger/view-character-ledger.html +73 -0
- ledger/templates/ledger/view-character-overview.html +135 -0
- ledger/templates/ledger/view-character-planetary-overview.html +135 -0
- ledger/templates/ledger/view-character-planetary.html +73 -0
- ledger/templates/ledger/view-corporation-administration.html +42 -0
- ledger/templates/ledger/view-corporation-ledger.html +73 -0
- ledger/templates/ledger/view-corporation-overview.html +131 -0
- ledger/templatetags/ledger.py +3 -5
- ledger/tests/__init__.py +187 -0
- ledger/tests/test_admin.py +164 -68
- ledger/tests/test_auth_hook.py +31 -13
- ledger/tests/test_decarators.py +14 -79
- ledger/tests/test_discord_installed.py +0 -1
- ledger/tests/test_helpers/test_ledger_data.py +19 -0
- ledger/tests/test_managers/test_character_audit_manager.py +111 -69
- ledger/tests/test_managers/test_character_journal_manager.py +48 -208
- ledger/tests/test_managers/test_character_mining_manager.py +37 -16
- ledger/tests/test_managers/test_corporation_division_manager.py +66 -28
- ledger/tests/test_managers/test_corporation_journal_manager.py +39 -42
- ledger/tests/test_managers/test_general_manager.py +78 -18
- ledger/tests/test_managers/test_planetary_manager.py +73 -32
- ledger/tests/test_models/test_characteraudit.py +58 -74
- ledger/tests/test_models/test_characterminingledger.py +20 -26
- ledger/tests/test_models/test_characterwalletjournal.py +10 -33
- ledger/tests/test_models/test_corporationaudit.py +41 -35
- ledger/tests/test_models/test_corporationwalletjournal.py +35 -32
- ledger/tests/test_models/test_general.py +44 -11
- ledger/tests/test_models/test_planetary.py +14 -80
- ledger/tests/test_templatetags.py +2 -7
- ledger/tests/test_views/corporation/test_add_corp.py +16 -35
- ledger/tests/test_views/corporation/test_delete_corporation.py +66 -42
- ledger/tests/test_views/test_access.py +512 -545
- ledger/tests/test_views/test_add_ally.py +57 -46
- ledger/tests/test_views/test_add_char.py +21 -33
- ledger/tests/test_views/test_delete_character.py +24 -21
- ledger/tests/testdata/README_ESI_STUB.md +430 -0
- ledger/tests/testdata/esi_stub_openapi.py +511 -0
- ledger/tests/testdata/integrations/__init__.py +0 -0
- ledger/tests/testdata/{load_eveuniverse.py → integrations/eveuniverse.py} +0 -1
- ledger/tests/testdata/integrations/planetary.py +13 -0
- ledger/tests/testdata/json/factory.json +281 -0
- ledger/tests/testdata/json/inactive.json +281 -0
- ledger/tests/testdata/json/pins.json +175 -272
- ledger/tests/testdata/json/route.json +95 -528
- ledger/tests/testdata/test_esi_stub.py +468 -0
- ledger/tests/testdata/utils.py +601 -0
- ledger/thirdparty/charlink_hook.py +60 -30
- ledger/urls.py +0 -135
- ledger/views/alliance/add_ally.py +2 -4
- ledger/views/alliance/alliance_ledger.py +64 -147
- ledger/views/character/add_char.py +8 -10
- ledger/views/character/character_ledger.py +60 -126
- ledger/views/character/planetary.py +5 -98
- ledger/views/corporation/add_corp.py +10 -12
- ledger/views/corporation/corporation_ledger.py +65 -327
- ledger/views/index.py +92 -30
- aa_ledger-1.0.4.dist-info/RECORD +0 -236
- ledger/api/api_helper/planetary_helper.py +0 -107
- ledger/api/ledger/__init__.py +0 -7
- ledger/api/ledger/planetary.py +0 -231
- ledger/helpers/alliance.py +0 -317
- ledger/helpers/character.py +0 -251
- ledger/helpers/core.py +0 -665
- ledger/helpers/corporation.py +0 -427
- ledger/helpers/data_exporter.py +0 -452
- ledger/static/ledger/js/planetary-confirm.js +0 -66
- ledger/static/ledger/js/planetary.js +0 -143
- ledger/templates/ledger/admin.html +0 -43
- ledger/templates/ledger/allyledger/admin/alliance_administration.html +0 -46
- ledger/templates/ledger/allyledger/admin/alliance_overview.html +0 -108
- ledger/templates/ledger/allyledger/alliance_ledger.html +0 -86
- ledger/templates/ledger/bundles/character-ledger-bundles.html +0 -66
- ledger/templates/ledger/bundles/corporation-ledger-bundles.html +0 -75
- ledger/templates/ledger/bundles/ledger-bundles.html +0 -23
- ledger/templates/ledger/bundles/ledger-css.html +0 -3
- ledger/templates/ledger/bundles/planetary-bundles.html +0 -50
- ledger/templates/ledger/bundles/table-css.html +0 -3
- ledger/templates/ledger/charledger/admin/character_administration.html +0 -39
- ledger/templates/ledger/charledger/admin/character_overview.html +0 -106
- ledger/templates/ledger/charledger/character_ledger.html +0 -94
- ledger/templates/ledger/charledger/planetary/admin/planetary_overview.html +0 -123
- ledger/templates/ledger/charledger/planetary/planetary_ledger.html +0 -54
- ledger/templates/ledger/corpledger/admin/corporation_administration.html +0 -39
- ledger/templates/ledger/corpledger/admin/corporation_overview.html +0 -108
- ledger/templates/ledger/corpledger/corporation_ledger.html +0 -129
- ledger/templates/ledger/data-export.html +0 -78
- ledger/templates/ledger/error.html +0 -31
- ledger/templates/ledger/partials/form/error-message.html +0 -1
- ledger/templates/ledger/partials/information/daily.html +0 -56
- ledger/templates/ledger/partials/information/day.html +0 -48
- ledger/templates/ledger/partials/information/error.html +0 -8
- ledger/templates/ledger/partials/information/hourly.html +0 -53
- ledger/templates/ledger/partials/information/summary.html +0 -88
- ledger/templates/ledger/partials/information/view_character_content.html +0 -35
- ledger/templates/ledger/partials/modal/switchalarm_confirm.html +0 -39
- ledger/templates/ledger/partials/modal/view_extractor.html +0 -48
- ledger/templates/ledger/partials/modal/view_factory.html +0 -123
- ledger/templates/ledger/partials/table/char-ledger.html +0 -85
- ledger/templates/ledger/partials/table/corp-ledger.html +0 -66
- ledger/templates/ledger/partials/table/planetary.html +0 -18
- ledger/templates/ledger/partials/thirdparty/billboard.html +0 -22
- ledger/templates/ledger/partials/view/card.html +0 -160
- ledger/templates/ledger/permission.html +0 -2
- ledger/tests/test_helpers/test_billboard.py +0 -11
- ledger/tests/test_helpers/test_data_exporter.py +0 -207
- ledger/tests/test_tasks.py +0 -282
- ledger/tests/test_view_helpers/test_core.py +0 -47
- ledger/tests/test_views/corporation/test_corporation.py +0 -267
- ledger/tests/test_views/test_planetary.py +0 -137
- ledger/tests/testdata/esi_stub.py +0 -109
- ledger/tests/testdata/esi_stub_migration.py +0 -80
- ledger/tests/testdata/generate_characteraudit.py +0 -106
- ledger/tests/testdata/generate_corporationaudit.py +0 -74
- ledger/tests/testdata/generate_events.py +0 -31
- ledger/tests/testdata/generate_miningledger.py +0 -13
- ledger/tests/testdata/generate_planets.py +0 -48
- ledger/tests/testdata/generate_walletjournal.py +0 -42
- ledger/tests/testdata/json/czarno-pins.json +0 -240
- ledger/tests/testdata/json/czarno-routes.json +0 -165
- ledger/tests/testdata/json/pins2.json +0 -538
- {aa_ledger-1.0.4.dist-info → aa_ledger-2.0.0.dist-info}/WHEEL +0 -0
- {aa_ledger-1.0.4.dist-info → aa_ledger-2.0.0.dist-info}/licenses/LICENSE +0 -0
- /ledger/{tests/test_view_helpers → api/helpers}/__init__.py +0 -0
- /ledger/templates/ledger/bundles/{ally-administration-bundles.html → view-alliance-administration-js.html} +0 -0
- /ledger/templates/ledger/bundles/{char-administration-bundles.html → view-character-administration-js.html} +0 -0
- /ledger/templates/ledger/bundles/{corp-administration-bundles.html → view-corporation-administration-js.html} +0 -0
- /ledger/templates/ledger/partials/{administration → view-alliance-administration}/alliance.html +0 -0
- /ledger/tests/testdata/{esi.json → esi_test_data.json} +0 -0
- /ledger/tests/testdata/{allianceauth.json → integrations/allianceauth.json} +0 -0
- /ledger/tests/testdata/{load_allianceauth.py → integrations/allianceauth.py} +0 -0
- /ledger/tests/testdata/{eveentity.json → integrations/eveentity.json} +0 -0
- /ledger/tests/testdata/{load_eveentity.py → integrations/eveentity.py} +0 -0
- /ledger/tests/testdata/{eveuniverse.json → integrations/eveuniverse.json} +0 -0
- /ledger/tests/testdata/{planetary.json → integrations/planetary.json} +0 -0
ledger/tests/test_admin.py
CHANGED
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
# Standard Library
|
|
2
|
-
from unittest.mock import
|
|
2
|
+
from unittest.mock import patch
|
|
3
3
|
|
|
4
4
|
# Django
|
|
5
5
|
from django.contrib.admin.sites import AdminSite
|
|
6
|
-
from django.
|
|
7
|
-
from django.contrib.sessions.middleware import SessionMiddleware
|
|
8
|
-
from django.test import RequestFactory, override_settings
|
|
6
|
+
from django.test import override_settings
|
|
9
7
|
from django.utils import timezone
|
|
10
|
-
from django.utils.safestring import mark_safe
|
|
11
8
|
|
|
12
9
|
# Alliance Auth
|
|
13
10
|
from allianceauth.eveonline.evelinks import eveimageserver
|
|
14
11
|
|
|
15
|
-
# Alliance Auth (External Libs)
|
|
16
|
-
from app_utils.testing import NoSocketsTestCase
|
|
17
|
-
|
|
18
12
|
# AA Ledger
|
|
19
13
|
from ledger.admin import (
|
|
20
14
|
CharacterAuditAdmin,
|
|
@@ -22,18 +16,13 @@ from ledger.admin import (
|
|
|
22
16
|
CorporationAuditAdmin,
|
|
23
17
|
CorporationUpdateStatusAdminInline,
|
|
24
18
|
)
|
|
25
|
-
from ledger.models.characteraudit import
|
|
26
|
-
from ledger.models.corporationaudit import
|
|
27
|
-
from ledger.tests
|
|
28
|
-
|
|
19
|
+
from ledger.models.characteraudit import CharacterOwner, CharacterUpdateStatus
|
|
20
|
+
from ledger.models.corporationaudit import CorporationOwner, CorporationUpdateStatus
|
|
21
|
+
from ledger.tests import LedgerTestCase
|
|
22
|
+
from ledger.tests.testdata.utils import (
|
|
23
|
+
add_owner_to_user,
|
|
29
24
|
create_update_status,
|
|
30
25
|
)
|
|
31
|
-
from ledger.tests.testdata.generate_corporationaudit import (
|
|
32
|
-
add_corporationaudit_corporation_to_user,
|
|
33
|
-
create_corporation_update_status,
|
|
34
|
-
create_user_from_evecharacter,
|
|
35
|
-
)
|
|
36
|
-
from ledger.tests.testdata.load_allianceauth import load_allianceauth
|
|
37
26
|
|
|
38
27
|
ADMIN_PATH = "ledger.admin"
|
|
39
28
|
|
|
@@ -43,29 +32,26 @@ class MockRequest:
|
|
|
43
32
|
|
|
44
33
|
|
|
45
34
|
@override_settings(CELERY_ALWAYS_EAGER=True, CELERY_EAGER_PROPAGATES_EXCEPTIONS=True)
|
|
46
|
-
class TestCorporationAuditAdmin(
|
|
35
|
+
class TestCorporationAuditAdmin(LedgerTestCase):
|
|
36
|
+
"""Test Backend AA Administration for Ledger."""
|
|
37
|
+
|
|
47
38
|
@classmethod
|
|
48
39
|
def setUpClass(cls) -> None:
|
|
49
40
|
super().setUpClass()
|
|
50
|
-
load_allianceauth()
|
|
51
41
|
|
|
52
|
-
cls.factory = RequestFactory()
|
|
53
42
|
cls.site = AdminSite()
|
|
54
43
|
|
|
55
|
-
cls.
|
|
56
|
-
|
|
57
|
-
["ledger.basic_access"],
|
|
58
|
-
)
|
|
59
|
-
cls.corporation_audit_admin = CorporationAuditAdmin(CorporationAudit, cls.site)
|
|
60
|
-
cls.corporation_audit = add_corporationaudit_corporation_to_user(
|
|
44
|
+
cls.corporation_audit_admin = CorporationAuditAdmin(CorporationOwner, cls.site)
|
|
45
|
+
cls.corporation_audit = add_owner_to_user(
|
|
61
46
|
cls.user,
|
|
62
|
-
cls.
|
|
47
|
+
cls.user_character.character.character_id,
|
|
48
|
+
owner_type="corporation",
|
|
63
49
|
)
|
|
64
|
-
cls.user.is_superuser = True
|
|
65
50
|
|
|
66
|
-
cls.update_status =
|
|
67
|
-
cls.corporation_audit,
|
|
51
|
+
cls.update_status = create_update_status(
|
|
52
|
+
owner=cls.corporation_audit,
|
|
68
53
|
section="wallet_journal",
|
|
54
|
+
owner_type="corporation",
|
|
69
55
|
last_update_at=timezone.now() - timezone.timedelta(minutes=5),
|
|
70
56
|
last_update_finished_at=timezone.now() - timezone.timedelta(minutes=3),
|
|
71
57
|
last_run_at=timezone.now() - timezone.timedelta(minutes=4),
|
|
@@ -73,42 +59,75 @@ class TestCorporationAuditAdmin(NoSocketsTestCase):
|
|
|
73
59
|
)
|
|
74
60
|
|
|
75
61
|
def test_get_queryset(self):
|
|
76
|
-
|
|
62
|
+
"""
|
|
63
|
+
Test get_queryset method.
|
|
64
|
+
|
|
65
|
+
This test ensures that the get_queryset method of the CorporationAuditAdmin
|
|
66
|
+
class returns a valid queryset without errors.
|
|
67
|
+
"""
|
|
68
|
+
# Test Action
|
|
69
|
+
qs = self.corporation_audit_admin.get_queryset(CorporationOwner.objects.all())
|
|
70
|
+
# Expected Result
|
|
77
71
|
self.assertIsNotNone(qs)
|
|
78
72
|
|
|
79
73
|
def test_run_update_duration(self):
|
|
74
|
+
"""
|
|
75
|
+
Test run and update duration calculations in inline admin.
|
|
76
|
+
|
|
77
|
+
This test verifies that the duration calculations for run and update times
|
|
78
|
+
in the CorporationUpdateStatusAdminInline class are functioning correctly.
|
|
79
|
+
"""
|
|
80
|
+
# Test Data
|
|
80
81
|
inline = CorporationUpdateStatusAdminInline(CorporationUpdateStatus, self.site)
|
|
81
82
|
|
|
83
|
+
# Test Action
|
|
82
84
|
run_duration = inline._run_duration(self.update_status)
|
|
83
85
|
update_duration = inline._update_duration(self.update_status).replace(
|
|
84
86
|
"\xa0", " "
|
|
85
87
|
)
|
|
88
|
+
|
|
89
|
+
# Expected Results
|
|
86
90
|
self.assertIn("minute", run_duration)
|
|
87
91
|
self.assertIn("2 minutes", update_duration)
|
|
88
92
|
self.assertEqual(inline._calc_duration(None, None), "-")
|
|
89
93
|
|
|
90
94
|
@patch(ADMIN_PATH + ".update_corporation.delay")
|
|
91
95
|
def test_force_update(self, mock_update_character_delay):
|
|
96
|
+
"""
|
|
97
|
+
Test force_update admin action.
|
|
98
|
+
|
|
99
|
+
This test checks that the force_update method in the CorporationAuditAdmin
|
|
100
|
+
class correctly triggers the update_corporation task when invoked.
|
|
101
|
+
"""
|
|
102
|
+
# Test Data
|
|
92
103
|
request = self.factory.get("/")
|
|
93
|
-
request.user = self.
|
|
104
|
+
request.user = self.superuser
|
|
94
105
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
middleware.process_request(request)
|
|
98
|
-
message_middleware = MessageMiddleware(Mock())
|
|
99
|
-
message_middleware.process_request(request)
|
|
106
|
+
self._middleware_process_request(request)
|
|
107
|
+
queryset = CorporationOwner.objects.filter(pk=self.corporation_audit.pk)
|
|
100
108
|
|
|
101
|
-
|
|
109
|
+
# Test Action
|
|
102
110
|
self.corporation_audit_admin.force_update(request, queryset)
|
|
111
|
+
|
|
112
|
+
# Expected Result
|
|
103
113
|
mock_update_character_delay.assert_called_once()
|
|
104
114
|
|
|
105
115
|
def test_entity_pic(self):
|
|
106
|
-
|
|
116
|
+
"""
|
|
117
|
+
Test entity picture display in admin.
|
|
118
|
+
|
|
119
|
+
This test verifies that the _entity_pic method in the CorporationAuditAdmin
|
|
120
|
+
class returns the correct HTML for displaying the corporation's image.
|
|
121
|
+
"""
|
|
122
|
+
# Test Data
|
|
123
|
+
self.client.force_login(self.superuser)
|
|
107
124
|
request = self.factory.get("/")
|
|
108
|
-
request.user = self.
|
|
125
|
+
request.user = self.superuser
|
|
126
|
+
|
|
127
|
+
# Test Action/Expected Result
|
|
109
128
|
expected_html = '<img src="{}" class="img-circle">'.format(
|
|
110
129
|
eveimageserver._eve_entity_image_url(
|
|
111
|
-
"corporation", self.corporation_audit.
|
|
130
|
+
"corporation", self.corporation_audit.eve_corporation.corporation_id, 32
|
|
112
131
|
)
|
|
113
132
|
)
|
|
114
133
|
self.assertEqual(
|
|
@@ -117,9 +136,19 @@ class TestCorporationAuditAdmin(NoSocketsTestCase):
|
|
|
117
136
|
)
|
|
118
137
|
|
|
119
138
|
def test_corporation_corporation_id(self):
|
|
120
|
-
|
|
139
|
+
"""
|
|
140
|
+
Test corporation ID display in admin.
|
|
141
|
+
|
|
142
|
+
This test checks that the _corporation__corporation_id method in the
|
|
143
|
+
CorporationAuditAdmin class returns the correct corporation ID.
|
|
144
|
+
"""
|
|
145
|
+
# Test Data
|
|
146
|
+
self.client.force_login(self.superuser)
|
|
147
|
+
|
|
121
148
|
request = self.factory.get("/")
|
|
122
|
-
request.user = self.
|
|
149
|
+
request.user = self.superuser
|
|
150
|
+
|
|
151
|
+
# Test Action/Expected Result
|
|
123
152
|
self.assertEqual(
|
|
124
153
|
self.corporation_audit_admin._corporation__corporation_id(
|
|
125
154
|
self.corporation_audit
|
|
@@ -128,16 +157,33 @@ class TestCorporationAuditAdmin(NoSocketsTestCase):
|
|
|
128
157
|
)
|
|
129
158
|
|
|
130
159
|
def test_has_add_permission(self):
|
|
131
|
-
|
|
160
|
+
"""
|
|
161
|
+
Test has_add_permission method.
|
|
162
|
+
|
|
163
|
+
This test ensures that the has_add_permission method of the CorporationAuditAdmin
|
|
164
|
+
class always returns False, preventing addition of new corporation audits
|
|
165
|
+
"""
|
|
166
|
+
# Test Data
|
|
167
|
+
self.client.force_login(self.superuser)
|
|
132
168
|
request = self.factory.get("/")
|
|
133
|
-
request.user = self.
|
|
169
|
+
request.user = self.superuser
|
|
170
|
+
|
|
171
|
+
# Test Action/Expected Result
|
|
134
172
|
self.assertFalse(self.corporation_audit_admin.has_add_permission(request))
|
|
135
173
|
|
|
136
174
|
def test_has_change_permission(self):
|
|
137
|
-
|
|
175
|
+
"""
|
|
176
|
+
Test has_change_permission method.
|
|
177
|
+
|
|
178
|
+
This test ensures that the has_change_permission method of the CorporationAuditAdmin
|
|
179
|
+
class always returns False, preventing changes to existing corporation audits.
|
|
180
|
+
"""
|
|
181
|
+
# Test Data
|
|
182
|
+
self.client.force_login(self.superuser)
|
|
138
183
|
request = self.factory.get("/")
|
|
139
|
-
request.user = self.
|
|
140
|
-
|
|
184
|
+
request.user = self.superuser
|
|
185
|
+
|
|
186
|
+
# Test Action/Expected Result
|
|
141
187
|
self.assertFalse(self.corporation_audit_admin.has_change_permission(request))
|
|
142
188
|
self.assertFalse(
|
|
143
189
|
self.corporation_audit_admin.has_change_permission(
|
|
@@ -146,24 +192,18 @@ class TestCorporationAuditAdmin(NoSocketsTestCase):
|
|
|
146
192
|
)
|
|
147
193
|
|
|
148
194
|
|
|
149
|
-
class TestCharacterAuditAdmin(
|
|
195
|
+
class TestCharacterAuditAdmin(LedgerTestCase):
|
|
150
196
|
@classmethod
|
|
151
197
|
def setUpClass(cls) -> None:
|
|
152
198
|
super().setUpClass()
|
|
153
|
-
load_allianceauth()
|
|
154
|
-
cls.factory = RequestFactory()
|
|
155
199
|
cls.site = AdminSite()
|
|
156
200
|
|
|
157
|
-
cls.
|
|
158
|
-
|
|
159
|
-
["ledger.basic_access"],
|
|
160
|
-
)
|
|
161
|
-
cls.character_audit_admin = CharacterAuditAdmin(CharacterAudit, cls.site)
|
|
162
|
-
cls.character_audit = add_characteraudit_character_to_user(
|
|
201
|
+
cls.character_audit_admin = CharacterAuditAdmin(CharacterOwner, cls.site)
|
|
202
|
+
cls.character_audit = add_owner_to_user(
|
|
163
203
|
cls.user,
|
|
164
|
-
cls.
|
|
204
|
+
cls.user_character.character.character_id,
|
|
205
|
+
owner_type="character",
|
|
165
206
|
)
|
|
166
|
-
cls.user.is_superuser = True
|
|
167
207
|
cls.update_status = create_update_status(
|
|
168
208
|
cls.character_audit,
|
|
169
209
|
section="wallet_journal",
|
|
@@ -174,36 +214,62 @@ class TestCharacterAuditAdmin(NoSocketsTestCase):
|
|
|
174
214
|
)
|
|
175
215
|
|
|
176
216
|
def test_get_queryset(self):
|
|
177
|
-
qs = self.character_audit_admin.get_queryset(
|
|
217
|
+
qs = self.character_audit_admin.get_queryset(CharacterOwner.objects.all())
|
|
178
218
|
self.assertIsNotNone(qs)
|
|
179
219
|
|
|
180
220
|
@patch(ADMIN_PATH + ".update_character.delay")
|
|
181
221
|
def test_force_update(self, mock_update_character_delay):
|
|
182
|
-
|
|
222
|
+
"""
|
|
223
|
+
Test force_update admin action.
|
|
224
|
+
|
|
225
|
+
This test checks that the force_update method in the CharacterAuditAdmin
|
|
226
|
+
class correctly triggers the update_character task when invoked.
|
|
227
|
+
"""
|
|
228
|
+
# Test Data
|
|
229
|
+
queryset = CharacterOwner.objects.filter(pk=self.character_audit.pk)
|
|
183
230
|
request = self.factory.get("/")
|
|
231
|
+
request.user = self.superuser
|
|
184
232
|
|
|
185
|
-
|
|
186
|
-
middleware = SessionMiddleware(Mock())
|
|
187
|
-
middleware.process_request(request)
|
|
188
|
-
message_middleware = MessageMiddleware(Mock())
|
|
189
|
-
message_middleware.process_request(request)
|
|
233
|
+
self._middleware_process_request(request)
|
|
190
234
|
|
|
235
|
+
# Test Action
|
|
191
236
|
self.character_audit_admin.force_update(request, queryset)
|
|
237
|
+
|
|
238
|
+
# Expected Result
|
|
192
239
|
mock_update_character_delay.assert_called_once()
|
|
193
240
|
|
|
194
241
|
def test_run_update_duration(self):
|
|
242
|
+
"""
|
|
243
|
+
Test run and update duration calculations in inline admin.
|
|
244
|
+
|
|
245
|
+
This test verifies that the duration calculations for run and update times
|
|
246
|
+
in the CharacterUpdateStatusAdminInline class are functioning correctly.
|
|
247
|
+
"""
|
|
248
|
+
# Test Data
|
|
195
249
|
inline = CharacterUpdateStatusAdminInline(CharacterUpdateStatus, self.site)
|
|
196
250
|
|
|
251
|
+
# Test Action
|
|
197
252
|
run_duration = inline._run_duration(self.update_status)
|
|
198
253
|
update_duration = inline._update_duration(self.update_status).replace(
|
|
199
254
|
"\xa0", " "
|
|
200
255
|
)
|
|
256
|
+
|
|
257
|
+
# Expected Results
|
|
201
258
|
self.assertIn("minute", run_duration)
|
|
202
259
|
self.assertIn("2 minutes", update_duration)
|
|
203
260
|
self.assertEqual(inline._calc_duration(None, None), "-")
|
|
204
261
|
|
|
205
262
|
def test_entity_pic(self):
|
|
206
|
-
|
|
263
|
+
"""
|
|
264
|
+
Test entity picture rendering in admin.
|
|
265
|
+
|
|
266
|
+
This test verifies that the _entity_pic method in the CharacterAuditAdmin
|
|
267
|
+
class returns the correct HTML for displaying the character's image.
|
|
268
|
+
"""
|
|
269
|
+
# Test Data
|
|
270
|
+
self.client.force_login(self.superuser)
|
|
271
|
+
|
|
272
|
+
# Test Action/Expected Result
|
|
207
273
|
expected_html = '<img src="{}" class="img-circle">'.format(
|
|
208
274
|
eveimageserver._eve_entity_image_url(
|
|
209
275
|
"character", self.character_audit.eve_character.character_id, 32
|
|
@@ -214,6 +280,16 @@ class TestCharacterAuditAdmin(NoSocketsTestCase):
|
|
|
214
280
|
)
|
|
215
281
|
|
|
216
282
|
def test_character_character_name(self):
|
|
283
|
+
"""
|
|
284
|
+
Test character name display in admin.
|
|
285
|
+
|
|
286
|
+
This test checks that the _eve_character__character_name method in the
|
|
287
|
+
CharacterAuditAdmin class returns the correct character name.
|
|
288
|
+
"""
|
|
289
|
+
# Test Data
|
|
290
|
+
self.client.force_login(self.superuser)
|
|
291
|
+
|
|
292
|
+
# Test Action/Expected Result
|
|
217
293
|
self.assertEqual(
|
|
218
294
|
self.character_audit_admin._eve_character__character_name(
|
|
219
295
|
self.character_audit
|
|
@@ -222,11 +298,31 @@ class TestCharacterAuditAdmin(NoSocketsTestCase):
|
|
|
222
298
|
)
|
|
223
299
|
|
|
224
300
|
def test_has_add_permission(self):
|
|
301
|
+
"""
|
|
302
|
+
Test has_add_permission method.
|
|
303
|
+
|
|
304
|
+
This test ensures that the has_add_permission method of the CharacterAuditAdmin
|
|
305
|
+
class always returns False, preventing addition of new character audits.
|
|
306
|
+
"""
|
|
307
|
+
# Test Data
|
|
225
308
|
request = self.factory.get("/")
|
|
309
|
+
request.user = self.superuser
|
|
310
|
+
|
|
311
|
+
# Test Action/Expected Result
|
|
226
312
|
self.assertFalse(self.character_audit_admin.has_add_permission(request))
|
|
227
313
|
|
|
228
314
|
def test_has_change_permission(self):
|
|
315
|
+
"""
|
|
316
|
+
Test has_change_permission method.
|
|
317
|
+
|
|
318
|
+
This test ensures that the has_change_permission method of the CharacterAuditAdmin
|
|
319
|
+
class always returns False, preventing changes to existing character audits.
|
|
320
|
+
"""
|
|
321
|
+
# Test Data
|
|
229
322
|
request = self.factory.get("/")
|
|
323
|
+
request.user = self.superuser
|
|
324
|
+
|
|
325
|
+
# Test Action/Expected Result
|
|
230
326
|
self.assertFalse(self.character_audit_admin.has_change_permission(request))
|
|
231
327
|
self.assertFalse(
|
|
232
328
|
self.character_audit_admin.has_change_permission(
|
ledger/tests/test_auth_hook.py
CHANGED
|
@@ -2,22 +2,19 @@
|
|
|
2
2
|
from unittest.mock import MagicMock
|
|
3
3
|
|
|
4
4
|
# Django
|
|
5
|
-
from django.test import TestCase
|
|
6
5
|
from django.urls import reverse
|
|
7
6
|
|
|
8
|
-
# Alliance Auth (External Libs)
|
|
9
|
-
from app_utils.testdata_factories import UserMainFactory
|
|
10
|
-
|
|
11
7
|
# AA Ledger
|
|
12
8
|
from ledger.auth_hooks import LedgerMenuItem, register_charlink_hook
|
|
9
|
+
from ledger.tests import LedgerTestCase
|
|
13
10
|
|
|
14
11
|
|
|
15
|
-
class TestAuthHooks(
|
|
12
|
+
class TestAuthHooks(LedgerTestCase):
|
|
13
|
+
"""Test Alliance Auth Menu Hooks for Ledger"""
|
|
16
14
|
|
|
17
15
|
@classmethod
|
|
18
16
|
def setUpClass(cls) -> None:
|
|
19
17
|
super().setUpClass()
|
|
20
|
-
cls.user = UserMainFactory(permissions=["ledger.basic_access"])
|
|
21
18
|
cls.html_menu = f"""
|
|
22
19
|
<li class="d-flex flex-wrap m-2 p-2 pt-0 pb-0 mt-0 mb-0 me-0 pe-0">
|
|
23
20
|
<i class="nav-link fas fa-book fa-fw fa-fw align-self-center me-3 active"></i>
|
|
@@ -28,27 +25,40 @@ class TestAuthHooks(TestCase):
|
|
|
28
25
|
"""
|
|
29
26
|
|
|
30
27
|
def test_menu_hook(self):
|
|
28
|
+
"""
|
|
29
|
+
Test that the menu hook renders correctly for a user with permission.
|
|
30
|
+
|
|
31
|
+
This test logs in a user with the 'ledger.basic_access' permission
|
|
32
|
+
and verifies that the Ledger menu item is present in the rendered HTML.
|
|
33
|
+
"""
|
|
34
|
+
# Test Data
|
|
31
35
|
self.client.force_login(self.user)
|
|
32
36
|
|
|
37
|
+
# Test Action
|
|
33
38
|
response = self.client.get(
|
|
34
39
|
reverse("ledger:index"), follow=True
|
|
35
40
|
) # Follow redirects
|
|
36
41
|
|
|
37
|
-
#
|
|
42
|
+
# Expected Results
|
|
38
43
|
self.assertEqual(response.status_code, 200)
|
|
39
|
-
|
|
40
|
-
# Überprüfen, ob das HTML-Menü enthalten ist
|
|
41
44
|
self.assertContains(response, self.html_menu, html=True)
|
|
42
45
|
|
|
43
46
|
def test_render_returns_empty_string_for_user_without_permission(self):
|
|
44
|
-
|
|
47
|
+
"""
|
|
48
|
+
Test that the render method returns an empty string for a user without permission.
|
|
49
|
+
|
|
50
|
+
This test creates a mock request for a user who lacks the 'ledger.basic_access' permission
|
|
51
|
+
and verifies that the render method of LedgerMenuItem returns an empty string.
|
|
52
|
+
"""
|
|
53
|
+
# Test Data
|
|
45
54
|
ledger_menu_item = LedgerMenuItem()
|
|
46
55
|
mock_request = MagicMock()
|
|
47
56
|
mock_request.user.has_perm.return_value = False
|
|
48
57
|
|
|
49
|
-
#
|
|
58
|
+
# Test Action
|
|
50
59
|
result = ledger_menu_item.render(mock_request)
|
|
51
|
-
|
|
60
|
+
|
|
61
|
+
# Expected Result
|
|
52
62
|
self.assertEqual(
|
|
53
63
|
result,
|
|
54
64
|
"",
|
|
@@ -56,6 +66,14 @@ class TestAuthHooks(TestCase):
|
|
|
56
66
|
)
|
|
57
67
|
|
|
58
68
|
def test_register_charlink_hook(self):
|
|
59
|
-
|
|
69
|
+
"""
|
|
70
|
+
Test that the register_charlink_hook function returns the expected value.
|
|
71
|
+
|
|
72
|
+
This test calls the register_charlink_hook function and verifies that it returns
|
|
73
|
+
the correct string indicating the charlink hook location.
|
|
74
|
+
"""
|
|
75
|
+
# Test Action
|
|
60
76
|
result = register_charlink_hook()
|
|
77
|
+
|
|
78
|
+
# Expected Result
|
|
61
79
|
self.assertEqual(result, "ledger.thirdparty.charlink_hook")
|
ledger/tests/test_decarators.py
CHANGED
|
@@ -1,99 +1,34 @@
|
|
|
1
|
-
# Standard Library
|
|
2
|
-
from unittest.mock import patch
|
|
3
|
-
|
|
4
1
|
# Alliance Auth
|
|
5
2
|
from allianceauth.services.hooks import get_extension_logger
|
|
6
3
|
|
|
7
|
-
# Alliance Auth (External Libs)
|
|
8
|
-
from app_utils.logging import LoggerAddTag
|
|
9
|
-
from app_utils.testing import NoSocketsTestCase
|
|
10
|
-
|
|
11
4
|
# AA Ledger
|
|
12
5
|
from ledger import __title__
|
|
13
6
|
from ledger.decorators import (
|
|
14
7
|
log_timing,
|
|
15
|
-
when_esi_is_available,
|
|
16
8
|
)
|
|
9
|
+
from ledger.providers import AppLogger
|
|
10
|
+
from ledger.tests import LedgerTestCase
|
|
17
11
|
|
|
18
12
|
DECORATOR_PATH = "ledger.decorators."
|
|
19
13
|
|
|
20
14
|
|
|
21
|
-
|
|
22
|
-
class TestDecorators(NoSocketsTestCase):
|
|
23
|
-
@patch(DECORATOR_PATH + "fetch_esi_status")
|
|
24
|
-
@patch(DECORATOR_PATH + "IS_TESTING", new=True)
|
|
25
|
-
def test_when_esi_is_available_is_test(self, mock_fetch_esi_status):
|
|
26
|
-
"""Test when ESI is available in testing mode."""
|
|
27
|
-
|
|
28
|
-
@when_esi_is_available
|
|
29
|
-
def trigger_esi_deco():
|
|
30
|
-
return "Testing Mode."
|
|
31
|
-
|
|
32
|
-
# when
|
|
33
|
-
result = trigger_esi_deco()
|
|
34
|
-
# then
|
|
35
|
-
self.assertEqual(result, "Testing Mode.")
|
|
36
|
-
|
|
37
|
-
@patch(DECORATOR_PATH + "fetch_esi_status")
|
|
38
|
-
@patch(DECORATOR_PATH + "IS_TESTING", new=False)
|
|
39
|
-
def test_when_esi_is_ok(self, mock_fetch_esi_status):
|
|
40
|
-
"""Test when ESI is available in non-testing mode."""
|
|
41
|
-
|
|
42
|
-
# ensure the fetch_esi_status call reports ESI as up
|
|
43
|
-
mock_fetch_esi_status.return_value.is_ok = True
|
|
44
|
-
|
|
45
|
-
@when_esi_is_available
|
|
46
|
-
def trigger_esi_deco():
|
|
47
|
-
return "Esi is Available"
|
|
48
|
-
|
|
49
|
-
# when
|
|
50
|
-
result = trigger_esi_deco()
|
|
51
|
-
# then
|
|
52
|
-
mock_fetch_esi_status.assert_called_once()
|
|
53
|
-
self.assertEqual(result, "Esi is Available")
|
|
54
|
-
|
|
55
|
-
@patch(DECORATOR_PATH + "fetch_esi_status")
|
|
56
|
-
@patch(DECORATOR_PATH + "IS_TESTING", new=False)
|
|
57
|
-
def test_when_esi_is_not_ok(self, mock_fetch_esi_status):
|
|
58
|
-
"""Test when ESI is not available in non-testing mode."""
|
|
59
|
-
# ensure the fetch_esi_status call reports ESI as down
|
|
60
|
-
mock_fetch_esi_status.return_value.is_ok = False
|
|
61
|
-
|
|
62
|
-
@when_esi_is_available
|
|
63
|
-
def trigger_esi_deco():
|
|
64
|
-
return None
|
|
65
|
-
|
|
66
|
-
# when
|
|
67
|
-
result = trigger_esi_deco()
|
|
68
|
-
# then
|
|
69
|
-
self.assertIsNone(result)
|
|
70
|
-
|
|
71
|
-
@patch(DECORATOR_PATH + "fetch_esi_status")
|
|
72
|
-
@patch(DECORATOR_PATH + "IS_TESTING", new=False)
|
|
73
|
-
def test_when_esi_is_ok_and_cached(self, mock_fetch_esi_status):
|
|
74
|
-
"""Test when ESI is available in non-testing mode and cached."""
|
|
75
|
-
# Make a Exception to ensure fetch_esi_status is not called
|
|
76
|
-
mock_fetch_esi_status.side_effect = Exception("Should not be called")
|
|
77
|
-
|
|
78
|
-
@when_esi_is_available
|
|
79
|
-
def trigger_esi_deco():
|
|
80
|
-
return "Esi is Available"
|
|
81
|
-
|
|
82
|
-
# when
|
|
83
|
-
result = trigger_esi_deco()
|
|
84
|
-
# then
|
|
85
|
-
mock_fetch_esi_status.assert_not_called()
|
|
86
|
-
self.assertEqual(result, "Esi is Available")
|
|
87
|
-
|
|
15
|
+
class TestDecorators(LedgerTestCase):
|
|
88
16
|
def test_log_timing(self):
|
|
89
|
-
|
|
90
|
-
|
|
17
|
+
"""
|
|
18
|
+
Test log_timing decorator functionality.
|
|
19
|
+
|
|
20
|
+
This test defines a simple function decorated with log_timing and
|
|
21
|
+
verifies that it returns the expected result.
|
|
22
|
+
"""
|
|
23
|
+
# Test Data
|
|
24
|
+
logger = AppLogger(get_extension_logger(__name__), __title__)
|
|
91
25
|
|
|
92
26
|
@log_timing(logger)
|
|
93
27
|
def trigger_log_timing():
|
|
94
28
|
return "Log Timing"
|
|
95
29
|
|
|
96
|
-
#
|
|
30
|
+
# Test Action
|
|
97
31
|
result = trigger_log_timing()
|
|
98
|
-
|
|
32
|
+
|
|
33
|
+
# Expected Result
|
|
99
34
|
self.assertEqual(result, "Log Timing")
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# AA Ledger
|
|
2
|
+
from ledger.tests import LedgerTestCase
|
|
3
|
+
|
|
4
|
+
MODULE_PATH = "ledger.helpers.ledger_data"
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class TestCharacterWalletJournalModel(LedgerTestCase):
|
|
8
|
+
@classmethod
|
|
9
|
+
def setUpClass(cls):
|
|
10
|
+
super().setUpClass()
|
|
11
|
+
|
|
12
|
+
def test_get_footer_text_class(self):
|
|
13
|
+
# AA Ledger
|
|
14
|
+
from ledger.helpers.ledger_data import get_footer_text_class
|
|
15
|
+
|
|
16
|
+
self.assertEqual(get_footer_text_class(10), "text-success")
|
|
17
|
+
self.assertEqual(get_footer_text_class(-10), "text-danger")
|
|
18
|
+
self.assertEqual(get_footer_text_class(0), "")
|
|
19
|
+
self.assertEqual(get_footer_text_class(10, mining=True), "text-info")
|