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.
Files changed (280) hide show
  1. {aa_ledger-1.0.4.dist-info → aa_ledger-2.0.0.dist-info}/METADATA +5 -6
  2. aa_ledger-2.0.0.dist-info/RECORD +267 -0
  3. ledger/__init__.py +2 -2
  4. ledger/admin.py +23 -18
  5. ledger/api/__init__.py +23 -7
  6. ledger/api/{ledger/admin.py → admin.py} +25 -31
  7. ledger/api/alliance.py +755 -0
  8. ledger/api/character.py +786 -0
  9. ledger/api/corporation.py +1141 -0
  10. ledger/api/{helpers.py → helpers/core.py} +33 -33
  11. ledger/api/helpers/icons.py +372 -0
  12. ledger/api/helpers/planetary_helper.py +354 -0
  13. ledger/api/planetary.py +354 -0
  14. ledger/api/schema.py +240 -15
  15. ledger/app_settings.py +11 -27
  16. ledger/auth_hooks.py +2 -2
  17. ledger/constants.py +50 -177
  18. ledger/decorators.py +2 -46
  19. ledger/forms.py +133 -39
  20. ledger/helpers/billboard.py +194 -144
  21. ledger/helpers/cache.py +105 -0
  22. ledger/helpers/discord.py +2 -4
  23. ledger/helpers/eveonline.py +160 -0
  24. ledger/helpers/ledger_data.py +23 -0
  25. ledger/helpers/ref_type.py +53 -78
  26. ledger/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  27. ledger/locale/cs_CZ/LC_MESSAGES/django.po +349 -193
  28. ledger/locale/de/LC_MESSAGES/django.mo +0 -0
  29. ledger/locale/de/LC_MESSAGES/django.po +528 -379
  30. ledger/locale/django.pot +721 -546
  31. ledger/locale/es/LC_MESSAGES/django.mo +0 -0
  32. ledger/locale/es/LC_MESSAGES/django.po +349 -194
  33. ledger/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
  34. ledger/locale/fr_FR/LC_MESSAGES/django.po +349 -193
  35. ledger/locale/it_IT/LC_MESSAGES/django.mo +0 -0
  36. ledger/locale/it_IT/LC_MESSAGES/django.po +349 -193
  37. ledger/locale/ja/LC_MESSAGES/django.mo +0 -0
  38. ledger/locale/ja/LC_MESSAGES/django.po +348 -193
  39. ledger/locale/ko_KR/LC_MESSAGES/django.mo +0 -0
  40. ledger/locale/ko_KR/LC_MESSAGES/django.po +349 -193
  41. ledger/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
  42. ledger/locale/nl_NL/LC_MESSAGES/django.po +349 -193
  43. ledger/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  44. ledger/locale/pl_PL/LC_MESSAGES/django.po +350 -193
  45. ledger/locale/ru/LC_MESSAGES/django.mo +0 -0
  46. ledger/locale/ru/LC_MESSAGES/django.po +348 -193
  47. ledger/locale/sk/LC_MESSAGES/django.mo +0 -0
  48. ledger/locale/sk/LC_MESSAGES/django.po +348 -193
  49. ledger/locale/uk/LC_MESSAGES/django.mo +0 -0
  50. ledger/locale/uk/LC_MESSAGES/django.po +348 -193
  51. ledger/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  52. ledger/locale/zh_Hans/LC_MESSAGES/django.po +348 -193
  53. ledger/managers/character_audit_manager.py +28 -20
  54. ledger/managers/character_journal_manager.py +185 -357
  55. ledger/managers/character_mining_manager.py +52 -26
  56. ledger/managers/character_planetary_manager.py +178 -136
  57. ledger/managers/corporation_audit_manager.py +36 -27
  58. ledger/managers/corporation_journal_manager.py +92 -56
  59. ledger/managers/general_manager.py +8 -7
  60. ledger/migrations/0018_remove_characterplanet_ledger_char_planet__58a5b6_idx_and_more.py +44 -0
  61. ledger/migrations/0019_rename_characteraudit_characterowner_and_more.py +48 -0
  62. ledger/models/__init__.py +5 -11
  63. ledger/models/characteraudit.py +101 -109
  64. ledger/models/corporationaudit.py +94 -49
  65. ledger/models/general.py +105 -211
  66. ledger/models/helpers/update_manager.py +302 -0
  67. ledger/models/planetary.py +60 -205
  68. ledger/providers.py +101 -0
  69. ledger/static/ledger/css/{ledger.css → aa-ledger.css} +54 -28
  70. ledger/static/ledger/js/aa-ledger.js +124 -0
  71. ledger/static/ledger/js/charts.js +25 -1
  72. ledger/static/ledger/js/view-alliance-ledger.js +383 -0
  73. ledger/static/ledger/js/view-character-ledger.js +388 -0
  74. ledger/static/ledger/js/view-corporation-ledger.js +402 -0
  75. ledger/static/ledger/js/view-planetary.js +492 -0
  76. ledger/static/ledger/libs/amCharts/5.14.4/js/flow.js +2 -0
  77. ledger/static/ledger/libs/amCharts/5.14.4/js/index.js +2 -0
  78. ledger/static/ledger/libs/amCharts/5.14.4/js/percent.js +2 -0
  79. ledger/static/ledger/libs/amCharts/5.14.4/js/themes/Animated.js +2 -0
  80. ledger/static/ledger/libs/amCharts/5.14.4/js/themes/Dark.js +2 -0
  81. ledger/static/ledger/libs/amCharts/5.14.4/js/xy.js +2 -0
  82. ledger/static/ledger/libs/datatables/2.3.5/css/dataTables.bootstrap5.css +610 -0
  83. ledger/static/ledger/libs/datatables/2.3.5/js/dataTables.bootstrap5.js +122 -0
  84. ledger/static/ledger/libs/datatables/2.3.5/js/dataTables.js +14127 -0
  85. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/css/columnControl.bootstrap5.css +516 -0
  86. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/css/columnControl.dataTables.css +529 -0
  87. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/js/columnControl.bootstrap5.js +73 -0
  88. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/js/dataTables.columnControl.js +3090 -0
  89. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/css/fixedHeader.bootstrap5.css +20 -0
  90. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/js/dataTables.fixedHeader.js +1203 -0
  91. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/js/fixedHeader.bootstrap5.js +59 -0
  92. ledger/tasks.py +157 -141
  93. ledger/templates/ledger/base.html +59 -21
  94. ledger/templates/ledger/bundles/aa-ledger-css.html +3 -0
  95. ledger/templates/ledger/bundles/aa-ledger-js.html +3 -0
  96. ledger/templates/ledger/bundles/view-alliance-ledger-js.html +14 -0
  97. ledger/templates/ledger/bundles/view-character-ledger-js.html +15 -0
  98. ledger/templates/ledger/bundles/view-character-planetary-css.html +3 -0
  99. ledger/templates/ledger/bundles/view-character-planetary-js.html +4 -0
  100. ledger/templates/ledger/bundles/view-corporation-ledger-js.html +15 -0
  101. ledger/templates/ledger/partials/modal/confirm.html +0 -1
  102. ledger/templates/ledger/partials/modal/request-accept-delete-alliance.html +38 -0
  103. ledger/templates/ledger/partials/modal/request-accept-delete-character.html +38 -0
  104. ledger/templates/ledger/partials/modal/request-accept-delete-corporation.html +38 -0
  105. ledger/templates/ledger/partials/modal/request-accept-switch-notification.html +38 -0
  106. ledger/templates/ledger/partials/modal/request-view-alliance-details.html +26 -0
  107. ledger/templates/ledger/partials/modal/request-view-character-details.html +26 -0
  108. ledger/templates/ledger/partials/modal/request-view-corporation-details.html +26 -0
  109. ledger/templates/ledger/partials/modal/request-view-extractor.html +32 -0
  110. ledger/templates/ledger/partials/modal/request-view-factory.html +31 -0
  111. ledger/templates/ledger/partials/{menu → navigation}/administration.html +8 -0
  112. ledger/templates/ledger/partials/{menu → navigation}/navigation.html +2 -2
  113. ledger/templates/ledger/partials/{administration → view-alliance-administration}/alliance_corporations.html +3 -3
  114. ledger/templates/ledger/partials/view-alliance-administration/dashboard.html +81 -0
  115. ledger/templates/ledger/partials/view-alliance-ledger/alliance-billboard.html +25 -0
  116. ledger/templates/ledger/partials/view-alliance-ledger/alliance-ledger-details.html +21 -0
  117. ledger/templates/ledger/partials/view-alliance-ledger/alliance-table.html +24 -0
  118. ledger/templates/ledger/partials/view-alliance-ledger/information/daily.html +18 -0
  119. ledger/templates/ledger/partials/view-alliance-ledger/information/hourly.html +18 -0
  120. ledger/templates/ledger/partials/view-alliance-ledger/information/summary.html +19 -0
  121. ledger/templates/ledger/partials/{administration → view-character-administration}/character.html +1 -9
  122. ledger/templates/ledger/partials/{administration → view-character-administration}/dashboard.html +0 -34
  123. ledger/templates/ledger/partials/view-character-ledger/character-billboard.html +25 -0
  124. ledger/templates/ledger/partials/view-character-ledger/character-ledger-details.html +21 -0
  125. ledger/templates/ledger/partials/view-character-ledger/character-table.html +25 -0
  126. ledger/templates/ledger/partials/view-character-ledger/information/daily.html +18 -0
  127. ledger/templates/ledger/partials/view-character-ledger/information/hourly.html +18 -0
  128. ledger/templates/ledger/partials/view-character-ledger/information/summary.html +19 -0
  129. ledger/templates/ledger/partials/view-character-planetary/extractor-table.html +24 -0
  130. ledger/templates/ledger/partials/view-character-planetary/factory-table.html +24 -0
  131. ledger/templates/ledger/partials/view-character-planetary/planetary-table.html +22 -0
  132. ledger/templates/ledger/partials/view-character-planetary/storage-table.html +23 -0
  133. ledger/templates/ledger/partials/{administration → view-corporation-administration}/corporation.html +5 -13
  134. ledger/templates/ledger/partials/{administration → view-corporation-administration}/corporation_characters.html +1 -1
  135. ledger/templates/ledger/partials/view-corporation-administration/dashboard.html +81 -0
  136. ledger/templates/ledger/partials/view-corporation-ledger/corporation-billboard.html +25 -0
  137. ledger/templates/ledger/partials/view-corporation-ledger/corporation-ledger-details.html +21 -0
  138. ledger/templates/ledger/partials/view-corporation-ledger/corporation-table.html +26 -0
  139. ledger/templates/ledger/partials/view-corporation-ledger/information/daily.html +18 -0
  140. ledger/templates/ledger/partials/view-corporation-ledger/information/hourly.html +18 -0
  141. ledger/templates/ledger/partials/view-corporation-ledger/information/summary.html +19 -0
  142. ledger/templates/ledger/view-administration.html +62 -0
  143. ledger/templates/ledger/view-alliance-administration.html +49 -0
  144. ledger/templates/ledger/view-alliance-ledger.html +72 -0
  145. ledger/templates/ledger/view-alliance-overview.html +131 -0
  146. ledger/templates/ledger/view-character-administration.html +42 -0
  147. ledger/templates/ledger/view-character-ledger.html +73 -0
  148. ledger/templates/ledger/view-character-overview.html +135 -0
  149. ledger/templates/ledger/view-character-planetary-overview.html +135 -0
  150. ledger/templates/ledger/view-character-planetary.html +73 -0
  151. ledger/templates/ledger/view-corporation-administration.html +42 -0
  152. ledger/templates/ledger/view-corporation-ledger.html +73 -0
  153. ledger/templates/ledger/view-corporation-overview.html +131 -0
  154. ledger/templatetags/ledger.py +3 -5
  155. ledger/tests/__init__.py +187 -0
  156. ledger/tests/test_admin.py +164 -68
  157. ledger/tests/test_auth_hook.py +31 -13
  158. ledger/tests/test_decarators.py +14 -79
  159. ledger/tests/test_discord_installed.py +0 -1
  160. ledger/tests/test_helpers/test_ledger_data.py +19 -0
  161. ledger/tests/test_managers/test_character_audit_manager.py +111 -69
  162. ledger/tests/test_managers/test_character_journal_manager.py +48 -208
  163. ledger/tests/test_managers/test_character_mining_manager.py +37 -16
  164. ledger/tests/test_managers/test_corporation_division_manager.py +66 -28
  165. ledger/tests/test_managers/test_corporation_journal_manager.py +39 -42
  166. ledger/tests/test_managers/test_general_manager.py +78 -18
  167. ledger/tests/test_managers/test_planetary_manager.py +73 -32
  168. ledger/tests/test_models/test_characteraudit.py +58 -74
  169. ledger/tests/test_models/test_characterminingledger.py +20 -26
  170. ledger/tests/test_models/test_characterwalletjournal.py +10 -33
  171. ledger/tests/test_models/test_corporationaudit.py +41 -35
  172. ledger/tests/test_models/test_corporationwalletjournal.py +35 -32
  173. ledger/tests/test_models/test_general.py +44 -11
  174. ledger/tests/test_models/test_planetary.py +14 -80
  175. ledger/tests/test_templatetags.py +2 -7
  176. ledger/tests/test_views/corporation/test_add_corp.py +16 -35
  177. ledger/tests/test_views/corporation/test_delete_corporation.py +66 -42
  178. ledger/tests/test_views/test_access.py +512 -545
  179. ledger/tests/test_views/test_add_ally.py +57 -46
  180. ledger/tests/test_views/test_add_char.py +21 -33
  181. ledger/tests/test_views/test_delete_character.py +24 -21
  182. ledger/tests/testdata/README_ESI_STUB.md +430 -0
  183. ledger/tests/testdata/esi_stub_openapi.py +511 -0
  184. ledger/tests/testdata/integrations/__init__.py +0 -0
  185. ledger/tests/testdata/{load_eveuniverse.py → integrations/eveuniverse.py} +0 -1
  186. ledger/tests/testdata/integrations/planetary.py +13 -0
  187. ledger/tests/testdata/json/factory.json +281 -0
  188. ledger/tests/testdata/json/inactive.json +281 -0
  189. ledger/tests/testdata/json/pins.json +175 -272
  190. ledger/tests/testdata/json/route.json +95 -528
  191. ledger/tests/testdata/test_esi_stub.py +468 -0
  192. ledger/tests/testdata/utils.py +601 -0
  193. ledger/thirdparty/charlink_hook.py +60 -30
  194. ledger/urls.py +0 -135
  195. ledger/views/alliance/add_ally.py +2 -4
  196. ledger/views/alliance/alliance_ledger.py +64 -147
  197. ledger/views/character/add_char.py +8 -10
  198. ledger/views/character/character_ledger.py +60 -126
  199. ledger/views/character/planetary.py +5 -98
  200. ledger/views/corporation/add_corp.py +10 -12
  201. ledger/views/corporation/corporation_ledger.py +65 -327
  202. ledger/views/index.py +92 -30
  203. aa_ledger-1.0.4.dist-info/RECORD +0 -236
  204. ledger/api/api_helper/planetary_helper.py +0 -107
  205. ledger/api/ledger/__init__.py +0 -7
  206. ledger/api/ledger/planetary.py +0 -231
  207. ledger/helpers/alliance.py +0 -317
  208. ledger/helpers/character.py +0 -251
  209. ledger/helpers/core.py +0 -665
  210. ledger/helpers/corporation.py +0 -427
  211. ledger/helpers/data_exporter.py +0 -452
  212. ledger/static/ledger/js/planetary-confirm.js +0 -66
  213. ledger/static/ledger/js/planetary.js +0 -143
  214. ledger/templates/ledger/admin.html +0 -43
  215. ledger/templates/ledger/allyledger/admin/alliance_administration.html +0 -46
  216. ledger/templates/ledger/allyledger/admin/alliance_overview.html +0 -108
  217. ledger/templates/ledger/allyledger/alliance_ledger.html +0 -86
  218. ledger/templates/ledger/bundles/character-ledger-bundles.html +0 -66
  219. ledger/templates/ledger/bundles/corporation-ledger-bundles.html +0 -75
  220. ledger/templates/ledger/bundles/ledger-bundles.html +0 -23
  221. ledger/templates/ledger/bundles/ledger-css.html +0 -3
  222. ledger/templates/ledger/bundles/planetary-bundles.html +0 -50
  223. ledger/templates/ledger/bundles/table-css.html +0 -3
  224. ledger/templates/ledger/charledger/admin/character_administration.html +0 -39
  225. ledger/templates/ledger/charledger/admin/character_overview.html +0 -106
  226. ledger/templates/ledger/charledger/character_ledger.html +0 -94
  227. ledger/templates/ledger/charledger/planetary/admin/planetary_overview.html +0 -123
  228. ledger/templates/ledger/charledger/planetary/planetary_ledger.html +0 -54
  229. ledger/templates/ledger/corpledger/admin/corporation_administration.html +0 -39
  230. ledger/templates/ledger/corpledger/admin/corporation_overview.html +0 -108
  231. ledger/templates/ledger/corpledger/corporation_ledger.html +0 -129
  232. ledger/templates/ledger/data-export.html +0 -78
  233. ledger/templates/ledger/error.html +0 -31
  234. ledger/templates/ledger/partials/form/error-message.html +0 -1
  235. ledger/templates/ledger/partials/information/daily.html +0 -56
  236. ledger/templates/ledger/partials/information/day.html +0 -48
  237. ledger/templates/ledger/partials/information/error.html +0 -8
  238. ledger/templates/ledger/partials/information/hourly.html +0 -53
  239. ledger/templates/ledger/partials/information/summary.html +0 -88
  240. ledger/templates/ledger/partials/information/view_character_content.html +0 -35
  241. ledger/templates/ledger/partials/modal/switchalarm_confirm.html +0 -39
  242. ledger/templates/ledger/partials/modal/view_extractor.html +0 -48
  243. ledger/templates/ledger/partials/modal/view_factory.html +0 -123
  244. ledger/templates/ledger/partials/table/char-ledger.html +0 -85
  245. ledger/templates/ledger/partials/table/corp-ledger.html +0 -66
  246. ledger/templates/ledger/partials/table/planetary.html +0 -18
  247. ledger/templates/ledger/partials/thirdparty/billboard.html +0 -22
  248. ledger/templates/ledger/partials/view/card.html +0 -160
  249. ledger/templates/ledger/permission.html +0 -2
  250. ledger/tests/test_helpers/test_billboard.py +0 -11
  251. ledger/tests/test_helpers/test_data_exporter.py +0 -207
  252. ledger/tests/test_tasks.py +0 -282
  253. ledger/tests/test_view_helpers/test_core.py +0 -47
  254. ledger/tests/test_views/corporation/test_corporation.py +0 -267
  255. ledger/tests/test_views/test_planetary.py +0 -137
  256. ledger/tests/testdata/esi_stub.py +0 -109
  257. ledger/tests/testdata/esi_stub_migration.py +0 -80
  258. ledger/tests/testdata/generate_characteraudit.py +0 -106
  259. ledger/tests/testdata/generate_corporationaudit.py +0 -74
  260. ledger/tests/testdata/generate_events.py +0 -31
  261. ledger/tests/testdata/generate_miningledger.py +0 -13
  262. ledger/tests/testdata/generate_planets.py +0 -48
  263. ledger/tests/testdata/generate_walletjournal.py +0 -42
  264. ledger/tests/testdata/json/czarno-pins.json +0 -240
  265. ledger/tests/testdata/json/czarno-routes.json +0 -165
  266. ledger/tests/testdata/json/pins2.json +0 -538
  267. {aa_ledger-1.0.4.dist-info → aa_ledger-2.0.0.dist-info}/WHEEL +0 -0
  268. {aa_ledger-1.0.4.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