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
|
@@ -3,16 +3,16 @@ from datetime import timedelta
|
|
|
3
3
|
from unittest.mock import patch
|
|
4
4
|
|
|
5
5
|
# Django
|
|
6
|
-
from django.test import TestCase
|
|
7
6
|
from django.utils import timezone
|
|
8
7
|
|
|
9
8
|
# AA Ledger
|
|
10
9
|
from ledger.models.general import EveEntity
|
|
10
|
+
from ledger.tests import LedgerTestCase
|
|
11
11
|
|
|
12
12
|
MODULE_PATH = "ledger.models.general"
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
class TestGeneralModel(
|
|
15
|
+
class TestGeneralModel(LedgerTestCase):
|
|
16
16
|
@classmethod
|
|
17
17
|
def setUpClass(cls):
|
|
18
18
|
super().setUpClass()
|
|
@@ -24,54 +24,87 @@ class TestGeneralModel(TestCase):
|
|
|
24
24
|
)
|
|
25
25
|
|
|
26
26
|
def test_str(self):
|
|
27
|
+
"""Test the string representation of EveEntity."""
|
|
28
|
+
# Expected Result
|
|
27
29
|
self.assertEqual(str(self.eveentity), "Test")
|
|
28
30
|
|
|
29
31
|
def test_repr(self):
|
|
32
|
+
"""Test the repr representation of EveEntity."""
|
|
33
|
+
self.eveentity.category = "corporation"
|
|
34
|
+
# Expected Result
|
|
30
35
|
self.assertEqual(
|
|
31
36
|
repr(self.eveentity),
|
|
32
37
|
"EveEntity(id=123, category='corporation', name='Test')",
|
|
33
38
|
)
|
|
34
39
|
|
|
35
40
|
def test_is_alliance(self):
|
|
41
|
+
"""Test is_alliance property"""
|
|
42
|
+
# Test Data
|
|
36
43
|
self.eveentity.category = self.eveentity.CATEGORY_ALLIANCE
|
|
37
44
|
self.assertTrue(self.eveentity.is_alliance)
|
|
38
45
|
|
|
46
|
+
# Expected Result
|
|
47
|
+
self.eveentity.category = "Invalid Category"
|
|
48
|
+
self.assertFalse(self.eveentity.is_alliance)
|
|
49
|
+
|
|
39
50
|
def test_is_corporation(self):
|
|
51
|
+
"""Test is_corporation property"""
|
|
52
|
+
# Test Data
|
|
40
53
|
self.eveentity.category = self.eveentity.CATEGORY_CORPORATION
|
|
41
54
|
self.assertTrue(self.eveentity.is_corporation)
|
|
42
55
|
|
|
56
|
+
# Expected Result
|
|
57
|
+
self.eveentity.category = "Invalid Category"
|
|
58
|
+
self.assertFalse(self.eveentity.is_corporation)
|
|
59
|
+
|
|
43
60
|
def test_is_character(self):
|
|
61
|
+
"""Test is_character property"""
|
|
62
|
+
# Test Data
|
|
44
63
|
self.eveentity.category = self.eveentity.CATEGORY_CHARACTER
|
|
45
64
|
self.assertTrue(self.eveentity.is_character)
|
|
46
65
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
66
|
+
# Expected Result
|
|
67
|
+
self.eveentity.category = "Invalid Category"
|
|
68
|
+
self.assertFalse(self.eveentity.is_character)
|
|
69
|
+
|
|
70
|
+
@patch(MODULE_PATH + ".EveAllianceInfo.generic_logo_url")
|
|
50
71
|
def test_icon_url_alliance(self, mock_generic_logo_url):
|
|
72
|
+
"""Test icon_url for alliance category"""
|
|
73
|
+
# Test Data
|
|
51
74
|
self.eveentity.category = self.eveentity.CATEGORY_ALLIANCE
|
|
52
75
|
mock_generic_logo_url.return_value = "Test URL"
|
|
76
|
+
|
|
77
|
+
# Expected Result
|
|
53
78
|
self.assertEqual(self.eveentity.icon_url(), "Test URL")
|
|
54
79
|
|
|
55
|
-
@patch(
|
|
56
|
-
MODULE_PATH + ".EveCorporationInfo.generic_logo_url"
|
|
57
|
-
) # replace with your actual module path
|
|
80
|
+
@patch(MODULE_PATH + ".EveCorporationInfo.generic_logo_url")
|
|
58
81
|
def test_icon_url_corporation(self, mock_generic_logo_url):
|
|
82
|
+
"""Test icon_url for corporation category"""
|
|
83
|
+
# Test Data
|
|
59
84
|
self.eveentity.category = self.eveentity.CATEGORY_CORPORATION
|
|
60
85
|
mock_generic_logo_url.return_value = "Test URL"
|
|
86
|
+
|
|
87
|
+
# Expected Result
|
|
61
88
|
self.assertEqual(self.eveentity.icon_url(), "Test URL")
|
|
62
89
|
|
|
63
|
-
@patch(
|
|
64
|
-
MODULE_PATH + ".EveCharacter.generic_portrait_url"
|
|
65
|
-
) # replace with your actual module path
|
|
90
|
+
@patch(MODULE_PATH + ".EveCharacter.generic_portrait_url")
|
|
66
91
|
def test_icon_url_character(self, mock_generic_portrait_url):
|
|
92
|
+
"""Test icon_url for character category"""
|
|
93
|
+
# Test Data
|
|
67
94
|
self.eveentity.category = self.eveentity.CATEGORY_CHARACTER
|
|
68
95
|
mock_generic_portrait_url.return_value = "Test URL"
|
|
96
|
+
|
|
97
|
+
# Expected Result
|
|
69
98
|
self.assertEqual(self.eveentity.icon_url(), "Test URL")
|
|
70
99
|
|
|
71
100
|
def test_icon_url_not_implemented(self):
|
|
101
|
+
"""Test icon_url raises NotImplementedError for invalid category"""
|
|
102
|
+
# Expected Result
|
|
72
103
|
self.eveentity.category = "Invalid Category"
|
|
73
104
|
with self.assertRaises(NotImplementedError):
|
|
74
105
|
self.eveentity.icon_url()
|
|
75
106
|
|
|
76
107
|
def test_needs_update(self):
|
|
108
|
+
"""Test needs_update method"""
|
|
109
|
+
# Expected Result
|
|
77
110
|
self.assertTrue(self.eveentity.needs_update())
|
|
@@ -6,34 +6,31 @@ from django.test import TestCase
|
|
|
6
6
|
from django.utils import timezone
|
|
7
7
|
|
|
8
8
|
# AA Ledger
|
|
9
|
-
from ledger.tests
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
from ledger.tests.testdata.generate_planets import (
|
|
13
|
-
_planetary_data,
|
|
9
|
+
from ledger.tests import LedgerTestCase
|
|
10
|
+
from ledger.tests.testdata.integrations.planetary import _planetary_data
|
|
11
|
+
from ledger.tests.testdata.utils import (
|
|
14
12
|
create_character_planet,
|
|
15
13
|
create_character_planet_details,
|
|
14
|
+
create_owner_from_user,
|
|
16
15
|
)
|
|
17
|
-
from ledger.tests.testdata.load_allianceauth import load_allianceauth
|
|
18
|
-
from ledger.tests.testdata.load_eveuniverse import load_eveuniverse
|
|
19
16
|
|
|
20
17
|
MODULE_PATH = "ledger.models.planetary"
|
|
21
18
|
|
|
22
19
|
|
|
23
|
-
class TestPlanetModel(
|
|
20
|
+
class TestPlanetModel(LedgerTestCase):
|
|
24
21
|
@classmethod
|
|
25
22
|
def setUpClass(cls):
|
|
26
23
|
super().setUpClass()
|
|
27
|
-
load_allianceauth()
|
|
28
|
-
load_eveuniverse()
|
|
29
24
|
|
|
30
25
|
cls.planet_params = {
|
|
31
26
|
"upgrade_level": 5,
|
|
32
27
|
"num_pins": 5,
|
|
33
28
|
}
|
|
34
29
|
|
|
35
|
-
cls.
|
|
36
|
-
cls.planetary = create_character_planet(
|
|
30
|
+
cls.owner = create_owner_from_user(user=cls.user, owner_type="character")
|
|
31
|
+
cls.planetary = create_character_planet(
|
|
32
|
+
owner=cls.owner, planet_id=4001, **cls.planet_params
|
|
33
|
+
)
|
|
37
34
|
|
|
38
35
|
def test_str(self):
|
|
39
36
|
self.assertEqual(str(self.planetary), "Planet Data: Gneuten - Test Planet I")
|
|
@@ -44,20 +41,20 @@ class TestPlanetModel(TestCase):
|
|
|
44
41
|
)
|
|
45
42
|
|
|
46
43
|
|
|
47
|
-
class TestPlanetaryDetailsModel(
|
|
44
|
+
class TestPlanetaryDetailsModel(LedgerTestCase):
|
|
48
45
|
@classmethod
|
|
49
46
|
def setUpClass(cls):
|
|
50
47
|
super().setUpClass()
|
|
51
|
-
load_allianceauth()
|
|
52
|
-
load_eveuniverse()
|
|
53
48
|
|
|
54
49
|
cls.planet_params = {
|
|
55
50
|
"upgrade_level": 5,
|
|
56
51
|
"num_pins": 5,
|
|
57
52
|
}
|
|
58
53
|
|
|
59
|
-
cls.
|
|
60
|
-
cls.planetary = create_character_planet(
|
|
54
|
+
cls.owner = create_owner_from_user(user=cls.user, owner_type="character")
|
|
55
|
+
cls.planetary = create_character_planet(
|
|
56
|
+
owner=cls.owner, planet_id=4001, **cls.planet_params
|
|
57
|
+
)
|
|
61
58
|
cls.planetarydetails = create_character_planet_details(
|
|
62
59
|
cls.planetary, **_planetary_data
|
|
63
60
|
)
|
|
@@ -67,68 +64,5 @@ class TestPlanetaryDetailsModel(TestCase):
|
|
|
67
64
|
str(self.planetarydetails), "Planet Details Data: Gneuten - Test Planet I"
|
|
68
65
|
)
|
|
69
66
|
|
|
70
|
-
def test_count_extractors(self):
|
|
71
|
-
extractors_count = self.planetarydetails.count_extractors()
|
|
72
|
-
|
|
73
|
-
self.assertEqual(extractors_count, 2)
|
|
74
|
-
|
|
75
|
-
def test_get_planet_install_date(self):
|
|
76
|
-
install_time = self.planetarydetails.get_planet_install_date()
|
|
77
|
-
|
|
78
|
-
expected_install_date = timezone.datetime(
|
|
79
|
-
2024, 8, 12, 17, 17, 2, tzinfo=timezone.utc
|
|
80
|
-
)
|
|
81
|
-
self.assertEqual(install_time, expected_install_date)
|
|
82
|
-
|
|
83
|
-
def test_get_planet_expiry_date(self):
|
|
84
|
-
expected_expiry_date = timezone.datetime(
|
|
85
|
-
2024, 8, 26, 17, 17, 2, tzinfo=timezone.utc
|
|
86
|
-
)
|
|
87
|
-
self.assertEqual(
|
|
88
|
-
self.planetarydetails.get_planet_expiry_date(), expected_expiry_date
|
|
89
|
-
)
|
|
90
|
-
|
|
91
67
|
def test_is_expired(self):
|
|
92
68
|
self.assertEqual(self.planetarydetails.is_expired, True)
|
|
93
|
-
|
|
94
|
-
def test_get_types(self):
|
|
95
|
-
self.assertEqual(
|
|
96
|
-
self.planetarydetails.get_types(), [9832, 3645, 2390, 2268, 2309]
|
|
97
|
-
)
|
|
98
|
-
|
|
99
|
-
@patch(MODULE_PATH + ".timezone.now")
|
|
100
|
-
def test_is_percent_correct(self, mock_now):
|
|
101
|
-
fixed_date = timezone.make_aware(timezone.datetime(2024, 8, 20, 17, 17, 2))
|
|
102
|
-
mock_now.return_value = fixed_date
|
|
103
|
-
|
|
104
|
-
extractor_info = self.planetarydetails.get_extractors_info()
|
|
105
|
-
expected_percent = 57.14
|
|
106
|
-
for _, value in extractor_info.items():
|
|
107
|
-
self.assertIn(
|
|
108
|
-
"progress_percentage", value
|
|
109
|
-
) # Check if the key exists in the nested dictionary
|
|
110
|
-
self.assertEqual(value["progress_percentage"], expected_percent)
|
|
111
|
-
|
|
112
|
-
def test_get_planet_install_date_none(self):
|
|
113
|
-
planetary_details = create_character_planet_details(self.planetary)
|
|
114
|
-
planetary_details.pins = []
|
|
115
|
-
self.assertIsNone(planetary_details.get_planet_install_date())
|
|
116
|
-
|
|
117
|
-
def test_get_planet_expiry_date_none(self):
|
|
118
|
-
planetary_details = create_character_planet_details(self.planetary)
|
|
119
|
-
planetary_details.pins = []
|
|
120
|
-
self.assertIsNone(planetary_details.get_planet_expiry_date())
|
|
121
|
-
|
|
122
|
-
@patch("django.utils.timezone.now")
|
|
123
|
-
def test_is_expired_false(self, mock_now):
|
|
124
|
-
mock_now.return_value = timezone.datetime(2023, 10, 1, tzinfo=timezone.utc)
|
|
125
|
-
future_date = mock_now.return_value + timezone.timedelta(days=10)
|
|
126
|
-
|
|
127
|
-
planetary_details = create_character_planet_details(self.planetary)
|
|
128
|
-
planetary_details.pins = [{"expiry_time": future_date.isoformat()}]
|
|
129
|
-
self.assertFalse(planetary_details.is_expired)
|
|
130
|
-
|
|
131
|
-
def test_is_expired_empty(self):
|
|
132
|
-
planetary_details = create_character_planet_details(self.planetary)
|
|
133
|
-
planetary_details.pins = [{"expiry_time": None}]
|
|
134
|
-
self.assertFalse(planetary_details.is_expired)
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
# Standard Library
|
|
2
|
-
from unittest.mock import MagicMock
|
|
3
|
-
|
|
4
|
-
# Django
|
|
5
|
-
from django.test import TestCase
|
|
6
|
-
|
|
7
1
|
# AA Ledger
|
|
8
2
|
from ledger.templatetags.ledger import get_item, month_days, month_name, range_filter
|
|
3
|
+
from ledger.tests import LedgerTestCase
|
|
9
4
|
|
|
10
5
|
|
|
11
|
-
class TestTemplateTags(
|
|
6
|
+
class TestTemplateTags(LedgerTestCase):
|
|
12
7
|
|
|
13
8
|
@classmethod
|
|
14
9
|
def setUpClass(cls) -> None:
|
|
@@ -2,21 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
# Standard Library
|
|
4
4
|
from http import HTTPStatus
|
|
5
|
-
from unittest.mock import
|
|
5
|
+
from unittest.mock import patch
|
|
6
6
|
|
|
7
7
|
# Django
|
|
8
|
-
from django.
|
|
9
|
-
from django.test import RequestFactory, TestCase, override_settings
|
|
8
|
+
from django.test import override_settings
|
|
10
9
|
from django.urls import reverse
|
|
11
10
|
|
|
12
11
|
# AA Ledger
|
|
13
|
-
from ledger.models.corporationaudit import
|
|
14
|
-
from ledger.tests
|
|
15
|
-
|
|
16
|
-
)
|
|
17
|
-
from ledger.tests.testdata.load_allianceauth import load_allianceauth
|
|
18
|
-
from ledger.tests.testdata.load_eveuniverse import load_eveuniverse
|
|
19
|
-
from ledger.views.corporation.add_corp import add_corp
|
|
12
|
+
from ledger.models.corporationaudit import CorporationOwner
|
|
13
|
+
from ledger.tests import LedgerTestCase
|
|
14
|
+
from ledger.tests.testdata.utils import add_new_permission_to_user
|
|
20
15
|
|
|
21
16
|
MODULE_PATH = "ledger.views.corporation.add_corp"
|
|
22
17
|
|
|
@@ -24,38 +19,22 @@ MODULE_PATH = "ledger.views.corporation.add_corp"
|
|
|
24
19
|
@patch(MODULE_PATH + ".messages")
|
|
25
20
|
@patch(MODULE_PATH + ".tasks")
|
|
26
21
|
@override_settings(CELERY_ALWAYS_EAGER=True, CELERY_EAGER_PROPAGATES_EXCEPTIONS=True)
|
|
27
|
-
class TestAddCorpView(
|
|
22
|
+
class TestAddCorpView(LedgerTestCase):
|
|
28
23
|
@classmethod
|
|
29
24
|
def setUpClass(cls):
|
|
30
25
|
super().setUpClass()
|
|
31
|
-
load_allianceauth()
|
|
32
|
-
load_eveuniverse()
|
|
33
|
-
|
|
34
|
-
cls.factory = RequestFactory()
|
|
35
|
-
cls.user, cls.character_ownership = create_user_from_evecharacter(
|
|
36
|
-
1001,
|
|
37
|
-
permissions=[
|
|
38
|
-
"ledger.basic_access",
|
|
39
|
-
"ledger.advanced_access",
|
|
40
|
-
],
|
|
41
|
-
)
|
|
42
|
-
|
|
43
|
-
def _add_corporation(self, user, token):
|
|
44
|
-
request = self.factory.get(reverse("ledger:add_corp"))
|
|
45
|
-
request.user = user
|
|
46
|
-
request.token = token
|
|
47
|
-
middleware = SessionMiddleware(Mock())
|
|
48
|
-
middleware.process_request(request)
|
|
49
|
-
orig_view = add_corp.__wrapped__.__wrapped__.__wrapped__
|
|
50
|
-
return orig_view(request, token)
|
|
51
26
|
|
|
52
27
|
def test_add_corp(self, mock_tasks, mock_messages):
|
|
53
|
-
|
|
28
|
+
"""Test adding a corporation via the add_corp view."""
|
|
29
|
+
# Test Data
|
|
30
|
+
self.user = add_new_permission_to_user(self.user, "ledger.advanced_access")
|
|
54
31
|
user = self.user
|
|
55
32
|
token = user.token_set.get(character_id=1001)
|
|
56
|
-
|
|
33
|
+
|
|
34
|
+
# Test Action
|
|
57
35
|
response = self._add_corporation(user, token)
|
|
58
|
-
|
|
36
|
+
|
|
37
|
+
# Expected Results
|
|
59
38
|
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
|
60
39
|
self.assertEqual(
|
|
61
40
|
response.url, reverse("ledger:corporation_ledger", args=[2001])
|
|
@@ -63,5 +42,7 @@ class TestAddCorpView(TestCase):
|
|
|
63
42
|
self.assertTrue(mock_tasks.update_corporation.apply_async.called)
|
|
64
43
|
self.assertTrue(mock_messages.info.called)
|
|
65
44
|
self.assertTrue(
|
|
66
|
-
|
|
45
|
+
CorporationOwner.objects.filter(
|
|
46
|
+
eve_corporation__corporation_id=2001
|
|
47
|
+
).exists()
|
|
67
48
|
)
|
|
@@ -9,83 +9,107 @@ from django.test import RequestFactory, TestCase
|
|
|
9
9
|
from django.urls import reverse
|
|
10
10
|
|
|
11
11
|
# AA Ledger
|
|
12
|
-
from ledger.tests
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
from ledger.tests import LedgerTestCase
|
|
13
|
+
from ledger.tests.testdata.utils import (
|
|
14
|
+
add_new_permission_to_user,
|
|
15
|
+
create_owner_from_user,
|
|
15
16
|
)
|
|
16
|
-
|
|
17
|
-
# AA Skillfarm
|
|
18
|
-
from ledger.tests.testdata.load_allianceauth import load_allianceauth
|
|
19
|
-
from ledger.tests.testdata.load_eveuniverse import load_eveuniverse
|
|
20
17
|
from ledger.views.corporation.corporation_ledger import corporation_delete
|
|
21
18
|
|
|
22
19
|
MODULE_PATH = "ledger.views.corporation.corporation_ledger"
|
|
23
20
|
|
|
24
21
|
|
|
25
|
-
class TestDeleteCorporationView(
|
|
22
|
+
class TestDeleteCorporationView(LedgerTestCase):
|
|
26
23
|
@classmethod
|
|
27
24
|
def setUpClass(cls):
|
|
28
25
|
super().setUpClass()
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
cls.factory = RequestFactory()
|
|
33
|
-
cls.user, cls.character_ownership = create_user_from_evecharacter(
|
|
34
|
-
1001,
|
|
35
|
-
permissions=[
|
|
36
|
-
"ledger.basic_access",
|
|
37
|
-
"ledger.advanced_access",
|
|
38
|
-
"ledger.corp_audit_manager",
|
|
39
|
-
"ledger.manage_access",
|
|
40
|
-
],
|
|
41
|
-
)
|
|
42
|
-
cls.audit = add_corporationaudit_corporation_to_user(cls.user, 1001)
|
|
43
|
-
cls.no_audit_user, cls.character_ownership = create_user_from_evecharacter(
|
|
44
|
-
1002,
|
|
45
|
-
permissions=[
|
|
46
|
-
"ledger.basic_access",
|
|
47
|
-
"ledger.advanced_access",
|
|
48
|
-
"ledger.manage_access",
|
|
49
|
-
],
|
|
26
|
+
cls.audit = create_owner_from_user(
|
|
27
|
+
user=cls.user,
|
|
28
|
+
owner_type="corporation",
|
|
50
29
|
)
|
|
51
30
|
|
|
52
31
|
def test_delete_corporation(self):
|
|
53
|
-
|
|
32
|
+
"""
|
|
33
|
+
Test deleting a corporation successfully.
|
|
54
34
|
|
|
35
|
+
This test verifies that a user with the appropriate permissions can successfully
|
|
36
|
+
delete a corporation from the system. It checks that the response indicates success
|
|
37
|
+
and that the correct success message is returned.
|
|
38
|
+
|
|
39
|
+
## Results: Corporation is deleted successfully.
|
|
40
|
+
"""
|
|
41
|
+
# Test Data
|
|
55
42
|
request = self.factory.post(
|
|
56
|
-
reverse(
|
|
43
|
+
reverse(
|
|
44
|
+
"ledger:delete_corp",
|
|
45
|
+
kwargs={"corporation_id": self.audit.eve_corporation.corporation_id},
|
|
46
|
+
)
|
|
57
47
|
)
|
|
58
|
-
request.user = self.
|
|
48
|
+
request.user = self.manage_own_user
|
|
59
49
|
|
|
60
|
-
|
|
50
|
+
# Test Action
|
|
51
|
+
response = corporation_delete(
|
|
52
|
+
request, corporation_id=self.audit.eve_corporation.corporation_id
|
|
53
|
+
)
|
|
61
54
|
|
|
55
|
+
# Expected Results
|
|
62
56
|
response_data = json.loads(response.content)
|
|
63
|
-
|
|
64
57
|
self.assertEqual(response.status_code, HTTPStatus.OK)
|
|
65
58
|
self.assertTrue(response_data["success"])
|
|
66
59
|
self.assertEqual(response_data["message"], "Hell RiderZ successfully deleted")
|
|
67
60
|
|
|
68
61
|
def test_delete_corporation_no_audit(self):
|
|
69
|
-
|
|
70
|
-
|
|
62
|
+
"""
|
|
63
|
+
Test deleting a corporation that does not exist.
|
|
64
|
+
|
|
65
|
+
This test verifies that when a user attempts to delete a corporation that does not
|
|
66
|
+
exist in the system, the appropriate error response is returned.
|
|
67
|
+
|
|
68
|
+
## Results: Corporation not found message is returned.
|
|
69
|
+
"""
|
|
70
|
+
# Test Data
|
|
71
|
+
request = self.factory.post(
|
|
72
|
+
reverse("ledger:delete_corp", kwargs={"corporation_id": 2002})
|
|
73
|
+
)
|
|
74
|
+
request.user = self.manage_user
|
|
71
75
|
|
|
76
|
+
# Test Action
|
|
72
77
|
response = corporation_delete(request, corporation_id=2002)
|
|
73
78
|
|
|
79
|
+
# Expected Results
|
|
74
80
|
response_data = json.loads(response.content)
|
|
75
|
-
|
|
76
81
|
self.assertEqual(response.status_code, HTTPStatus.NOT_FOUND)
|
|
77
82
|
self.assertFalse(response_data["success"])
|
|
78
83
|
self.assertEqual(response_data["message"], "Corporation not found")
|
|
79
84
|
|
|
80
85
|
def test_delete_corporation_no_permission(self):
|
|
81
|
-
"""
|
|
82
|
-
|
|
83
|
-
request.user = self.no_audit_user
|
|
86
|
+
"""
|
|
87
|
+
Test deleting a corporation without being in the corporation.
|
|
84
88
|
|
|
85
|
-
|
|
89
|
+
This test verifies that when a user without the necessary permissions
|
|
90
|
+
attempts to delete a corporation, the system prevents the deletion and
|
|
91
|
+
provides an appropriate error message.
|
|
86
92
|
|
|
87
|
-
|
|
93
|
+
## Results: Permission Denied message is returned.
|
|
94
|
+
"""
|
|
95
|
+
# Test Data
|
|
96
|
+
request = self.factory.post(
|
|
97
|
+
reverse(
|
|
98
|
+
"ledger:delete_corp",
|
|
99
|
+
kwargs={"corporation_id": self.audit.eve_corporation.corporation_id},
|
|
100
|
+
)
|
|
101
|
+
)
|
|
102
|
+
add_new_permission_to_user(
|
|
103
|
+
user=self.user2, permission_name="ledger.manage_access"
|
|
104
|
+
)
|
|
105
|
+
request.user = self.user2
|
|
88
106
|
|
|
107
|
+
# Test Action
|
|
108
|
+
response = corporation_delete(
|
|
109
|
+
request, corporation_id=self.audit.eve_corporation.corporation_id
|
|
110
|
+
)
|
|
111
|
+
# Expected Results
|
|
112
|
+
response_data = json.loads(response.content)
|
|
89
113
|
self.assertEqual(response.status_code, HTTPStatus.FORBIDDEN)
|
|
90
114
|
self.assertFalse(response_data["success"])
|
|
91
115
|
self.assertEqual(response_data["message"], "Permission Denied")
|