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
@@ -1,46 +1,36 @@
1
- # Standard Library
2
- from unittest.mock import PropertyMock, patch
3
-
4
1
  # Django
5
- from django.test import RequestFactory, TestCase
2
+ from django.test import TestCase
6
3
  from django.utils import timezone
7
4
 
8
5
  # AA Ledger
9
- from ledger.models.characteraudit import CharacterAudit, CharacterUpdateStatus
10
- from ledger.models.general import _NeedsUpdate
11
- from ledger.tests.testdata.generate_characteraudit import (
12
- add_characteraudit_character_to_user,
6
+ from ledger.models.characteraudit import (
7
+ CharacterOwner,
8
+ CharacterUpdateSection,
9
+ CharacterUpdateStatus,
10
+ )
11
+ from ledger.models.helpers.update_manager import UpdateStatus
12
+ from ledger.tests import LedgerTestCase
13
+ from ledger.tests.testdata.utils import (
14
+ create_owner_from_user,
13
15
  create_update_status,
14
- create_user_from_evecharacter_with_access,
15
16
  )
16
- from ledger.tests.testdata.load_allianceauth import load_allianceauth
17
- from ledger.tests.testdata.load_eveentity import load_eveentity
18
- from ledger.tests.testdata.load_eveuniverse import load_eveuniverse
19
17
 
20
18
  MODULE_PATH = "ledger.models.characteraudit"
21
19
 
22
20
 
23
- class TestCharacterWalletJournalModel(TestCase):
21
+ class TestCharacterWalletJournalModel(LedgerTestCase):
24
22
  @classmethod
25
23
  def setUpClass(cls):
26
24
  super().setUpClass()
27
- load_allianceauth()
28
- load_eveuniverse()
29
- load_eveentity()
30
25
 
31
- cls.user, cls.character_ownership = create_user_from_evecharacter_with_access(
32
- 1001,
33
- )
34
- cls.audit = add_characteraudit_character_to_user(
35
- cls.user, cls.character_ownership.character.character_id
36
- )
37
- sections = CharacterAudit.UpdateSection.get_sections()
26
+ cls.owner = create_owner_from_user(cls.user, owner_type="character")
27
+ sections = CharacterUpdateSection.get_sections()
38
28
  for section in sections:
39
29
  create_update_status(
40
- cls.audit,
30
+ owner=cls.owner,
41
31
  section=section,
42
- is_success=True,
43
32
  error_message="",
33
+ is_success=True,
44
34
  has_token_error=False,
45
35
  last_run_at=timezone.now(),
46
36
  last_run_finished_at=timezone.now(),
@@ -48,21 +38,27 @@ class TestCharacterWalletJournalModel(TestCase):
48
38
  last_update_finished_at=timezone.now(),
49
39
  )
50
40
  cls.update_status_wallet = CharacterUpdateStatus.objects.get(
51
- character=cls.audit,
52
- section=CharacterAudit.UpdateSection.WALLET_JOURNAL,
41
+ owner=cls.owner,
42
+ section=CharacterUpdateSection.WALLET_JOURNAL,
53
43
  )
54
44
  cls.update_status_mining_ledger = CharacterUpdateStatus.objects.get(
55
- character=cls.audit,
56
- section=CharacterAudit.UpdateSection.MINING_LEDGER,
45
+ owner=cls.owner,
46
+ section=CharacterUpdateSection.MINING_LEDGER,
57
47
  )
58
48
 
59
49
  def test_str(self):
60
- excepted_str = CharacterAudit.objects.get(id=self.audit.id)
61
- self.assertEqual(self.audit, excepted_str)
50
+ excepted_str = CharacterOwner.objects.get(id=self.owner.id)
51
+ self.assertEqual(self.owner, excepted_str)
62
52
 
63
53
  def test_get_esi_scopes(self):
54
+ """
55
+ Test retrieval of ESI scopes for CharacterOwner.
56
+
57
+ ### Expected Result
58
+ - Correct list of ESI scopes is returned.
59
+ """
64
60
  self.assertEqual(
65
- self.audit.get_esi_scopes(),
61
+ self.owner.get_esi_scopes(),
66
62
  [
67
63
  # Mining Ledger
68
64
  "esi-industry.read_character_mining.v1",
@@ -75,77 +71,65 @@ class TestCharacterWalletJournalModel(TestCase):
75
71
  )
76
72
 
77
73
  def test_get_status_states(self):
74
+ """
75
+ Test various states of get_status property.
76
+
77
+ ### Expected Results:
78
+ - OK
79
+ - DISABLED
80
+ - TOKEN_ERROR
81
+ - ERROR
82
+ - INCOMPLETE
83
+ """
84
+ # Test Data - OK
78
85
  update_status = self.update_status_wallet
79
- audit = self.audit
86
+ audit = self.owner
80
87
 
88
+ # Expected Result
81
89
  self.assertEqual(
82
- self.audit.get_status,
83
- CharacterAudit.UpdateStatus.OK,
90
+ self.owner.get_status,
91
+ UpdateStatus.OK,
84
92
  )
85
93
 
94
+ # Test Data - DISABLED
86
95
  audit.active = False
87
96
  audit.save()
88
97
 
98
+ # Expected Result
89
99
  self.assertEqual(
90
- self.audit.get_status,
91
- CharacterAudit.UpdateStatus.DISABLED,
100
+ self.owner.get_status,
101
+ UpdateStatus.DISABLED,
92
102
  )
93
103
 
104
+ # Test Data - TOKEN_ERROR
94
105
  audit.active = True
95
106
  audit.save()
96
107
  update_status.is_success = False
97
108
  update_status.has_token_error = True
98
109
  update_status.save()
99
110
 
111
+ # Expected Result
100
112
  self.assertEqual(
101
- self.audit.get_status,
102
- CharacterAudit.UpdateStatus.TOKEN_ERROR,
113
+ self.owner.get_status,
114
+ UpdateStatus.TOKEN_ERROR,
103
115
  )
104
116
 
117
+ # Test Data - ERROR
105
118
  audit.active = True
106
119
  audit.save()
107
120
  update_status.is_success = False
108
121
  update_status.has_token_error = False
109
122
  update_status.save()
110
123
 
124
+ # Expected Result
111
125
  self.assertEqual(
112
- self.audit.get_status,
113
- CharacterAudit.UpdateStatus.ERROR,
126
+ self.owner.get_status,
127
+ UpdateStatus.ERROR,
114
128
  )
115
-
116
129
  update_status.delete()
117
130
 
131
+ # Test Data - INCOMPLETE
118
132
  self.assertEqual(
119
- self.audit.get_status,
120
- CharacterAudit.UpdateStatus.INCOMPLETE,
121
- )
122
-
123
- def test_reset_has_token_error(self):
124
- audit = self.audit
125
-
126
- self.assertEqual(
127
- audit.reset_has_token_error(),
128
- False,
129
- )
130
-
131
- self.update_status_mining_ledger.has_token_error = True
132
- self.update_status_mining_ledger.save()
133
-
134
- self.assertEqual(
135
- audit.reset_has_token_error(),
136
- True,
137
- )
138
-
139
- def test_reset_update_status(self):
140
- # given
141
- audit = self.audit
142
- # when
143
- update_status = audit.reset_update_status("mining_ledger")
144
- # then
145
- self.assertEqual(
146
- update_status,
147
- CharacterUpdateStatus.objects.get(
148
- character=audit,
149
- section="mining_ledger",
150
- ),
133
+ self.owner.get_status,
134
+ UpdateStatus.INCOMPLETE,
151
135
  )
@@ -3,7 +3,6 @@ from types import SimpleNamespace
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
  # Alliance Auth (External Libs)
@@ -11,32 +10,20 @@ from eveuniverse.models import EveMarketPrice, EveSolarSystem, EveType
11
10
 
12
11
  # AA Ledger
13
12
  from ledger.models.characteraudit import CharacterMiningLedger
14
- from ledger.tests.testdata.generate_characteraudit import (
15
- add_characteraudit_character_to_user,
16
- create_user_from_evecharacter_with_access,
13
+ from ledger.tests import LedgerTestCase
14
+ from ledger.tests.testdata.utils import (
15
+ create_miningledger,
16
+ create_owner_from_user,
17
17
  )
18
- from ledger.tests.testdata.generate_miningledger import create_miningledger
19
- from ledger.tests.testdata.load_allianceauth import load_allianceauth
20
- from ledger.tests.testdata.load_eveentity import load_eveentity
21
- from ledger.tests.testdata.load_eveuniverse import load_eveuniverse
22
18
 
23
19
  MODULE_PATH = "ledger.models.characteraudit"
24
20
 
25
21
 
26
- class TestCharacterMiningLedgerModel(TestCase):
22
+ class TestCharacterMiningLedgerModel(LedgerTestCase):
27
23
  @classmethod
28
24
  def setUpClass(cls):
29
25
  super().setUpClass()
30
- load_allianceauth()
31
- load_eveuniverse()
32
- load_eveentity()
33
-
34
- cls.user, cls.character_ownership = create_user_from_evecharacter_with_access(
35
- 1001,
36
- )
37
- cls.audit = add_characteraudit_character_to_user(
38
- cls.user, cls.character_ownership.character.character_id
39
- )
26
+ cls.audit = create_owner_from_user(cls.user, owner_type="character")
40
27
  cls.eve_type = EveType.objects.get(id=17425)
41
28
  cls.eve_system = EveSolarSystem.objects.get(id=30004783)
42
29
 
@@ -79,30 +66,37 @@ class TestCharacterMiningLedgerModel(TestCase):
79
66
  )
80
67
 
81
68
  def test_str(self):
69
+ """Test string representation of CharacterMiningLedger."""
82
70
  self.assertEqual(str(self.miningentry), f"{self.audit} 1")
83
71
 
84
72
  def test_create_primary_key(self):
85
- # when
73
+ """Test creation of primary key for CharacterMiningLedger."""
74
+ # Test Data
86
75
  primary_key = CharacterMiningLedger.create_primary_key(
87
76
  self.audit.eve_character.character_id, self.miningrecord
88
77
  )
89
- # then
78
+ # Expected Result
90
79
  self.assertEqual(primary_key, "20240101-1-1001-1")
91
80
 
92
81
  def test_get_npc_price(self):
93
- # when
82
+ """Test retrieval of NPC price for CharacterMiningLedger."""
83
+ # Test Data
94
84
  npc_price = self.miningentry2.get_npc_price()
95
- # then
85
+
86
+ # Expected Result
96
87
  self.assertIsNotNone(npc_price)
97
88
  self.assertEqual(npc_price, 100)
98
89
 
99
90
  @patch(MODULE_PATH + ".cache.get", return_value=False)
100
91
  @patch(MODULE_PATH + ".EveMarketPrice.objects.update_from_esi")
101
92
  def test_update_evemarket_price(self, mock_market_price, mock_cache_get):
102
- # given
93
+ """Test updating Eve market price for CharacterMiningLedger."""
94
+ # Test Data
103
95
  mock_market_price.return_value = 1337
104
- # when
96
+
97
+ # Test Action
105
98
  updated = self.miningentry.update_evemarket_price()
106
- # then
99
+
100
+ # Expected Result
107
101
  self.assertTrue(mock_market_price.called)
108
102
  self.assertEqual(updated, 1337)
@@ -1,51 +1,26 @@
1
- # Standard Library
2
- from unittest.mock import PropertyMock, patch
3
-
4
1
  # Django
5
- from django.contrib.auth.models import Permission
6
- from django.test import TestCase
7
2
  from django.utils import timezone
8
3
 
9
- # Alliance Auth
10
- from allianceauth.eveonline.models import EveCharacter
11
-
12
4
  # AA Ledger
13
- from ledger.models.corporationaudit import (
14
- CorporationAudit,
15
- )
16
5
  from ledger.models.general import EveEntity
17
- from ledger.tests.testdata.generate_characteraudit import (
18
- add_characteraudit_character_to_user,
19
- create_user_from_evecharacter_with_access,
20
- )
21
- from ledger.tests.testdata.generate_walletjournal import (
6
+ from ledger.tests import LedgerTestCase
7
+ from ledger.tests.testdata.utils import (
8
+ create_owner_from_user,
22
9
  create_wallet_journal_entry,
23
10
  )
24
- from ledger.tests.testdata.load_allianceauth import load_allianceauth
25
- from ledger.tests.testdata.load_eveentity import load_eveentity
26
- from ledger.tests.testdata.load_eveuniverse import load_eveuniverse
27
11
 
28
- MODULE_PATH = "ledger.models.corporationaudit"
12
+ MODULE_PATH = "ledger.models.characteraudit"
29
13
 
30
14
 
31
- class TestCharacterWalletJournalModel(TestCase):
15
+ class TestCharacterWalletJournalModel(LedgerTestCase):
32
16
  @classmethod
33
17
  def setUpClass(cls):
34
18
  super().setUpClass()
35
- load_allianceauth()
36
- load_eveuniverse()
37
- load_eveentity()
38
-
39
- cls.user, cls.character_ownership = create_user_from_evecharacter_with_access(
40
- 1001,
41
- )
42
- cls.audit = add_characteraudit_character_to_user(
43
- cls.user, cls.character_ownership.character.character_id
44
- )
19
+ cls.audit = create_owner_from_user(cls.user, owner_type="character")
45
20
  cls.eve_character_first_party = EveEntity.objects.get(eve_id=1001)
46
21
  cls.eve_character_second_party = EveEntity.objects.get(eve_id=1002)
47
22
  cls.journal_entry = create_wallet_journal_entry(
48
- journal_type="character",
23
+ owner_type="character",
49
24
  character=cls.audit,
50
25
  entry_id=1,
51
26
  amount=1000,
@@ -67,12 +42,14 @@ class TestCharacterWalletJournalModel(TestCase):
67
42
  )
68
43
 
69
44
  def test_str(self):
45
+ """Test the string representation of CharacterWalletJournalEntry."""
70
46
  self.assertEqual(
71
47
  str(self.journal_entry),
72
48
  f"Character Wallet Journal: RefType: test - {self.eve_character_first_party.name} -> {self.eve_character_second_party.name}: 1000 ISK",
73
49
  )
74
50
 
75
- def test_get_visible_should_get_empty_list(self):
51
+ def test_get_visible_should_get_list_with_entries(self):
52
+ """Test get_visible method with entries."""
76
53
  self.assertEqual(
77
54
  list(self.journal_entry.get_visible(self.user)), [self.journal_entry]
78
55
  )
@@ -1,43 +1,36 @@
1
- # Django
2
- from django.contrib.auth.models import Permission
3
- from django.test import TestCase
4
-
5
- # Alliance Auth
6
- from allianceauth.tests.auth_utils import AuthUtils
7
-
8
1
  # AA Ledger
9
- from ledger.models.corporationaudit import CorporationAudit
10
- from ledger.tests.testdata.generate_corporationaudit import (
11
- create_corporationaudit_from_user,
12
- create_user_from_evecharacter,
2
+ from ledger.models.corporationaudit import CorporationOwner
3
+ from ledger.tests import LedgerTestCase
4
+ from ledger.tests.testdata.utils import (
5
+ add_new_permission_to_user,
6
+ create_owner_from_user,
13
7
  )
14
- from ledger.tests.testdata.load_allianceauth import load_allianceauth
15
8
 
16
9
  MODULE_PATH = "ledger.models.corporationaudit"
17
10
 
18
11
 
19
- class TestCorporationAuditModel(TestCase):
12
+ class TestCorporationAuditModel(LedgerTestCase):
20
13
  @classmethod
21
14
  def setUpClass(cls):
22
15
  super().setUpClass()
23
- load_allianceauth()
24
16
 
25
- cls.user, cls.character_ownership = create_user_from_evecharacter(
26
- 1001, permissions=["ledger.basic_access"]
27
- )
28
- cls.user2, cls.character_ownership2 = create_user_from_evecharacter(
29
- 1002, permissions=["ledger.basic_access"]
30
- )
31
- cls.audit = create_corporationaudit_from_user(cls.user)
32
- cls.audit2 = create_corporationaudit_from_user(cls.user2)
17
+ cls.owner = create_owner_from_user(user=cls.user, owner_type="corporation")
18
+ cls.owner2 = create_owner_from_user(user=cls.user2, owner_type="corporation")
33
19
 
34
20
  def test_str(self):
35
- expected_str = CorporationAudit.objects.get(id=self.audit.pk)
36
- self.assertEqual(self.audit, expected_str)
21
+ """Test the string representation of CorporationOwner."""
22
+ expected_str = CorporationOwner.objects.get(id=self.owner.pk)
23
+ self.assertEqual(self.owner, expected_str)
37
24
 
38
25
  def test_get_esi_scopes(self):
26
+ """
27
+ Test the ESI scopes for CorporationOwner.
28
+
29
+ ### Expected Result
30
+ - Correct list of ESI scopes is returned.
31
+ """
39
32
  self.assertEqual(
40
- self.audit.get_esi_scopes(),
33
+ self.owner.get_esi_scopes(),
41
34
  [
42
35
  # General
43
36
  "esi-search.search_structures.v1",
@@ -53,16 +46,29 @@ class TestCorporationAuditModel(TestCase):
53
46
  ],
54
47
  )
55
48
 
56
- def test_access_no_perms(self):
57
- corporation = CorporationAudit.objects.visible_to(self.user)
58
- self.assertNotIn(self.audit, corporation)
59
- self.assertNotIn(self.audit2, corporation)
49
+ def test_visible_to_should_not_include_any_corporations(self):
50
+ """
51
+ Test access permissions for CorporationOwner without permissions.
52
+
53
+ ### Expected Result
54
+ - User without permissions cannot access any corporations.
55
+ """
56
+ corporation = CorporationOwner.objects.visible_to(self.user)
57
+ self.assertNotIn(self.owner, corporation)
58
+ self.assertNotIn(self.owner2, corporation)
59
+
60
+ def test_visible_to_should_include_own_corporation_only(self):
61
+ """
62
+ Test access permissions for CorporationOwner with own corporation permission.
60
63
 
61
- def test_access_perms_own_corp(self):
62
- self.user = AuthUtils.add_permission_to_user_by_name(
63
- "ledger.advanced_access", self.user
64
+ ### Expected Result
65
+ - User with own corporation permission can access their own corporation only.
66
+ - User can not access other corporations.
67
+ """
68
+ self.user = add_new_permission_to_user(
69
+ user=self.user, permission_name="ledger.advanced_access"
64
70
  )
65
71
  self.user.refresh_from_db()
66
- corporation = CorporationAudit.objects.visible_to(self.user)
67
- self.assertIn(self.audit, corporation)
68
- self.assertNotIn(self.audit2, corporation)
72
+ corporation = CorporationOwner.objects.visible_to(self.user)
73
+ self.assertIn(self.owner, corporation)
74
+ self.assertNotIn(self.owner2, corporation)
@@ -1,54 +1,33 @@
1
- # Standard Library
2
- from unittest.mock import PropertyMock, patch
3
-
4
1
  # Django
5
- from django.contrib.auth.models import Permission
6
- from django.test import TestCase
7
2
  from django.utils import timezone
8
3
 
9
- # Alliance Auth
10
- from allianceauth.eveonline.models import EveCharacter
11
-
12
4
  # AA Ledger
13
- from ledger.models.corporationaudit import (
14
- CorporationAudit,
15
- )
16
5
  from ledger.models.general import EveEntity
17
- from ledger.tests.testdata.generate_characteraudit import create_character
18
- from ledger.tests.testdata.generate_corporationaudit import (
19
- create_corporationaudit_from_user,
20
- create_user_from_evecharacter,
21
- )
22
- from ledger.tests.testdata.generate_walletjournal import (
6
+ from ledger.tests import LedgerTestCase
7
+ from ledger.tests.testdata.utils import (
8
+ add_new_permission_to_user,
23
9
  create_division,
10
+ create_owner_from_user,
24
11
  create_wallet_journal_entry,
25
12
  )
26
- from ledger.tests.testdata.load_allianceauth import load_allianceauth
27
- from ledger.tests.testdata.load_eveentity import load_eveentity
28
- from ledger.tests.testdata.load_eveuniverse import load_eveuniverse
29
13
 
30
14
  MODULE_PATH = "ledger.models.corporationaudit"
31
15
 
32
16
 
33
- class TestCorporationWalletJournalModel(TestCase):
17
+ class TestCorporationWalletJournalModel(LedgerTestCase):
34
18
  @classmethod
35
19
  def setUpClass(cls):
36
20
  super().setUpClass()
37
- load_allianceauth()
38
- load_eveuniverse()
39
- load_eveentity()
40
-
41
- cls.user, cls.character_ownership = create_user_from_evecharacter(
42
- 1001, permissions=["ledger.basic_access"]
43
- )
44
- cls.audit = create_corporationaudit_from_user(cls.user)
21
+ cls.owner = create_owner_from_user(cls.user, owner_type="corporation")
45
22
  cls.division = create_division(
46
- corporation=cls.audit, name="MEGA KONTO", balance=1000000, division_id=1
23
+ corporation=cls.owner, name="MEGA KONTO", balance=1000000, division_id=1
47
24
  )
25
+
48
26
  cls.eve_character_first_party = EveEntity.objects.get(eve_id=1001)
49
27
  cls.eve_character_second_party = EveEntity.objects.get(eve_id=1002)
28
+
50
29
  cls.journal_entry = create_wallet_journal_entry(
51
- journal_type="corporation",
30
+ owner_type="corporation",
52
31
  division=cls.division,
53
32
  entry_id=1,
54
33
  amount=1000,
@@ -70,10 +49,34 @@ class TestCorporationWalletJournalModel(TestCase):
70
49
  )
71
50
 
72
51
  def test_str(self):
52
+ """Test the string representation of CorporationWalletJournalEntry."""
73
53
  self.assertEqual(
74
54
  str(self.journal_entry),
75
55
  f"Corporation Wallet Journal: RefType: test - {self.eve_character_first_party.name} -> {self.eve_character_second_party.name}: 1000 ISK",
76
56
  )
77
57
 
78
- def test_get_visible_should_get_empty_list(self):
58
+ def test_get_visible_with_permission(self):
59
+ """
60
+ Test get_visible method with permissions.
61
+
62
+ ### Expected Result
63
+ - User with permissions can access journal entries.
64
+ """
65
+ # Test Data
66
+ self.user = add_new_permission_to_user(
67
+ user=self.user, permission_name="ledger.advanced_access"
68
+ )
69
+
70
+ # Expected Result
71
+ self.assertEqual(
72
+ list(self.journal_entry.get_visible(self.user)), [self.journal_entry]
73
+ )
74
+
75
+ def test_get_visible_without_permission(self):
76
+ """
77
+ Test get_visible method without permissions.
78
+
79
+ ### Expected Result
80
+ - User without permissions cannot access any journal entries.
81
+ """
79
82
  self.assertEqual(list(self.journal_entry.get_visible(self.user)), [])