aa-ledger 1.0.3__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.
Files changed (280) hide show
  1. {aa_ledger-1.0.3.dist-info → aa_ledger-2.0.0.dist-info}/METADATA +6 -6
  2. aa_ledger-2.0.0.dist-info/RECORD +267 -0
  3. {aa_ledger-1.0.3.dist-info → aa_ledger-2.0.0.dist-info}/WHEEL +1 -1
  4. ledger/__init__.py +2 -2
  5. ledger/admin.py +23 -18
  6. ledger/api/__init__.py +23 -7
  7. ledger/api/{ledger/admin.py → admin.py} +25 -31
  8. ledger/api/alliance.py +755 -0
  9. ledger/api/character.py +786 -0
  10. ledger/api/corporation.py +1141 -0
  11. ledger/api/{helpers.py → helpers/core.py} +33 -33
  12. ledger/api/helpers/icons.py +372 -0
  13. ledger/api/helpers/planetary_helper.py +354 -0
  14. ledger/api/planetary.py +354 -0
  15. ledger/api/schema.py +240 -15
  16. ledger/app_settings.py +18 -26
  17. ledger/auth_hooks.py +2 -2
  18. ledger/constants.py +50 -177
  19. ledger/decorators.py +2 -46
  20. ledger/forms.py +133 -39
  21. ledger/helpers/billboard.py +194 -144
  22. ledger/helpers/cache.py +105 -0
  23. ledger/helpers/discord.py +2 -4
  24. ledger/helpers/eveonline.py +160 -0
  25. ledger/helpers/ledger_data.py +23 -0
  26. ledger/helpers/ref_type.py +53 -78
  27. ledger/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  28. ledger/locale/cs_CZ/LC_MESSAGES/django.po +349 -193
  29. ledger/locale/de/LC_MESSAGES/django.mo +0 -0
  30. ledger/locale/de/LC_MESSAGES/django.po +528 -379
  31. ledger/locale/django.pot +717 -553
  32. ledger/locale/es/LC_MESSAGES/django.mo +0 -0
  33. ledger/locale/es/LC_MESSAGES/django.po +349 -194
  34. ledger/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
  35. ledger/locale/fr_FR/LC_MESSAGES/django.po +349 -193
  36. ledger/locale/it_IT/LC_MESSAGES/django.mo +0 -0
  37. ledger/locale/it_IT/LC_MESSAGES/django.po +349 -193
  38. ledger/locale/ja/LC_MESSAGES/django.mo +0 -0
  39. ledger/locale/ja/LC_MESSAGES/django.po +348 -193
  40. ledger/locale/ko_KR/LC_MESSAGES/django.mo +0 -0
  41. ledger/locale/ko_KR/LC_MESSAGES/django.po +349 -193
  42. ledger/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
  43. ledger/locale/nl_NL/LC_MESSAGES/django.po +349 -193
  44. ledger/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  45. ledger/locale/pl_PL/LC_MESSAGES/django.po +350 -193
  46. ledger/locale/ru/LC_MESSAGES/django.mo +0 -0
  47. ledger/locale/ru/LC_MESSAGES/django.po +348 -193
  48. ledger/locale/sk/LC_MESSAGES/django.mo +0 -0
  49. ledger/locale/sk/LC_MESSAGES/django.po +348 -193
  50. ledger/locale/uk/LC_MESSAGES/django.mo +0 -0
  51. ledger/locale/uk/LC_MESSAGES/django.po +348 -193
  52. ledger/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  53. ledger/locale/zh_Hans/LC_MESSAGES/django.po +348 -193
  54. ledger/managers/character_audit_manager.py +28 -20
  55. ledger/managers/character_journal_manager.py +187 -358
  56. ledger/managers/character_mining_manager.py +64 -30
  57. ledger/managers/character_planetary_manager.py +185 -138
  58. ledger/managers/corporation_audit_manager.py +36 -27
  59. ledger/managers/corporation_journal_manager.py +94 -57
  60. ledger/managers/general_manager.py +12 -8
  61. ledger/migrations/0018_remove_characterplanet_ledger_char_planet__58a5b6_idx_and_more.py +44 -0
  62. ledger/migrations/0019_rename_characteraudit_characterowner_and_more.py +48 -0
  63. ledger/models/__init__.py +5 -11
  64. ledger/models/characteraudit.py +101 -109
  65. ledger/models/corporationaudit.py +94 -49
  66. ledger/models/general.py +105 -211
  67. ledger/models/helpers/update_manager.py +302 -0
  68. ledger/models/planetary.py +60 -205
  69. ledger/providers.py +101 -0
  70. ledger/static/ledger/css/{ledger.css → aa-ledger.css} +54 -28
  71. ledger/static/ledger/js/aa-ledger.js +124 -0
  72. ledger/static/ledger/js/charts.js +25 -1
  73. ledger/static/ledger/js/view-alliance-ledger.js +383 -0
  74. ledger/static/ledger/js/view-character-ledger.js +388 -0
  75. ledger/static/ledger/js/view-corporation-ledger.js +402 -0
  76. ledger/static/ledger/js/view-planetary.js +492 -0
  77. ledger/static/ledger/libs/amCharts/5.14.4/js/flow.js +2 -0
  78. ledger/static/ledger/libs/amCharts/5.14.4/js/index.js +2 -0
  79. ledger/static/ledger/libs/amCharts/5.14.4/js/percent.js +2 -0
  80. ledger/static/ledger/libs/amCharts/5.14.4/js/themes/Animated.js +2 -0
  81. ledger/static/ledger/libs/amCharts/5.14.4/js/themes/Dark.js +2 -0
  82. ledger/static/ledger/libs/amCharts/5.14.4/js/xy.js +2 -0
  83. ledger/static/ledger/libs/datatables/2.3.5/css/dataTables.bootstrap5.css +610 -0
  84. ledger/static/ledger/libs/datatables/2.3.5/js/dataTables.bootstrap5.js +122 -0
  85. ledger/static/ledger/libs/datatables/2.3.5/js/dataTables.js +14127 -0
  86. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/css/columnControl.bootstrap5.css +516 -0
  87. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/css/columnControl.dataTables.css +529 -0
  88. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/js/columnControl.bootstrap5.js +73 -0
  89. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/js/dataTables.columnControl.js +3090 -0
  90. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/css/fixedHeader.bootstrap5.css +20 -0
  91. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/js/dataTables.fixedHeader.js +1203 -0
  92. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/js/fixedHeader.bootstrap5.js +59 -0
  93. ledger/tasks.py +157 -146
  94. ledger/templates/ledger/base.html +59 -21
  95. ledger/templates/ledger/bundles/aa-ledger-css.html +3 -0
  96. ledger/templates/ledger/bundles/aa-ledger-js.html +3 -0
  97. ledger/templates/ledger/bundles/view-alliance-ledger-js.html +14 -0
  98. ledger/templates/ledger/bundles/view-character-ledger-js.html +15 -0
  99. ledger/templates/ledger/bundles/view-character-planetary-css.html +3 -0
  100. ledger/templates/ledger/bundles/view-character-planetary-js.html +4 -0
  101. ledger/templates/ledger/bundles/view-corporation-ledger-js.html +15 -0
  102. ledger/templates/ledger/partials/modal/confirm.html +0 -1
  103. ledger/templates/ledger/partials/modal/request-accept-delete-alliance.html +38 -0
  104. ledger/templates/ledger/partials/modal/request-accept-delete-character.html +38 -0
  105. ledger/templates/ledger/partials/modal/request-accept-delete-corporation.html +38 -0
  106. ledger/templates/ledger/partials/modal/request-accept-switch-notification.html +38 -0
  107. ledger/templates/ledger/partials/modal/request-view-alliance-details.html +26 -0
  108. ledger/templates/ledger/partials/modal/request-view-character-details.html +26 -0
  109. ledger/templates/ledger/partials/modal/request-view-corporation-details.html +26 -0
  110. ledger/templates/ledger/partials/modal/request-view-extractor.html +32 -0
  111. ledger/templates/ledger/partials/modal/request-view-factory.html +31 -0
  112. ledger/templates/ledger/partials/{menu → navigation}/administration.html +8 -0
  113. ledger/templates/ledger/partials/{menu → navigation}/navigation.html +2 -2
  114. ledger/templates/ledger/partials/{administration → view-alliance-administration}/alliance_corporations.html +3 -3
  115. ledger/templates/ledger/partials/view-alliance-administration/dashboard.html +81 -0
  116. ledger/templates/ledger/partials/view-alliance-ledger/alliance-billboard.html +25 -0
  117. ledger/templates/ledger/partials/view-alliance-ledger/alliance-ledger-details.html +21 -0
  118. ledger/templates/ledger/partials/view-alliance-ledger/alliance-table.html +24 -0
  119. ledger/templates/ledger/partials/view-alliance-ledger/information/daily.html +18 -0
  120. ledger/templates/ledger/partials/view-alliance-ledger/information/hourly.html +18 -0
  121. ledger/templates/ledger/partials/view-alliance-ledger/information/summary.html +19 -0
  122. ledger/templates/ledger/partials/{administration → view-character-administration}/character.html +1 -9
  123. ledger/templates/ledger/partials/{administration → view-character-administration}/dashboard.html +0 -34
  124. ledger/templates/ledger/partials/view-character-ledger/character-billboard.html +25 -0
  125. ledger/templates/ledger/partials/view-character-ledger/character-ledger-details.html +21 -0
  126. ledger/templates/ledger/partials/view-character-ledger/character-table.html +25 -0
  127. ledger/templates/ledger/partials/view-character-ledger/information/daily.html +18 -0
  128. ledger/templates/ledger/partials/view-character-ledger/information/hourly.html +18 -0
  129. ledger/templates/ledger/partials/view-character-ledger/information/summary.html +19 -0
  130. ledger/templates/ledger/partials/view-character-planetary/extractor-table.html +24 -0
  131. ledger/templates/ledger/partials/view-character-planetary/factory-table.html +24 -0
  132. ledger/templates/ledger/partials/view-character-planetary/planetary-table.html +22 -0
  133. ledger/templates/ledger/partials/view-character-planetary/storage-table.html +23 -0
  134. ledger/templates/ledger/partials/{administration → view-corporation-administration}/corporation.html +5 -13
  135. ledger/templates/ledger/partials/{administration → view-corporation-administration}/corporation_characters.html +1 -1
  136. ledger/templates/ledger/partials/view-corporation-administration/dashboard.html +81 -0
  137. ledger/templates/ledger/partials/view-corporation-ledger/corporation-billboard.html +25 -0
  138. ledger/templates/ledger/partials/view-corporation-ledger/corporation-ledger-details.html +21 -0
  139. ledger/templates/ledger/partials/view-corporation-ledger/corporation-table.html +26 -0
  140. ledger/templates/ledger/partials/view-corporation-ledger/information/daily.html +18 -0
  141. ledger/templates/ledger/partials/view-corporation-ledger/information/hourly.html +18 -0
  142. ledger/templates/ledger/partials/view-corporation-ledger/information/summary.html +19 -0
  143. ledger/templates/ledger/view-administration.html +62 -0
  144. ledger/templates/ledger/view-alliance-administration.html +49 -0
  145. ledger/templates/ledger/view-alliance-ledger.html +72 -0
  146. ledger/templates/ledger/view-alliance-overview.html +131 -0
  147. ledger/templates/ledger/view-character-administration.html +42 -0
  148. ledger/templates/ledger/view-character-ledger.html +73 -0
  149. ledger/templates/ledger/view-character-overview.html +135 -0
  150. ledger/templates/ledger/view-character-planetary-overview.html +135 -0
  151. ledger/templates/ledger/view-character-planetary.html +73 -0
  152. ledger/templates/ledger/view-corporation-administration.html +42 -0
  153. ledger/templates/ledger/view-corporation-ledger.html +73 -0
  154. ledger/templates/ledger/view-corporation-overview.html +131 -0
  155. ledger/templatetags/ledger.py +3 -5
  156. ledger/tests/__init__.py +187 -0
  157. ledger/tests/test_admin.py +164 -68
  158. ledger/tests/test_auth_hook.py +31 -13
  159. ledger/tests/test_decarators.py +14 -79
  160. ledger/tests/test_discord_installed.py +0 -1
  161. ledger/tests/test_helpers/test_ledger_data.py +19 -0
  162. ledger/tests/test_managers/test_character_audit_manager.py +111 -69
  163. ledger/tests/test_managers/test_character_journal_manager.py +48 -208
  164. ledger/tests/test_managers/test_character_mining_manager.py +37 -16
  165. ledger/tests/test_managers/test_corporation_division_manager.py +66 -28
  166. ledger/tests/test_managers/test_corporation_journal_manager.py +39 -42
  167. ledger/tests/test_managers/test_general_manager.py +78 -18
  168. ledger/tests/test_managers/test_planetary_manager.py +73 -32
  169. ledger/tests/test_models/test_characteraudit.py +58 -74
  170. ledger/tests/test_models/test_characterminingledger.py +20 -26
  171. ledger/tests/test_models/test_characterwalletjournal.py +10 -33
  172. ledger/tests/test_models/test_corporationaudit.py +41 -35
  173. ledger/tests/test_models/test_corporationwalletjournal.py +35 -32
  174. ledger/tests/test_models/test_general.py +44 -11
  175. ledger/tests/test_models/test_planetary.py +14 -80
  176. ledger/tests/test_templatetags.py +2 -7
  177. ledger/tests/test_views/corporation/test_add_corp.py +16 -35
  178. ledger/tests/test_views/corporation/test_delete_corporation.py +66 -42
  179. ledger/tests/test_views/test_access.py +512 -545
  180. ledger/tests/test_views/test_add_ally.py +57 -46
  181. ledger/tests/test_views/test_add_char.py +21 -33
  182. ledger/tests/test_views/test_delete_character.py +24 -21
  183. ledger/tests/testdata/README_ESI_STUB.md +430 -0
  184. ledger/tests/testdata/esi_stub_openapi.py +511 -0
  185. ledger/tests/testdata/integrations/__init__.py +0 -0
  186. ledger/tests/testdata/{load_eveuniverse.py → integrations/eveuniverse.py} +0 -1
  187. ledger/tests/testdata/integrations/planetary.py +13 -0
  188. ledger/tests/testdata/json/factory.json +281 -0
  189. ledger/tests/testdata/json/inactive.json +281 -0
  190. ledger/tests/testdata/json/pins.json +175 -272
  191. ledger/tests/testdata/json/route.json +95 -528
  192. ledger/tests/testdata/test_esi_stub.py +468 -0
  193. ledger/tests/testdata/utils.py +601 -0
  194. ledger/thirdparty/charlink_hook.py +60 -30
  195. ledger/urls.py +0 -135
  196. ledger/views/alliance/add_ally.py +2 -4
  197. ledger/views/alliance/alliance_ledger.py +64 -147
  198. ledger/views/character/add_char.py +8 -10
  199. ledger/views/character/character_ledger.py +60 -126
  200. ledger/views/character/planetary.py +5 -98
  201. ledger/views/corporation/add_corp.py +10 -12
  202. ledger/views/corporation/corporation_ledger.py +65 -327
  203. ledger/views/index.py +92 -30
  204. aa_ledger-1.0.3.dist-info/RECORD +0 -236
  205. ledger/api/api_helper/planetary_helper.py +0 -107
  206. ledger/api/ledger/__init__.py +0 -7
  207. ledger/api/ledger/planetary.py +0 -231
  208. ledger/helpers/alliance.py +0 -317
  209. ledger/helpers/character.py +0 -251
  210. ledger/helpers/core.py +0 -665
  211. ledger/helpers/corporation.py +0 -427
  212. ledger/helpers/data_exporter.py +0 -452
  213. ledger/static/ledger/js/planetary-confirm.js +0 -66
  214. ledger/static/ledger/js/planetary.js +0 -143
  215. ledger/templates/ledger/admin.html +0 -43
  216. ledger/templates/ledger/allyledger/admin/alliance_administration.html +0 -46
  217. ledger/templates/ledger/allyledger/admin/alliance_overview.html +0 -108
  218. ledger/templates/ledger/allyledger/alliance_ledger.html +0 -86
  219. ledger/templates/ledger/bundles/character-ledger-bundles.html +0 -66
  220. ledger/templates/ledger/bundles/corporation-ledger-bundles.html +0 -75
  221. ledger/templates/ledger/bundles/ledger-bundles.html +0 -23
  222. ledger/templates/ledger/bundles/ledger-css.html +0 -3
  223. ledger/templates/ledger/bundles/planetary-bundles.html +0 -50
  224. ledger/templates/ledger/bundles/table-css.html +0 -3
  225. ledger/templates/ledger/charledger/admin/character_administration.html +0 -39
  226. ledger/templates/ledger/charledger/admin/character_overview.html +0 -106
  227. ledger/templates/ledger/charledger/character_ledger.html +0 -94
  228. ledger/templates/ledger/charledger/planetary/admin/planetary_overview.html +0 -123
  229. ledger/templates/ledger/charledger/planetary/planetary_ledger.html +0 -54
  230. ledger/templates/ledger/corpledger/admin/corporation_administration.html +0 -39
  231. ledger/templates/ledger/corpledger/admin/corporation_overview.html +0 -108
  232. ledger/templates/ledger/corpledger/corporation_ledger.html +0 -129
  233. ledger/templates/ledger/data-export.html +0 -78
  234. ledger/templates/ledger/error.html +0 -31
  235. ledger/templates/ledger/partials/form/error-message.html +0 -1
  236. ledger/templates/ledger/partials/information/daily.html +0 -56
  237. ledger/templates/ledger/partials/information/day.html +0 -48
  238. ledger/templates/ledger/partials/information/error.html +0 -8
  239. ledger/templates/ledger/partials/information/hourly.html +0 -53
  240. ledger/templates/ledger/partials/information/summary.html +0 -88
  241. ledger/templates/ledger/partials/information/view_character_content.html +0 -35
  242. ledger/templates/ledger/partials/modal/switchalarm_confirm.html +0 -39
  243. ledger/templates/ledger/partials/modal/view_extractor.html +0 -48
  244. ledger/templates/ledger/partials/modal/view_factory.html +0 -123
  245. ledger/templates/ledger/partials/table/char-ledger.html +0 -85
  246. ledger/templates/ledger/partials/table/corp-ledger.html +0 -66
  247. ledger/templates/ledger/partials/table/planetary.html +0 -18
  248. ledger/templates/ledger/partials/thirdparty/billboard.html +0 -22
  249. ledger/templates/ledger/partials/view/card.html +0 -160
  250. ledger/templates/ledger/permission.html +0 -2
  251. ledger/tests/test_helpers/test_billboard.py +0 -11
  252. ledger/tests/test_helpers/test_data_exporter.py +0 -207
  253. ledger/tests/test_tasks.py +0 -282
  254. ledger/tests/test_view_helpers/test_core.py +0 -47
  255. ledger/tests/test_views/corporation/test_corporation.py +0 -267
  256. ledger/tests/test_views/test_planetary.py +0 -137
  257. ledger/tests/testdata/esi_stub.py +0 -109
  258. ledger/tests/testdata/esi_stub_migration.py +0 -80
  259. ledger/tests/testdata/generate_characteraudit.py +0 -106
  260. ledger/tests/testdata/generate_corporationaudit.py +0 -74
  261. ledger/tests/testdata/generate_events.py +0 -31
  262. ledger/tests/testdata/generate_miningledger.py +0 -13
  263. ledger/tests/testdata/generate_planets.py +0 -48
  264. ledger/tests/testdata/generate_walletjournal.py +0 -42
  265. ledger/tests/testdata/json/czarno-pins.json +0 -240
  266. ledger/tests/testdata/json/czarno-routes.json +0 -165
  267. ledger/tests/testdata/json/pins2.json +0 -538
  268. {aa_ledger-1.0.3.dist-info → aa_ledger-2.0.0.dist-info}/licenses/LICENSE +0 -0
  269. /ledger/{tests/test_view_helpers → api/helpers}/__init__.py +0 -0
  270. /ledger/templates/ledger/bundles/{ally-administration-bundles.html → view-alliance-administration-js.html} +0 -0
  271. /ledger/templates/ledger/bundles/{char-administration-bundles.html → view-character-administration-js.html} +0 -0
  272. /ledger/templates/ledger/bundles/{corp-administration-bundles.html → view-corporation-administration-js.html} +0 -0
  273. /ledger/templates/ledger/partials/{administration → view-alliance-administration}/alliance.html +0 -0
  274. /ledger/tests/testdata/{esi.json → esi_test_data.json} +0 -0
  275. /ledger/tests/testdata/{allianceauth.json → integrations/allianceauth.json} +0 -0
  276. /ledger/tests/testdata/{load_allianceauth.py → integrations/allianceauth.py} +0 -0
  277. /ledger/tests/testdata/{eveentity.json → integrations/eveentity.json} +0 -0
  278. /ledger/tests/testdata/{load_eveentity.py → integrations/eveentity.py} +0 -0
  279. /ledger/tests/testdata/{eveuniverse.json → integrations/eveuniverse.json} +0 -0
  280. /ledger/tests/testdata/{planetary.json → integrations/planetary.json} +0 -0
@@ -5,8 +5,7 @@ from http import HTTPStatus
5
5
  from unittest.mock import Mock, patch
6
6
 
7
7
  # Django
8
- from django.contrib.sessions.middleware import SessionMiddleware
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
  # Alliance Auth
@@ -14,33 +13,22 @@ from allianceauth.eveonline.models import EveAllianceInfo
14
13
  from allianceauth.eveonline.providers import Alliance, ObjectNotFound
15
14
 
16
15
  # AA Ledger
17
- from ledger.tests.testdata.generate_corporationaudit import (
18
- create_user_from_evecharacter,
16
+ from ledger.tests import LedgerTestCase
17
+ from ledger.tests.testdata.utils import (
18
+ add_new_permission_to_user,
19
19
  )
20
- from ledger.tests.testdata.load_allianceauth import load_allianceauth
21
- from ledger.tests.testdata.load_eveuniverse import load_eveuniverse
22
- from ledger.views.alliance.add_ally import add_ally
23
20
 
24
21
  MODULE_PATH = "ledger.views.alliance.add_ally"
25
22
 
26
23
 
27
24
  @patch(MODULE_PATH + ".messages")
28
25
  @override_settings(CELERY_ALWAYS_EAGER=True, CELERY_EAGER_PROPAGATES_EXCEPTIONS=True)
29
- class TestAddAllyView(TestCase):
26
+ class TestAddAllyView(LedgerTestCase):
27
+ """Test Add Ally View."""
28
+
30
29
  @classmethod
31
30
  def setUpClass(cls):
32
31
  super().setUpClass()
33
- load_allianceauth()
34
- load_eveuniverse()
35
-
36
- cls.factory = RequestFactory()
37
- cls.user, cls.character_ownership = create_user_from_evecharacter(
38
- 1001,
39
- permissions=[
40
- "ledger.basic_access",
41
- "ledger.advanced_access",
42
- ],
43
- )
44
32
  cls.alliance = Alliance(
45
33
  id=3005,
46
34
  name="Test Alliance",
@@ -50,22 +38,24 @@ class TestAddAllyView(TestCase):
50
38
  faction_id=None,
51
39
  )
52
40
 
53
- def _add_alliance(self, user, token):
54
- request = self.factory.get(reverse("ledger:add_ally"))
55
- request.user = user
56
- request.token = token
57
- middleware = SessionMiddleware(Mock())
58
- middleware.process_request(request)
59
- orig_view = add_ally.__wrapped__.__wrapped__.__wrapped__
60
- return orig_view(request, token)
61
-
62
41
  def test_add_ally_already_exist(self, mock_messages):
63
- # given
64
- user = self.user
65
- token = user.token_set.get(character_id=1001)
66
- # when
67
- response = self._add_alliance(user, token)
68
- # then
42
+ """
43
+ Test adding an ally that already exists in the system.
44
+
45
+ This test ensures that when an ally that already exists in the system is
46
+ added again, the system correctly identifies it and provides appropriate
47
+ feedback to the user without attempting to create a duplicate entry.
48
+
49
+ ## Results: Redirects to alliance ledger with info message.
50
+ """
51
+ # Test Data
52
+ self.user = add_new_permission_to_user(self.user, "ledger.advanced_access")
53
+ token = self.user.token_set.get(character_id=1001)
54
+
55
+ # Test Action
56
+ response = self._add_alliance(self.user, token)
57
+
58
+ # Expected Results
69
59
  self.assertEqual(response.status_code, HTTPStatus.FOUND)
70
60
  self.assertEqual(response.url, reverse("ledger:alliance_ledger", args=[3001]))
71
61
  self.assertEqual(mock_messages.info.call_count, 1)
@@ -76,7 +66,17 @@ class TestAddAllyView(TestCase):
76
66
  def test_add_ally_does_not_exist(
77
67
  self, mock_get, mock_get_or_create, mock_provider, mock_messages
78
68
  ):
79
- # given
69
+ """
70
+ Test adding an ally that does not exist in the system.
71
+
72
+ This test verifies that when an ally that does not exist in the system is
73
+ added, the system successfully creates a new entry and provides appropriate
74
+ feedback to the user.
75
+
76
+ ## Results: Ally is added successfully.
77
+ """
78
+ # Test Data
79
+ self.user = add_new_permission_to_user(self.user, "ledger.advanced_access")
80
80
  mock_get.side_effect = EveAllianceInfo.DoesNotExist
81
81
  mock_provider.get_alliance.return_value = self.alliance
82
82
 
@@ -87,11 +87,12 @@ class TestAddAllyView(TestCase):
87
87
  mock_ally.alliance_ticker = "T.E.S.T"
88
88
  mock_ally.executor_corp_id = 2001
89
89
  mock_get_or_create.return_value = (mock_ally, True)
90
- user = self.user
91
- token = user.token_set.get(character_id=1001)
92
- # when
93
- response = self._add_alliance(user, token)
94
- # then
90
+ token = self.user.token_set.get(character_id=1001)
91
+
92
+ # Test Action
93
+ response = self._add_alliance(self.user, token)
94
+
95
+ # Expected Results
95
96
  self.assertEqual(response.status_code, HTTPStatus.FOUND)
96
97
  self.assertEqual(response.url, reverse("ledger:alliance_ledger", args=[3005]))
97
98
  self.assertEqual(mock_messages.success.call_count, 1)
@@ -105,15 +106,25 @@ class TestAddAllyView(TestCase):
105
106
  def test_add_ally_does_not_exist_object_not_found(
106
107
  self, mock_get, mock_get_or_create, mock_provider, mock_messages
107
108
  ):
108
- # given
109
+ """
110
+ Test adding an ally that does not exist and is not found by the provider.
111
+
112
+ This test ensures that when an ally that does not exist in the system is
113
+ attempted to be added but is not found by the external provider, the system
114
+
115
+ ## Results: Redirects to alliance ledger with warning message.
116
+ """
117
+ # Test Data
118
+ self.user = add_new_permission_to_user(self.user, "ledger.advanced_access")
109
119
  mock_get.side_effect = EveAllianceInfo.DoesNotExist
110
120
  mock_provider.get_alliance.side_effect = ObjectNotFound(3001, "alliance")
111
121
 
112
- user = self.user
113
- token = user.token_set.get(character_id=1001)
114
- # when
115
- response = self._add_alliance(user, token)
116
- # then
122
+ token = self.user.token_set.get(character_id=1001)
123
+
124
+ # Test Action
125
+ response = self._add_alliance(self.user, token)
126
+
127
+ # Expected Results
117
128
  self.assertEqual(response.status_code, HTTPStatus.FOUND)
118
129
  self.assertEqual(response.url, reverse("ledger:alliance_ledger", args=[3001]))
119
130
  self.assertEqual(mock_messages.warning.call_count, 1)
@@ -2,21 +2,15 @@
2
2
 
3
3
  # Standard Library
4
4
  from http import HTTPStatus
5
- from unittest.mock import Mock, patch
5
+ from unittest.mock import patch
6
6
 
7
7
  # Django
8
- from django.contrib.sessions.middleware import SessionMiddleware
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.characteraudit import CharacterAudit
14
- from ledger.tests.testdata.generate_characteraudit import (
15
- create_user_from_evecharacter_with_access,
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.character.add_char import add_char
12
+ from ledger.models.characteraudit import CharacterOwner
13
+ from ledger.tests import LedgerTestCase
20
14
 
21
15
  MODULE_PATH = "ledger.views.character.add_char"
22
16
 
@@ -24,38 +18,32 @@ MODULE_PATH = "ledger.views.character.add_char"
24
18
  @patch(MODULE_PATH + ".messages")
25
19
  @patch(MODULE_PATH + ".tasks")
26
20
  @override_settings(CELERY_ALWAYS_EAGER=True, CELERY_EAGER_PROPAGATES_EXCEPTIONS=True)
27
- class TestAddCharView(TestCase):
21
+ class TestAddCharView(LedgerTestCase):
28
22
  @classmethod
29
23
  def setUpClass(cls):
30
24
  super().setUpClass()
31
- load_allianceauth()
32
- load_eveuniverse()
33
25
 
34
- cls.factory = RequestFactory()
35
- cls.user, cls.character_ownership = create_user_from_evecharacter_with_access(
36
- 1001
37
- )
26
+ def test_add_char(self, mock_tasks, mock_messages):
27
+ """
28
+ Test adding a character that does not exist in the system.
38
29
 
39
- def _add_character(self, user, token):
40
- request = self.factory.get(reverse("ledger:add_char"))
41
- request.user = user
42
- request.token = token
43
- middleware = SessionMiddleware(Mock())
44
- middleware.process_request(request)
45
- orig_view = add_char.__wrapped__.__wrapped__.__wrapped__
46
- return orig_view(request, token)
30
+ This test verifies that when a character that does not exist in the system is
31
+ added, the system successfully creates a new entry and provides appropriate
32
+ feedback to the user.
47
33
 
48
- def test_add_char(self, mock_tasks, mock_messages):
49
- # given
50
- user = self.user
51
- token = user.token_set.get(character_id=1001)
52
- # when
53
- response = self._add_character(user, token)
54
- # then
34
+ ## Results: Character is added successfully.
35
+ """
36
+ # Test Data
37
+ token = self.user.token_set.get(character_id=1001)
38
+
39
+ # Test Action
40
+ response = self._add_character(self.user, token)
41
+
42
+ # Expected Results
55
43
  self.assertEqual(response.status_code, HTTPStatus.FOUND)
56
44
  self.assertEqual(response.url, reverse("ledger:character_ledger", args=[1001]))
57
45
  self.assertTrue(mock_tasks.update_character.apply_async.called)
58
46
  self.assertTrue(mock_messages.info.called)
59
47
  self.assertTrue(
60
- CharacterAudit.objects.filter(eve_character__character_id=1001).exists()
48
+ CharacterOwner.objects.filter(eve_character__character_id=1001).exists()
61
49
  )
@@ -5,40 +5,34 @@ import json
5
5
  from http import HTTPStatus
6
6
 
7
7
  # Django
8
- from django.test import RequestFactory, TestCase
9
8
  from django.urls import reverse
10
9
 
11
10
  # AA Ledger
12
- from ledger.tests.testdata.generate_characteraudit import (
13
- add_characteraudit_character_to_user,
14
- create_user_from_evecharacter_with_access,
11
+ from ledger.tests import LedgerTestCase
12
+ from ledger.tests.testdata.utils import (
13
+ create_owner_from_user,
15
14
  )
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
15
  from ledger.views.character.character_ledger import character_delete
21
16
 
22
17
  MODULE_PATH = "ledger.views.character.character_ledger"
23
18
 
24
19
 
25
- class TestDeleteCharacterView(TestCase):
20
+ class TestDeleteCharacterView(LedgerTestCase):
26
21
  @classmethod
27
22
  def setUpClass(cls):
28
23
  super().setUpClass()
29
- load_allianceauth()
30
- load_eveuniverse()
31
-
32
- cls.factory = RequestFactory()
33
- cls.user, cls.character_ownership = create_user_from_evecharacter_with_access(
34
- 1001
35
- )
36
- cls.audit = add_characteraudit_character_to_user(cls.user, 1001)
37
- cls.no_audit_user, cls.character_ownership = (
38
- create_user_from_evecharacter_with_access(1002)
39
- )
24
+ cls.audit = create_owner_from_user(cls.user, owner_type="character")
40
25
 
41
26
  def test_delete_character(self):
27
+ """
28
+ Test deleting a character that the user has permission to delete.
29
+
30
+ This test verifies that when a user with the appropriate permissions
31
+ attempts to delete a character they own, the system successfully deletes
32
+ the character and provides appropriate feedback.
33
+
34
+ ## Results: Character is deleted successfully.
35
+ """
42
36
  character_id = self.audit.eve_character.character_id
43
37
 
44
38
  request = self.factory.post(reverse("ledger:delete_char", args=[character_id]))
@@ -53,8 +47,17 @@ class TestDeleteCharacterView(TestCase):
53
47
  self.assertEqual(response_data["message"], "Gneuten successfully deleted")
54
48
 
55
49
  def test_delete_character_no_permission(self):
50
+ """
51
+ Test deleting a character that the user does not have permission to delete.
52
+
53
+ This test verifies that when a user without the appropriate permissions
54
+ attempts to delete a character they do not own, the system prevents the
55
+ deletion and provides an appropriate error message.
56
+
57
+ ## Results: Permission Denied error is returned.
58
+ """
56
59
  request = self.factory.post(reverse("ledger:delete_char", args=[1001]))
57
- request.user = self.no_audit_user
60
+ request.user = self.user2
58
61
 
59
62
  response = character_delete(request, character_id=1001)
60
63