orionis 0.253.0__py3-none-any.whl → 0.266.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 (397) hide show
  1. orionis/application.py +6 -0
  2. orionis/framework.py +1 -1
  3. orionis/luminate/{application.py → _application.py} +21 -19
  4. orionis/luminate/{container → _container}/container.py +4 -4
  5. orionis/luminate/{container → _container}/container_integrity.py +2 -2
  6. orionis/luminate/{container → _container}/resolve.py +2 -2
  7. orionis/luminate/{contracts → _contracts}/application.py +2 -2
  8. orionis/luminate/{contracts → _contracts}/console/task_manager.py +1 -1
  9. orionis/luminate/{contracts → _contracts}/facades/commands/scheduler_facade.py +1 -1
  10. orionis/luminate/{contracts → _contracts}/facades/facade.py +4 -3
  11. orionis/luminate/{contracts → _contracts}/foundation/providers/service_providers_bootstrapper.py +2 -2
  12. orionis/luminate/{contracts → _contracts}/providers/service_provider.py +1 -1
  13. orionis/luminate/{facades → _facades}/app_facade.py +2 -2
  14. orionis/luminate/{facades → _facades}/commands/commands_facade.py +3 -3
  15. orionis/luminate/{facades → _facades}/commands/scheduler_facade.py +3 -3
  16. orionis/luminate/{facades → _facades}/config/config_facade.py +3 -3
  17. orionis/luminate/{facades → _facades}/environment/environment_facade.py +3 -3
  18. orionis/luminate/{facades → _facades}/files/path_facade.py +4 -4
  19. orionis/luminate/{facades → _facades}/log/log_facade.py +2 -2
  20. orionis/luminate/{foundation → _foundation}/console/command_bootstrapper.py +2 -2
  21. orionis/luminate/{foundation → _foundation}/environment/environment_bootstrapper.py +3 -3
  22. orionis/luminate/{foundation → _foundation/foundation}/config/config_bootstrapper.py +3 -3
  23. orionis/luminate/{foundation → _foundation}/providers/service_providers_bootstrapper.py +4 -4
  24. orionis/luminate/{providers → _providers}/commands/reactor_commands_service_provider.py +7 -7
  25. orionis/luminate/{providers → _providers}/commands/scheduler_provider.py +3 -3
  26. orionis/luminate/{providers → _providers}/config/config_service_provider.py +3 -3
  27. orionis/luminate/{providers → _providers}/environment/environment__service_provider.py +4 -4
  28. orionis/luminate/_providers/files/paths_provider.py +21 -0
  29. orionis/luminate/{providers → _providers}/log/log_service_provider.py +5 -5
  30. orionis/luminate/{providers → _providers}/service_provider.py +2 -2
  31. orionis/luminate/{services_ → _services}/commands/reactor_commands_service.py +3 -3
  32. orionis/luminate/{services_ → _services}/commands/scheduler_service.py +1 -1
  33. orionis/luminate/{services_ → _services}/config/config_service.py +1 -1
  34. orionis/luminate/{services_ → _services}/log/log_service.py +1 -1
  35. orionis/luminate/app.py +19 -0
  36. orionis/luminate/console/base/command.py +1 -1
  37. orionis/luminate/console/command_filter.py +1 -1
  38. orionis/luminate/console/commands/help.py +1 -1
  39. orionis/luminate/console/commands/schedule_work.py +2 -2
  40. orionis/luminate/console/dumper/dump_die.py +1 -1
  41. orionis/luminate/console/kernel.py +1 -1
  42. orionis/luminate/console/output/console.py +3 -3
  43. orionis/luminate/console/output/executor.py +1 -1
  44. orionis/luminate/console/output/progress_bar.py +1 -1
  45. orionis/luminate/console/parser.py +1 -1
  46. orionis/luminate/{config → foundation/config}/app/entities/app.py +44 -43
  47. orionis/luminate/{config → foundation/config}/auth/entities/auth.py +9 -1
  48. orionis/luminate/foundation/config/cache/entities/cache.py +74 -0
  49. orionis/luminate/foundation/config/cache/entities/file.py +46 -0
  50. orionis/luminate/foundation/config/cache/entities/stores.py +46 -0
  51. orionis/luminate/{contracts/config → foundation/config/contracts}/config.py +8 -12
  52. orionis/luminate/foundation/config/cors/entities/cors.py +129 -0
  53. orionis/luminate/foundation/config/database/entities/connections.py +89 -0
  54. orionis/luminate/foundation/config/database/entities/database.py +62 -0
  55. orionis/luminate/foundation/config/database/entities/mysql.py +270 -0
  56. orionis/luminate/foundation/config/database/entities/oracle.py +227 -0
  57. orionis/luminate/foundation/config/database/entities/pgsql.py +189 -0
  58. orionis/luminate/foundation/config/database/entities/sqlite.py +178 -0
  59. orionis/luminate/foundation/config/database/enums/mysql_charsets.py +92 -0
  60. orionis/luminate/foundation/config/database/enums/mysql_collations.py +53 -0
  61. orionis/luminate/foundation/config/database/enums/mysql_engine.py +18 -0
  62. orionis/luminate/foundation/config/database/enums/oracle_encoding.py +44 -0
  63. orionis/luminate/foundation/config/database/enums/oracle_nencoding.py +31 -0
  64. orionis/luminate/foundation/config/database/enums/pgsql_charsets.py +90 -0
  65. orionis/luminate/foundation/config/database/enums/pgsql_collations.py +26 -0
  66. orionis/luminate/foundation/config/database/enums/pgsql_mode.py +24 -0
  67. orionis/luminate/foundation/config/database/enums/sqlite_foreign_key.py +12 -0
  68. orionis/luminate/foundation/config/database/enums/sqlite_journal.py +22 -0
  69. orionis/luminate/foundation/config/database/enums/sqlite_synchronous.py +16 -0
  70. orionis/luminate/foundation/config/filesystems/entitites/aws.py +134 -0
  71. orionis/luminate/foundation/config/filesystems/entitites/disks.py +68 -0
  72. orionis/luminate/foundation/config/filesystems/entitites/filesystems.py +53 -0
  73. orionis/luminate/foundation/config/filesystems/entitites/local.py +39 -0
  74. orionis/luminate/foundation/config/filesystems/entitites/public.py +52 -0
  75. orionis/luminate/foundation/config/logging/entities/channels.py +115 -0
  76. orionis/luminate/foundation/config/logging/entities/chunked.py +128 -0
  77. orionis/luminate/foundation/config/logging/entities/daily.py +113 -0
  78. orionis/luminate/foundation/config/logging/entities/hourly.py +100 -0
  79. orionis/luminate/foundation/config/logging/entities/logging.py +51 -0
  80. orionis/luminate/foundation/config/logging/entities/monthly.py +100 -0
  81. orionis/luminate/foundation/config/logging/entities/stack.py +74 -0
  82. orionis/luminate/foundation/config/logging/entities/weekly.py +102 -0
  83. orionis/luminate/foundation/config/logging/enums/levels.py +21 -0
  84. orionis/luminate/foundation/config/mail/entities/file.py +41 -0
  85. orionis/luminate/foundation/config/mail/entities/mail.py +56 -0
  86. orionis/luminate/foundation/config/mail/entities/mailers.py +54 -0
  87. orionis/luminate/foundation/config/mail/entities/smtp.py +104 -0
  88. orionis/luminate/foundation/config/queue/entities/brokers.py +55 -0
  89. orionis/luminate/foundation/config/queue/entities/database.py +107 -0
  90. orionis/luminate/foundation/config/queue/entities/queue.py +47 -0
  91. orionis/luminate/foundation/config/queue/enums/strategy.py +15 -0
  92. orionis/luminate/foundation/config/roots/paths.py +446 -0
  93. orionis/luminate/foundation/config/session/entities/session.py +147 -0
  94. orionis/luminate/foundation/config/session/enums/same_site_policy.py +14 -0
  95. orionis/luminate/foundation/config/session/helpers/secret_key.py +16 -0
  96. orionis/luminate/foundation/config/startup.py +203 -0
  97. orionis/luminate/foundation/config/testing/entities/__init__.py +0 -0
  98. orionis/luminate/{config → foundation/config/testing}/entities/testing.py +36 -20
  99. orionis/luminate/foundation/config/testing/enums/__init__.py +0 -0
  100. orionis/luminate/foundation/config/testing/enums/test_mode.py +12 -0
  101. orionis/luminate/patterns/__init__.py +0 -4
  102. orionis/luminate/patterns/singleton/__init__.py +0 -10
  103. orionis/luminate/services/asynchrony/__init__.py +0 -0
  104. orionis/luminate/services/asynchrony/async_io.py +31 -0
  105. orionis/luminate/services/environment/__init__.py +0 -10
  106. orionis/luminate/services/environment/contracts/__init__.py +0 -5
  107. orionis/luminate/services/environment/contracts/env.py +0 -11
  108. orionis/luminate/services/environment/dot_env.py +87 -163
  109. orionis/luminate/services/environment/env.py +0 -11
  110. orionis/luminate/services/introspection/__init__.py +0 -0
  111. orionis/luminate/services/introspection/abstracts/__init__.py +0 -0
  112. orionis/luminate/services/introspection/abstracts/entities/__init__.py +0 -0
  113. orionis/luminate/services/introspection/abstracts/entities/abstract_class_attributes.py +37 -0
  114. orionis/luminate/{support → services}/introspection/abstracts/reflect_abstract.py +1 -1
  115. orionis/luminate/services/introspection/dependencies/__init__.py +0 -0
  116. orionis/luminate/services/introspection/dependencies/contracts/__init__.py +0 -0
  117. orionis/luminate/{support → services}/introspection/dependencies/contracts/reflect_dependencies.py +2 -2
  118. orionis/luminate/services/introspection/dependencies/entities/__init__.py +0 -0
  119. orionis/luminate/services/introspection/dependencies/entities/class_dependencies.py +41 -0
  120. orionis/luminate/services/introspection/dependencies/entities/method_dependencies.py +42 -0
  121. orionis/luminate/services/introspection/dependencies/entities/resolved_dependencies.py +49 -0
  122. orionis/luminate/{support → services}/introspection/dependencies/reflect_dependencies.py +4 -4
  123. orionis/luminate/services/parsers/__init__.py +0 -0
  124. orionis/luminate/services/parsers/contracts/__init__.py +0 -0
  125. orionis/luminate/{support/parsers/exception_parser.py → services/parsers/exception.py} +1 -1
  126. orionis/luminate/services/parsers/serializer.py +15 -0
  127. orionis/luminate/services/paths/__init__.py +0 -9
  128. orionis/luminate/services/paths/resolver.py +1 -1
  129. orionis/luminate/services/standard/__init__.py +0 -0
  130. orionis/luminate/services/standard/contracts/__init__.py +0 -0
  131. orionis/luminate/{support → services}/standard/std.py +1 -1
  132. orionis/luminate/services/system/__init__.py +0 -0
  133. orionis/luminate/services/system/contracts/__init__.py +0 -0
  134. orionis/luminate/services/system/contracts/imports.py +31 -0
  135. orionis/luminate/services/system/contracts/workers.py +18 -0
  136. orionis/luminate/services/system/imports.py +124 -0
  137. orionis/luminate/services/system/runtime_imports.py +70 -0
  138. orionis/luminate/services/{workers/maximum_workers.py → system/workers.py} +2 -1
  139. orionis/luminate/services/wrapper/__init__.py +0 -0
  140. orionis/luminate/services/wrapper/dicts/__init__.py +0 -0
  141. orionis/luminate/services/wrapper/dicts/dot_dict.py +115 -0
  142. orionis/luminate/support/introspection/__init__.py +0 -5
  143. orionis/luminate/support/introspection/container_integrity.py +2 -2
  144. orionis/luminate/support/introspection/instances/__init__.py +0 -5
  145. orionis/luminate/support/introspection/reflection.py +1 -1
  146. orionis/luminate/test/__init__.py +0 -23
  147. orionis/luminate/test/cases/test_async.py +41 -9
  148. orionis/luminate/test/cases/test_case.py +27 -13
  149. orionis/luminate/test/cases/test_sync.py +28 -6
  150. orionis/luminate/test/output/contracts/{test_std_out.py → dumper.py} +2 -1
  151. orionis/luminate/test/output/{test_std_out.py → dumper.py} +7 -4
  152. orionis/luminate/test/suites/__init__.py +0 -0
  153. orionis/luminate/test/suites/contracts/__init__.py +0 -0
  154. orionis/luminate/test/suites/contracts/test_suite.py +23 -0
  155. orionis/luminate/test/suites/test_suite.py +101 -0
  156. orionis/luminate/test/{core → suites}/test_unit.py +16 -8
  157. orionis/unittesting.py +43 -0
  158. {orionis-0.253.0.dist-info → orionis-0.266.0.dist-info}/METADATA +19 -3
  159. orionis-0.266.0.dist-info/RECORD +440 -0
  160. {orionis-0.253.0.dist-info → orionis-0.266.0.dist-info}/WHEEL +1 -1
  161. orionis-0.266.0.dist-info/entry_points.txt +2 -0
  162. orionis-0.266.0.dist-info/zip-safe +1 -0
  163. tests/example/test_example.py +1 -1
  164. tests/foundation/__init__.py +0 -0
  165. tests/foundation/config/__init__.py +0 -0
  166. tests/foundation/config/app/__init__.py +0 -0
  167. tests/foundation/config/app/test_app.py +140 -0
  168. tests/foundation/config/auth/__init__.py +0 -0
  169. tests/{config → foundation/config/auth}/test_auth.py +6 -3
  170. tests/foundation/config/cache/__init__.py +0 -0
  171. tests/foundation/config/cache/test_cache.py +98 -0
  172. tests/foundation/config/cache/test_cache_file.py +78 -0
  173. tests/foundation/config/cache/test_cache_stores.py +88 -0
  174. tests/foundation/config/cors/__init__.py +0 -0
  175. tests/foundation/config/cors/test_cors.py +121 -0
  176. tests/foundation/config/database/__init__.py +0 -0
  177. tests/foundation/config/database/test_database.py +108 -0
  178. tests/foundation/config/database/test_database_connections.py +129 -0
  179. tests/foundation/config/database/test_database_mysql.py +231 -0
  180. tests/foundation/config/database/test_database_oracle.py +204 -0
  181. tests/foundation/config/database/test_database_pgsql.py +187 -0
  182. tests/foundation/config/database/test_database_sqlite.py +153 -0
  183. tests/foundation/config/exceptions/__init__.py +0 -0
  184. tests/foundation/config/exceptions/test_exceptions_integrity.py +83 -0
  185. tests/foundation/config/filesystems/__init__.py +0 -0
  186. tests/foundation/config/filesystems/test_filesystems.py +110 -0
  187. tests/foundation/config/filesystems/test_filesystems_aws.py +133 -0
  188. tests/foundation/config/filesystems/test_filesystems_disks.py +114 -0
  189. tests/foundation/config/filesystems/test_filesystems_local.py +95 -0
  190. tests/foundation/config/filesystems/test_filesystems_public.py +120 -0
  191. tests/foundation/config/logging/__init__.py +0 -0
  192. tests/foundation/config/logging/test_logging.py +48 -0
  193. tests/foundation/config/logging/test_logging_channels.py +157 -0
  194. tests/foundation/config/logging/test_logging_chunked.py +166 -0
  195. tests/foundation/config/logging/test_logging_daily.py +153 -0
  196. tests/foundation/config/logging/test_logging_hourly.py +131 -0
  197. tests/foundation/config/logging/test_logging_monthly.py +133 -0
  198. tests/foundation/config/logging/test_logging_stack.py +124 -0
  199. tests/foundation/config/logging/test_logging_weekly.py +133 -0
  200. tests/foundation/config/mail/__init__.py +0 -0
  201. tests/foundation/config/mail/test_mail.py +73 -0
  202. tests/foundation/config/mail/test_mail_file.py +61 -0
  203. tests/foundation/config/mail/test_mail_mailers.py +58 -0
  204. tests/foundation/config/mail/test_mail_smtp.py +102 -0
  205. tests/foundation/config/queue/__init__.py +0 -0
  206. tests/foundation/config/queue/test_queue.py +58 -0
  207. tests/foundation/config/queue/test_queue_brokers.py +67 -0
  208. tests/foundation/config/queue/test_queue_database.py +95 -0
  209. tests/foundation/config/root/__init__.py +0 -0
  210. tests/foundation/config/root/test_root_paths.py +134 -0
  211. tests/foundation/config/session/__init__.py +0 -0
  212. tests/foundation/config/session/test_session.py +138 -0
  213. tests/foundation/config/startup/__init__.py +0 -0
  214. tests/foundation/config/startup/test_config_startup.py +134 -0
  215. tests/foundation/config/testing/__init__.py +0 -0
  216. tests/foundation/config/testing/test_testing.py +167 -0
  217. tests/patterns/singleton/test_singleton.py +2 -2
  218. tests/services/asynchrony/__init__.py +0 -0
  219. tests/{support/async_io/test_async_coroutine.py → services/asynchrony/test_async_io.py} +6 -5
  220. tests/services/environment/test_env.py +155 -33
  221. tests/services/inspection/__init__.py +0 -0
  222. tests/services/inspection/dependencies/__init__.py +0 -0
  223. tests/services/inspection/dependencies/mocks/__init__.py +0 -0
  224. tests/services/inspection/dependencies/mocks/mock_user.py +30 -0
  225. tests/services/inspection/dependencies/mocks/mock_user_controller.py +27 -0
  226. tests/services/inspection/dependencies/mocks/mock_users_permissions.py +41 -0
  227. tests/services/inspection/dependencies/test_reflect_dependencies.py +94 -0
  228. tests/services/parsers/__init__.py +0 -0
  229. tests/services/parsers/mocks/__init__.py +0 -0
  230. tests/services/parsers/mocks/mock_custom_error.py +15 -0
  231. tests/{support → services}/parsers/test_exception_parser.py +8 -8
  232. tests/services/path/__init__.py +0 -0
  233. tests/services/path/test_resolver.py +73 -0
  234. tests/services/standard/__init__.py +0 -0
  235. tests/services/standard/test_std.py +127 -0
  236. tests/services/wrapper/__init__.py +0 -0
  237. tests/services/wrapper/test_wrapper_doc_dict.py +129 -0
  238. tests/testing/__init__.py +0 -0
  239. tests/testing/test_testing_result.py +92 -0
  240. tests/testing/test_testing_unit.py +138 -0
  241. orionis/luminate/config/app/__init__.py +0 -10
  242. orionis/luminate/config/auth/__init__.py +0 -7
  243. orionis/luminate/config/cache/__init__.py +0 -9
  244. orionis/luminate/config/cache/entities/cache.py +0 -58
  245. orionis/luminate/config/cache/entities/file.py +0 -29
  246. orionis/luminate/config/cache/entities/stores.py +0 -35
  247. orionis/luminate/config/entities/cors.py +0 -58
  248. orionis/luminate/config/entities/database.py +0 -204
  249. orionis/luminate/config/entities/filesystems.py +0 -98
  250. orionis/luminate/config/entities/logging.py +0 -157
  251. orionis/luminate/config/entities/mail.py +0 -76
  252. orionis/luminate/config/entities/queue.py +0 -62
  253. orionis/luminate/config/entities/session.py +0 -58
  254. orionis/luminate/providers/files/paths_provider.py +0 -20
  255. orionis/luminate/services/workers/__init__.py +0 -10
  256. orionis/luminate/support/adapters/dot_dict.py +0 -29
  257. orionis/luminate/support/asynchrony/async_io.py +0 -40
  258. orionis/luminate/support/asynchrony/contracts/async_coroutine.py +0 -26
  259. orionis/luminate/support/introspection/abstracts/entities/abstract_class_attributes.py +0 -11
  260. orionis/luminate/support/introspection/dependencies/__init__.py +0 -5
  261. orionis/luminate/support/introspection/dependencies/entities/class_dependencies.py +0 -11
  262. orionis/luminate/support/introspection/dependencies/entities/method_dependencies.py +0 -11
  263. orionis/luminate/support/introspection/dependencies/entities/resolved_dependencies.py +0 -12
  264. orionis/luminate/support/paths/contracts/resolver.py +0 -67
  265. orionis/luminate/support/paths/resolver.py +0 -83
  266. orionis/luminate/test/core/contracts/test_suite.py +0 -30
  267. orionis/luminate/test/core/test_suite.py +0 -93
  268. orionis-0.253.0.dist-info/RECORD +0 -318
  269. orionis-0.253.0.dist-info/entry_points.txt +0 -2
  270. tests/config/test_app.py +0 -122
  271. tests/config/test_cache.py +0 -20
  272. tests/support/adapters/fakes/fake_dict.py +0 -15
  273. tests/support/adapters/test_doct_dict.py +0 -21
  274. tests/support/inspection/fakes/fake_reflect_dependencies.py +0 -25
  275. tests/support/inspection/test_reflect_dependencies.py +0 -67
  276. tests/support/parsers/fakes/fake_custom_error.py +0 -27
  277. tests/support/path/test_resolver.py +0 -33
  278. tests/support/standard/test_std.py +0 -62
  279. /orionis/{console.py → clinstall.py} +0 -0
  280. /orionis/luminate/{config → _container}/__init__.py +0 -0
  281. /orionis/luminate/{container → _container}/exception.py +0 -0
  282. /orionis/luminate/{container → _container}/lifetimes.py +0 -0
  283. /orionis/luminate/{config/app/entities → _contracts}/__init__.py +0 -0
  284. /orionis/luminate/{config/app/enums → _contracts/config}/__init__.py +0 -0
  285. /orionis/luminate/{config/contracts → _contracts/config}/config.py +0 -0
  286. /orionis/luminate/{config/auth/entities → _contracts/console}/__init__.py +0 -0
  287. /orionis/luminate/{config/cache/entities → _contracts/console/base}/__init__.py +0 -0
  288. /orionis/luminate/{contracts → _contracts}/console/base/command.py +0 -0
  289. /orionis/luminate/{contracts → _contracts}/console/command_filter.py +0 -0
  290. /orionis/luminate/{contracts → _contracts}/console/kernel.py +0 -0
  291. /orionis/luminate/{config/cache/enums → _contracts/console/output}/__init__.py +0 -0
  292. /orionis/luminate/{contracts → _contracts}/console/output/console.py +0 -0
  293. /orionis/luminate/{contracts → _contracts}/console/output/executor.py +0 -0
  294. /orionis/luminate/{contracts → _contracts}/console/output/progress_bar.py +0 -0
  295. /orionis/luminate/{contracts → _contracts}/console/parser.py +0 -0
  296. /orionis/luminate/{contracts → _contracts}/container/container.py +0 -0
  297. /orionis/luminate/{contracts → _contracts}/container/container_integrity.py +0 -0
  298. /orionis/luminate/{config/contracts → _contracts/facades}/__init__.py +0 -0
  299. /orionis/luminate/{config/exceptions → _contracts/facades/commands}/__init__.py +0 -0
  300. /orionis/luminate/{contracts → _contracts}/facades/commands/commands_facade.py +0 -0
  301. /orionis/luminate/{container → _contracts/facades/config}/__init__.py +0 -0
  302. /orionis/luminate/{contracts → _contracts}/facades/config/config_facade.py +0 -0
  303. /orionis/luminate/{contracts → _contracts/facades/environment}/__init__.py +0 -0
  304. /orionis/luminate/{contracts → _contracts}/facades/environment/environment_facade.py +0 -0
  305. /orionis/luminate/{contracts/config → _contracts/facades/files}/__init__.py +0 -0
  306. /orionis/luminate/{contracts → _contracts}/facades/files/path_facade.py +0 -0
  307. /orionis/luminate/{contracts/console → _contracts/facades/log}/__init__.py +0 -0
  308. /orionis/luminate/{contracts → _contracts}/facades/log/log_facade.py +0 -0
  309. /orionis/luminate/{contracts/console/base → _contracts/facades/tests}/__init__.py +0 -0
  310. /orionis/luminate/{contracts → _contracts}/facades/tests/tests_facade.py +0 -0
  311. /orionis/luminate/{contracts/console/output → _contracts/foundation}/__init__.py +0 -0
  312. /orionis/luminate/{contracts → _contracts}/foundation/bootstraper.py +0 -0
  313. /orionis/luminate/{contracts/facades → _contracts/foundation/config}/__init__.py +0 -0
  314. /orionis/luminate/{contracts → _contracts}/foundation/config/config_bootstrapper.py +0 -0
  315. /orionis/luminate/{contracts/facades/commands → _contracts/foundation/console}/__init__.py +0 -0
  316. /orionis/luminate/{contracts → _contracts}/foundation/console/command_bootstrapper.py +0 -0
  317. /orionis/luminate/{contracts/facades/config → _contracts/foundation/environment}/__init__.py +0 -0
  318. /orionis/luminate/{contracts → _contracts}/foundation/environment/environment_bootstrapper.py +0 -0
  319. /orionis/luminate/{contracts/facades/environment → _contracts/foundation/providers}/__init__.py +0 -0
  320. /orionis/luminate/{contracts/facades/files → _contracts/providers}/__init__.py +0 -0
  321. /orionis/luminate/{contracts/facades/log → _contracts/services}/__init__.py +0 -0
  322. /orionis/luminate/{contracts/facades/tests → _contracts/services/commands}/__init__.py +0 -0
  323. /orionis/luminate/{contracts → _contracts}/services/commands/reactor_commands_service.py +0 -0
  324. /orionis/luminate/{contracts → _contracts}/services/commands/schedule_service.py +0 -0
  325. /orionis/luminate/{contracts/foundation → _contracts/services/config}/__init__.py +0 -0
  326. /orionis/luminate/{contracts → _contracts}/services/config/config_service.py +0 -0
  327. /orionis/luminate/{contracts/foundation/config → _contracts/services/environment}/__init__.py +0 -0
  328. /orionis/luminate/{contracts → _contracts}/services/environment/environment_service.py +0 -0
  329. /orionis/luminate/{contracts/foundation/console → _contracts/services/files}/__init__.py +0 -0
  330. /orionis/luminate/{contracts → _contracts}/services/files/path_resolver_service.py +0 -0
  331. /orionis/luminate/{contracts/foundation/environment → _contracts/services/log}/__init__.py +0 -0
  332. /orionis/luminate/{contracts → _contracts}/services/log/log_service.py +0 -0
  333. /orionis/luminate/{contracts → _contracts}/support/exception_parse.py +0 -0
  334. /orionis/luminate/{contracts → _contracts}/support/reflection.py +0 -0
  335. /orionis/luminate/{contracts/foundation/providers → _facades}/__init__.py +0 -0
  336. /orionis/luminate/{contracts/providers → _facades/commands}/__init__.py +0 -0
  337. /orionis/luminate/{contracts/services → _facades/config}/__init__.py +0 -0
  338. /orionis/luminate/{contracts/services/commands → _facades/environment}/__init__.py +0 -0
  339. /orionis/luminate/{contracts/services/config → _facades/files}/__init__.py +0 -0
  340. /orionis/luminate/{contracts/services/environment → _facades/log}/__init__.py +0 -0
  341. /orionis/luminate/{contracts/services/files → _foundation}/__init__.py +0 -0
  342. /orionis/luminate/{contracts/services/log → _foundation/console}/__init__.py +0 -0
  343. /orionis/luminate/{facades → _foundation/environment}/__init__.py +0 -0
  344. /orionis/luminate/{facades/commands → _foundation/exceptions}/__init__.py +0 -0
  345. /orionis/luminate/{foundation → _foundation}/exceptions/exception_bootstrapper.py +0 -0
  346. /orionis/luminate/{foundation → _foundation}/exceptions/exception_providers.py +0 -0
  347. /orionis/luminate/{facades → _foundation/foundation}/config/__init__.py +0 -0
  348. /orionis/luminate/{facades/environment → _foundation/providers}/__init__.py +0 -0
  349. /orionis/luminate/{facades/files → _providers}/__init__.py +0 -0
  350. /orionis/luminate/{facades/log → _providers/commands}/__init__.py +0 -0
  351. /orionis/luminate/{foundation/console → _providers/config}/__init__.py +0 -0
  352. /orionis/luminate/{foundation → _providers}/environment/__init__.py +0 -0
  353. /orionis/luminate/{foundation/exceptions → _providers/files}/__init__.py +0 -0
  354. /orionis/luminate/{foundation/providers → _providers/log}/__init__.py +0 -0
  355. /orionis/luminate/{providers → _services}/__init__.py +0 -0
  356. /orionis/luminate/{providers → _services}/commands/__init__.py +0 -0
  357. /orionis/luminate/{providers → _services}/config/__init__.py +0 -0
  358. /orionis/luminate/{providers/environment → _services/log}/__init__.py +0 -0
  359. /orionis/luminate/{providers/files → foundation/config/app}/__init__.py +0 -0
  360. /orionis/luminate/{providers/log → foundation/config/app/entities}/__init__.py +0 -0
  361. /orionis/luminate/{services_ → foundation/config/app/enums}/__init__.py +0 -0
  362. /orionis/luminate/{config → foundation/config}/app/enums/ciphers.py +0 -0
  363. /orionis/luminate/{config → foundation/config}/app/enums/environments.py +0 -0
  364. /orionis/luminate/{services_/commands → foundation/config/auth}/__init__.py +0 -0
  365. /orionis/luminate/{services_/config → foundation/config/auth/entities}/__init__.py +0 -0
  366. /orionis/luminate/{services_/log → foundation/config/cache}/__init__.py +0 -0
  367. /orionis/luminate/{support/adapters → foundation/config/cache/entities}/__init__.py +0 -0
  368. /orionis/luminate/{support/asynchrony → foundation/config/cache/enums}/__init__.py +0 -0
  369. /orionis/luminate/{config → foundation/config}/cache/enums/drivers.py +0 -0
  370. /orionis/luminate/{support/asynchrony → foundation/config}/contracts/__init__.py +0 -0
  371. /orionis/luminate/{support/introspection/abstracts → foundation/config/cors}/__init__.py +0 -0
  372. /orionis/luminate/{support/introspection/abstracts → foundation/config/cors}/entities/__init__.py +0 -0
  373. /orionis/luminate/{support/introspection/dependencies/contracts → foundation/config/database}/__init__.py +0 -0
  374. /orionis/luminate/{support/introspection/dependencies → foundation/config/database}/entities/__init__.py +0 -0
  375. /orionis/luminate/{support/parsers → foundation/config/database/enums}/__init__.py +0 -0
  376. /orionis/luminate/{support/parsers/contracts → foundation/config/exceptions}/__init__.py +0 -0
  377. /orionis/luminate/{config/exceptions/integrity_exception.py → foundation/config/exceptions/integrity.py} +0 -0
  378. /orionis/luminate/{support/paths → foundation/config/filesystems}/__init__.py +0 -0
  379. /orionis/luminate/{support/paths/contracts → foundation/config/filesystems/entitites}/__init__.py +0 -0
  380. /orionis/luminate/{support/standard → foundation/config/logging}/__init__.py +0 -0
  381. /orionis/luminate/{support/standard/contracts → foundation/config/logging/entities}/__init__.py +0 -0
  382. /orionis/luminate/{test/core → foundation/config/logging/enums}/__init__.py +0 -0
  383. /orionis/luminate/{test/core/contracts → foundation/config/mail}/__init__.py +0 -0
  384. {tests/config → orionis/luminate/foundation/config/mail/entities}/__init__.py +0 -0
  385. {tests/support/adapters → orionis/luminate/foundation/config/queue}/__init__.py +0 -0
  386. {tests/support/adapters/fakes → orionis/luminate/foundation/config/queue/entities}/__init__.py +0 -0
  387. {tests/support/async_io → orionis/luminate/foundation/config/roots}/__init__.py +0 -0
  388. {tests/support/parsers → orionis/luminate/foundation/config/session}/__init__.py +0 -0
  389. {tests/support/parsers/fakes → orionis/luminate/foundation/config/session/entities}/__init__.py +0 -0
  390. {tests/support/path → orionis/luminate/foundation/config/session/enums}/__init__.py +0 -0
  391. {tests/support/standard → orionis/luminate/foundation/config/testing}/__init__.py +0 -0
  392. /orionis/luminate/{support → services}/parsers/contracts/exception_parser.py +0 -0
  393. /orionis/luminate/{support → services}/standard/contracts/std.py +0 -0
  394. /orionis/luminate/test/exceptions/{test_exception.py → test_failure_exception.py} +0 -0
  395. /orionis/luminate/test/{core → suites}/contracts/test_unit.py +0 -0
  396. {orionis-0.253.0.dist-info → orionis-0.266.0.dist-info/licenses}/LICENCE +0 -0
  397. {orionis-0.253.0.dist-info → orionis-0.266.0.dist-info}/top_level.txt +0 -0
File without changes
@@ -1,5 +1,6 @@
1
- from orionis.luminate.support.asynchrony.async_io import AsyncIO
2
- from orionis.luminate.test import TestCase
1
+
2
+ from orionis.luminate.services.asynchrony.async_io import run_coroutine
3
+ from orionis.unittesting import TestCase
3
4
 
4
5
  class TestsAsyncIO(TestCase):
5
6
 
@@ -12,7 +13,7 @@ class TestsAsyncIO(TestCase):
12
13
  async def sample_coroutine():
13
14
  return "Hello, World!"
14
15
 
15
- result = await AsyncIO.run(sample_coroutine())
16
+ result = await run_coroutine(sample_coroutine())
16
17
  self.assertEqual(result, "Hello, World!")
17
18
 
18
19
  def testExecuteWithoutActiveEventLoop(self):
@@ -23,7 +24,7 @@ class TestsAsyncIO(TestCase):
23
24
  async def sample_coroutine():
24
25
  return "Hello, World!"
25
26
 
26
- result = AsyncIO.run(sample_coroutine())
27
+ result = run_coroutine(sample_coroutine())
27
28
  self.assertEqual(result, "Hello, World!")
28
29
 
29
30
  def testExecuteWithNonCoroutine(self):
@@ -35,4 +36,4 @@ class TestsAsyncIO(TestCase):
35
36
  return "Hello, World!"
36
37
 
37
38
  with self.assertRaises(TypeError):
38
- AsyncIO.run(sample_no_coroutine())
39
+ run_coroutine(sample_no_coroutine())
@@ -1,33 +1,155 @@
1
- from orionis.luminate.services.environment.env import Env, env
2
- from orionis.luminate.test import TestCase
3
- from orionis.framework import *
4
-
5
- class TestDotEnv(TestCase):
6
-
7
- async def testDotEnv(self):
8
-
9
- # Test set and get environment variable.
10
- Env.set('NAME', NAME)
11
- result = Env.get('NAME')
12
- self.assertEqual(result, NAME)
13
-
14
- # Test unset environment variable.
15
- Env.set('VERSION', VERSION)
16
- Env.unset('VERSION')
17
- result = Env.get('VERSION')
18
- self.assertIsNone(result)
19
-
20
- # Test env helper function retrieves variable.
21
- Env.set('DOCS', DOCS)
22
- result = env('DOCS')
23
- self.assertEqual(result, DOCS)
24
-
25
- # Test retrieving all environment variables.
26
- Env.set('SKELETON', SKELETON)
27
- Env.set('FRAMEWORK', FRAMEWORK)
28
- result = Env.all()
29
- self.assertEqual(result.get('SKELETON'), SKELETON)
30
- self.assertEqual(result.get('FRAMEWORK'), FRAMEWORK)
31
-
32
- # Destroy the environment
33
- Env.destroy()
1
+ from orionis.luminate.services.environment.dot_env import DotEnv
2
+ from orionis.luminate.services.environment.env import Env
3
+ from orionis.unittesting import TestCase, unittest_mock_patch
4
+
5
+ class TestEnv(TestCase):
6
+ """
7
+ Test cases for the Env class which provides environment variable management.
8
+ """
9
+
10
+ async def testGetMethod(self):
11
+ """
12
+ Test that the get method retrieves values correctly.
13
+ Verifies that Env.get() properly delegates to DotEnv.get() and returns the expected value.
14
+ """
15
+ with unittest_mock_patch.object(DotEnv, 'get', return_value='test_value') as mock_get:
16
+ result = Env.get('TEST_KEY')
17
+ mock_get.assert_called_once_with('TEST_KEY', None)
18
+ self.assertEqual(result, 'test_value')
19
+
20
+ async def testGetMethodWithDefault(self):
21
+ """
22
+ Test that the get method returns default value when key not found.
23
+ Verifies that the default parameter is properly passed to DotEnv.get().
24
+ """
25
+ with unittest_mock_patch.object(DotEnv, 'get', return_value='default_value') as mock_get:
26
+ result = Env.get('NON_EXISTENT_KEY', 'default_value')
27
+ mock_get.assert_called_once_with('NON_EXISTENT_KEY', 'default_value')
28
+ self.assertEqual(result, 'default_value')
29
+
30
+ async def testSetMethod(self):
31
+ """
32
+ Test that the set method updates environment variables.
33
+ Verifies that Env.set() properly delegates to DotEnv.set() and returns True on success.
34
+ """
35
+ with unittest_mock_patch.object(DotEnv, 'set', return_value=True) as mock_set:
36
+ result = Env.set('TEST_KEY', 'test_value')
37
+ mock_set.assert_called_once_with('TEST_KEY', 'test_value')
38
+ self.assertTrue(result)
39
+
40
+ async def testUnsetMethod(self):
41
+ """
42
+ Test that the unset method removes environment variables.
43
+ Verifies that Env.unset() properly delegates to DotEnv.unset() and returns True on success.
44
+ """
45
+ with unittest_mock_patch.object(DotEnv, 'unset', return_value=True) as mock_unset:
46
+ result = Env.unset('TEST_KEY')
47
+ mock_unset.assert_called_once_with('TEST_KEY')
48
+ self.assertTrue(result)
49
+
50
+ async def testAllMethod(self):
51
+ """
52
+ Test that the all method retrieves all environment variables.
53
+ Verifies that Env.all() properly delegates to DotEnv.all() and returns the expected dictionary.
54
+ """
55
+ mock_env = {'KEY1': 'value1', 'KEY2': 'value2'}
56
+ with unittest_mock_patch.object(DotEnv, 'all', return_value=mock_env) as mock_all:
57
+ result = Env.all()
58
+ mock_all.assert_called_once()
59
+ self.assertEqual(result, mock_env)
60
+
61
+ async def testToJsonMethod(self):
62
+ """
63
+ Test that the toJson method serializes environment variables to JSON.
64
+ Verifies that Env.toJson() properly delegates to DotEnv.toJson() and returns a JSON string.
65
+ """
66
+ mock_json = '{"KEY": "value"}'
67
+ with unittest_mock_patch.object(DotEnv, 'toJson', return_value=mock_json) as mock_to_json:
68
+ result = Env.toJson()
69
+ mock_to_json.assert_called_once()
70
+ self.assertEqual(result, mock_json)
71
+
72
+ async def testToBase64Method(self):
73
+ """
74
+ Test that the toBase64 method encodes environment variables in Base64.
75
+ Verifies that Env.toBase64() properly delegates to DotEnv.toBase64() and returns a Base64 string.
76
+ """
77
+ mock_b64 = 'base64encodedstring'
78
+ with unittest_mock_patch.object(DotEnv, 'toBase64', return_value=mock_b64) as mock_to_b64:
79
+ result = Env.toBase64()
80
+ mock_to_b64.assert_called_once()
81
+ self.assertEqual(result, mock_b64)
82
+
83
+ async def testDotenvInstanceManagement(self):
84
+ """
85
+ Test that the Env._dotenv() method implements singleton behavior by ensuring
86
+ that multiple calls return the same instance. Also verifies that resetting
87
+ Env._dotenv_instance allows for a new instance to be created.
88
+ """
89
+
90
+ # Clear any existing instance
91
+ Env._dotenv_instance = None
92
+
93
+ # First call should create instance
94
+ instance1 = Env._dotenv()
95
+ instance2 = Env._dotenv()
96
+
97
+ # Verify that the same instance is returned
98
+ self.assertEqual(instance1, instance2)
99
+
100
+ async def testHelperFunctionEnv(self):
101
+ """
102
+ Test that the env helper function works correctly.
103
+ Verifies that the env() function properly delegates to DotEnv.get().
104
+ """
105
+ with unittest_mock_patch.object(DotEnv, 'get', return_value='test_value') as mock_get:
106
+ from orionis.luminate.services.environment.env import env
107
+ result = env('TEST_KEY', 'default_value')
108
+ mock_get.assert_called_once_with('TEST_KEY', 'default_value')
109
+ self.assertEqual(result, 'test_value')
110
+
111
+ async def testOrionisConstants(self):
112
+ """
113
+ Test that Orionis framework constants are correctly set and retrieved via Env.
114
+
115
+ This test imports a set of well-known constants from the Orionis framework and ensures:
116
+ - Each constant can be set as an environment variable using Env.set().
117
+ - Each constant can be retrieved using Env.get() and matches the original value.
118
+ - The Env.get() method returns None for a non-existent key.
119
+ - All constants are present in the dictionary returned by Env.all().
120
+ """
121
+ from orionis.framework import (
122
+ NAME, VERSION, AUTHOR, AUTHOR_EMAIL, DESCRIPTION,
123
+ SKELETON, FRAMEWORK, DOCS, API, PYTHON_REQUIRES
124
+ )
125
+ constants = {
126
+ "NAME": NAME,
127
+ "VERSION": VERSION,
128
+ "AUTHOR": AUTHOR,
129
+ "AUTHOR_EMAIL": AUTHOR_EMAIL,
130
+ "DESCRIPTION": DESCRIPTION,
131
+ "SKELETON": SKELETON,
132
+ "FRAMEWORK": FRAMEWORK,
133
+ "DOCS": DOCS,
134
+ "API": API,
135
+ "PYTHON_REQUIRES": PYTHON_REQUIRES
136
+ }
137
+
138
+ # Set all constants as environment variables
139
+ for key, value in constants.items():
140
+ result = Env.set(key, value)
141
+ self.assertTrue(result, f"Env.set() should return True for key '{key}'")
142
+
143
+ # Retrieve and verify each constant
144
+ for key, value in constants.items():
145
+ retrieved = Env.get(key)
146
+ self.assertEqual(retrieved, value, f"Env.get('{key}') should return '{value}'")
147
+
148
+ # Check that a non-existent key returns None
149
+ self.assertIsNone(Env.get("NON_EXISTENT_ORIONIS_KEY"), "Env.get() should return None for missing keys")
150
+
151
+ # Ensure all constants are present in Env.all()
152
+ env_all = Env.all()
153
+ for key, value in constants.items():
154
+ self.assertIn(key, env_all, f"'{key}' should be present in Env.all()")
155
+ self.assertEqual(env_all[key], value, f"Env.all()['{key}'] should be '{value}'")
File without changes
File without changes
@@ -0,0 +1,30 @@
1
+ class FakeUser:
2
+ """
3
+ FakeUser is a mock class intended for testing purposes, simulating a user entity.
4
+ Methods:
5
+ __init__():
6
+ Initializes the FakeUser instance and sets user_data to None.
7
+ getUser(user_id):
8
+ Retrieves user information based on the provided user ID.
9
+ """
10
+
11
+ def __init__(self):
12
+ """
13
+ Initializes the instance and sets the user_data attribute to None.
14
+
15
+ Attributes:
16
+ user_data (Any): Placeholder for user-specific data, initialized as None.
17
+ """
18
+ self.user_data = None
19
+
20
+ def getUser(self, user_id):
21
+ """
22
+ Retrieve user information based on the provided user ID.
23
+
24
+ Args:
25
+ user_id: The unique identifier of the user.
26
+
27
+ Returns:
28
+ The user data associated with the given user ID.
29
+ """
30
+ return self.user_data
@@ -0,0 +1,27 @@
1
+ from tests.services.inspection.dependencies.mocks.mock_user import FakeUser
2
+ from tests.services.inspection.dependencies.mocks.mock_users_permissions import FakeUserWithPermissions
3
+
4
+
5
+ class UserController:
6
+ """
7
+ UserController manages user-related operations, utilizing a user repository for data access.
8
+ Methods:
9
+ __init__(user_repository: FakeUser)
10
+ Initializes the controller with a user repository.
11
+ createUserWithPermissions(user_permissions: FakeUserWithPermissions, permissions: list[str]) -> FakeUserWithPermissions
12
+ Adds a list of permissions to the given user_permissions object and returns it.
13
+ """
14
+
15
+ def __init__(self, user_repository: FakeUser):
16
+ """
17
+ Initializes the class with a user repository.
18
+
19
+ Args:
20
+ user_repository (FakeUser): An instance of FakeUser to be used as the user repository.
21
+ """
22
+ self.user_repository = user_repository
23
+
24
+ def createUserWithPermissions(self, user_permissions: FakeUserWithPermissions, permissions: list[str]):
25
+ for permission in permissions:
26
+ user_permissions.addPermission(permission)
27
+ return user_permissions
@@ -0,0 +1,41 @@
1
+ class FakeUserWithPermissions:
2
+ """
3
+ A fake user class for testing permission-based logic.
4
+ This class simulates a user object with a set of permissions, providing methods to add and check permissions.
5
+ permissions (set): A set containing the permissions assigned to the user.
6
+ Methods:
7
+ addPermission(permission: str):
8
+ Adds a permission to the user's set of permissions.
9
+ hasPermission(permission: str) -> bool:
10
+ Checks if the user has a specific permission.
11
+ """
12
+
13
+ def __init__(self):
14
+ """
15
+ Initializes the object with an empty set of permissions.
16
+
17
+ Attributes:
18
+ permissions (set): A set to store permission values.
19
+ """
20
+ self.permissions = set()
21
+
22
+ def addPermission(self, permission: str):
23
+ """
24
+ Adds a permission to the set of permissions.
25
+
26
+ Args:
27
+ permission (str): The permission to add.
28
+ """
29
+ self.permissions.add(permission)
30
+
31
+ def hasPermission(self, permission: str) -> bool:
32
+ """
33
+ Check if the specified permission exists in the user's permissions.
34
+
35
+ Args:
36
+ permission (str): The permission to check for.
37
+
38
+ Returns:
39
+ bool: True if the permission exists, False otherwise.
40
+ """
41
+ return permission in self.permissions
@@ -0,0 +1,94 @@
1
+ from orionis.luminate.services.introspection.dependencies.reflect_dependencies import (
2
+ ReflectDependencies,
3
+ ClassDependency,
4
+ MethodDependency,
5
+ ResolvedDependency
6
+ )
7
+ from orionis.unittesting import TestCase
8
+ from tests.services.inspection.dependencies.mocks.mock_user import FakeUser
9
+ from tests.services.inspection.dependencies.mocks.mock_user_controller import UserController
10
+ from tests.services.inspection.dependencies.mocks.mock_users_permissions import FakeUserWithPermissions
11
+
12
+ class TestReflectDependencies(TestCase):
13
+ """
14
+ Test suite for verifying the functionality of the ReflectDependencies class in resolving and reflecting dependencies for class constructors and methods.
15
+ This test class covers:
16
+ - Retrieval and resolution of constructor dependencies for the UserController class.
17
+ - Validation that constructor dependencies are correctly identified as instances of ClassDependency.
18
+ - Verification that resolved dependencies (such as 'user_repository') are instances of ResolvedDependency and have the expected module name, class name, full class path, and type.
19
+ - Reflection and resolution of method dependencies for specific methods (e.g., 'createUserWithPermissions').
20
+ - Validation that method dependencies are correctly identified as instances of MethodDependency.
21
+ - Verification that resolved method dependencies (such as 'user_permissions' and 'permissions') are instances of ResolvedDependency and have the expected attributes.
22
+ - Ensuring that unresolved dependencies lists are empty where appropriate.
23
+ """
24
+
25
+ async def testReflectionDependenciesGetConstructorDependencies(self):
26
+ """
27
+ Test that ReflectDependencies correctly retrieves and resolves constructor dependencies for the UserController class.
28
+ This test verifies:
29
+ - The returned constructor dependencies are an instance of ClassDependency.
30
+ - The list of unresolved dependencies is empty.
31
+ - The 'user_repository' dependency is resolved as an instance of ResolvedDependency.
32
+ - The resolved dependency for 'user_repository' has the expected module name, class name, full class path, and type (FakeUser).
33
+ """
34
+
35
+ depend = ReflectDependencies(UserController)
36
+ constructor_dependencies = depend.getConstructorDependencies()
37
+
38
+ # Check Instance of ClassDependency
39
+ self.assertIsInstance(constructor_dependencies, ClassDependency)
40
+
41
+ self.assertEqual(constructor_dependencies.unresolved, [])
42
+
43
+ # Check Instance of ResolvedDependency
44
+ dep_user_repository = constructor_dependencies.resolved.get('user_repository')
45
+ self.assertIsInstance(dep_user_repository, ResolvedDependency)
46
+
47
+ # Check resolved dependencies for 'user_repository'
48
+ dependencies:ResolvedDependency = dep_user_repository
49
+ self.assertEqual(dependencies.module_name, 'tests.services.inspection.dependencies.mocks.mock_user')
50
+ self.assertEqual(dependencies.class_name, 'FakeUser')
51
+ self.assertEqual(dependencies.full_class_path, 'tests.services.inspection.dependencies.mocks.mock_user.FakeUser')
52
+ self.assertEqual(dependencies.type, FakeUser)
53
+
54
+ async def testReflectionDependenciesGetMethodDependencies(self):
55
+ """
56
+ Tests the `getMethodDependencies` method of the `ReflectDependencies` class for the 'createUserWithPermissions' method
57
+ of the `UserController`.
58
+ This test verifies:
59
+ - The returned object is an instance of `MethodDependency`.
60
+ - There are no unresolved dependencies.
61
+ - The 'user_permissions' dependency is correctly resolved as an instance of `ResolvedDependency` with the expected
62
+ module name, class name, full class path, and type (`FakeUserWithPermissions`).
63
+ - The 'permissions' dependency is correctly resolved as an instance of `ResolvedDependency` with the expected
64
+ module name, class name, full class path, and type (`list[str]`).
65
+ """
66
+
67
+ depend = ReflectDependencies(UserController)
68
+ method_dependencies = depend.getMethodDependencies('createUserWithPermissions')
69
+
70
+ # Check Instance of MethodDependency
71
+ self.assertIsInstance(method_dependencies, MethodDependency)
72
+
73
+ # Check unresolved dependencies
74
+ self.assertEqual(method_dependencies.unresolved, [])
75
+
76
+ # Check Instance of ResolvedDependency for 'user_permissions'
77
+ dep_user_permissions:ResolvedDependency = method_dependencies.resolved.get('user_permissions')
78
+ self.assertIsInstance(dep_user_permissions, ResolvedDependency)
79
+
80
+ # Check resolved dependencies for 'user_permissions'
81
+ self.assertEqual(dep_user_permissions.module_name, 'tests.services.inspection.dependencies.mocks.mock_users_permissions')
82
+ self.assertEqual(dep_user_permissions.class_name, 'FakeUserWithPermissions')
83
+ self.assertEqual(dep_user_permissions.full_class_path, 'tests.services.inspection.dependencies.mocks.mock_users_permissions.FakeUserWithPermissions')
84
+ self.assertEqual(dep_user_permissions.type, FakeUserWithPermissions)
85
+
86
+ # Check Instance of ResolvedDependency for 'permissions'
87
+ dep_permissions:ResolvedDependency = method_dependencies.resolved.get('permissions')
88
+ self.assertIsInstance(dep_permissions, ResolvedDependency)
89
+
90
+ # Check resolved dependencies for 'permissions'
91
+ self.assertEqual(dep_permissions.module_name, 'builtins')
92
+ self.assertEqual(dep_permissions.class_name, 'list')
93
+ self.assertEqual(dep_permissions.full_class_path, 'builtins.list')
94
+ self.assertEqual(dep_permissions.type, list[str])
File without changes
File without changes
@@ -0,0 +1,15 @@
1
+ class CustomError(Exception):
2
+ """
3
+ A custom exception class for handling errors with an optional error code.
4
+ """
5
+
6
+ def __init__(self, message, code=None):
7
+ """
8
+ Initialize the custom error with a message and an optional error code.
9
+
10
+ Args:
11
+ message (str): The error message describing the exception.
12
+ code (Optional[Any]): An optional error code associated with the exception.
13
+ """
14
+ super().__init__(message)
15
+ self.code = code
@@ -1,6 +1,6 @@
1
- from orionis.luminate.support.parsers.exception_parser import ExceptionParser
2
- from orionis.luminate.test import TestCase
3
- from tests.support.parsers.fakes.fake_custom_error import CustomError
1
+ from orionis.luminate.services.parsers.serializer import Parser
2
+ from orionis.unittesting import TestCase
3
+ from tests.services.parsers.mocks.mock_custom_error import CustomError
4
4
 
5
5
  class TestsExceptionParser(TestCase):
6
6
 
@@ -11,7 +11,7 @@ class TestsExceptionParser(TestCase):
11
11
  try:
12
12
  raise ValueError("Something went wrong")
13
13
  except Exception as e:
14
- result = ExceptionParser(e).toDict()
14
+ result = Parser.exception(e).toDict()
15
15
 
16
16
  self.assertIsInstance(result, dict)
17
17
  self.assertIn("error_type", result)
@@ -34,20 +34,20 @@ class TestsExceptionParser(TestCase):
34
34
  try:
35
35
  raise RuntimeError("Test exception")
36
36
  except Exception as e:
37
- parser = ExceptionParser(e)
37
+ parser = Parser.exception(e)
38
38
  self.assertIs(parser.raw_exception, e)
39
39
 
40
40
  async def testExceptionWithCode(self):
41
41
  try:
42
42
  raise CustomError("Custom message", code=404)
43
43
  except Exception as e:
44
- result = ExceptionParser(e).toDict()
44
+ result = Parser.exception(e).toDict()
45
45
  self.assertEqual(result["error_code"], 404)
46
46
  self.assertEqual(result["error_type"], "CustomError")
47
47
 
48
48
  async def testNestedExceptionCause(self):
49
49
  """
50
- Ensure that the ExceptionParser correctly handles nested exceptions.
50
+ Ensure that the Parser.exception correctly handles nested exceptions.
51
51
  """
52
52
  try:
53
53
  try:
@@ -55,5 +55,5 @@ class TestsExceptionParser(TestCase):
55
55
  except ValueError as exc:
56
56
  raise TypeError("Outer error")
57
57
  except Exception as e:
58
- result = ExceptionParser(e).toDict()
58
+ result = Parser.exception(e).toDict()
59
59
  self.assertEqual(result["error_type"], "TypeError")
File without changes
@@ -0,0 +1,73 @@
1
+ import tempfile
2
+ import os
3
+ from pathlib import Path
4
+ from orionis.luminate.services.paths.resolver import Resolver
5
+ from orionis.unittesting import TestCase
6
+
7
+ class TestsResolver(TestCase):
8
+ """
9
+ Unit tests for the Resolver class, which resolves file and directory paths relative to a base directory.
10
+ """
11
+
12
+ async def test_file_not_found(self):
13
+ """
14
+ Test that resolving a non-existent file path raises FileNotFoundError.
15
+ """
16
+ with tempfile.TemporaryDirectory() as tmpdir:
17
+ resolver = Resolver(tmpdir)
18
+ non_existent = "does_not_exist.txt"
19
+ with self.assertRaises(FileNotFoundError):
20
+ resolver.relativePath(non_existent)
21
+
22
+ async def test_valid_file_path(self):
23
+ """
24
+ Test that resolving a valid file path returns the correct absolute path.
25
+ """
26
+ with tempfile.TemporaryDirectory() as tmpdir:
27
+ # Create a temporary file inside the temp directory
28
+ file_path = Path(tmpdir) / "testfile.txt"
29
+ file_path.write_text("sample content")
30
+ resolver = Resolver(tmpdir)
31
+ resolved = resolver.relativePath("testfile.txt").toString()
32
+ # The resolved path should end with the file name
33
+ self.assertTrue(resolved.endswith("testfile.txt"))
34
+ # The resolved path should be absolute
35
+ self.assertTrue(os.path.isabs(resolved))
36
+
37
+ async def test_valid_directory_path(self):
38
+ """
39
+ Test that resolving a valid directory path returns the correct absolute path.
40
+ """
41
+ with tempfile.TemporaryDirectory() as tmpdir:
42
+ # Create a subdirectory inside the temp directory
43
+ subdir = Path(tmpdir) / "subdir"
44
+ subdir.mkdir()
45
+ resolver = Resolver(tmpdir)
46
+ resolved = resolver.relativePath("subdir").toString()
47
+ self.assertTrue(resolved.endswith("subdir"))
48
+ self.assertTrue(os.path.isabs(resolved))
49
+
50
+ async def test_other_base_path(self):
51
+ """
52
+ Test that providing a different base path to Resolver works as expected.
53
+ """
54
+ with tempfile.TemporaryDirectory() as tmpdir:
55
+ # Create a file in a subdirectory
56
+ subdir = Path(tmpdir) / "base"
57
+ subdir.mkdir()
58
+ file_path = subdir / "file.txt"
59
+ file_path.write_text("data")
60
+ resolver = Resolver(str(subdir))
61
+ resolved = resolver.relativePath("file.txt").toString()
62
+ self.assertTrue(resolved.endswith("file.txt"))
63
+ self.assertTrue(os.path.isabs(resolved))
64
+
65
+ async def test_equal_output_string(self):
66
+ """
67
+ Test that the string representation of the resolved path matches the output of toString().
68
+ """
69
+ with tempfile.TemporaryDirectory() as tmpdir:
70
+ file_path = Path(tmpdir) / "file.txt"
71
+ file_path.write_text("abc")
72
+ resolver = Resolver(tmpdir).relativePath("file.txt")
73
+ self.assertEqual(resolver.toString(), str(resolver))
File without changes