orionis 0.405.0__py3-none-any.whl → 0.406.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 (154) hide show
  1. orionis/console/base/command.py +57 -50
  2. orionis/console/base/contracts/command.py +68 -0
  3. orionis/console/dynamic/contracts/progress_bar.py +3 -3
  4. orionis/console/dynamic/progress_bar.py +8 -8
  5. orionis/console/output/console.py +8 -2
  6. orionis/console/output/contracts/console.py +1 -1
  7. orionis/container/container.py +2 -2
  8. orionis/container/context/scope.py +4 -1
  9. orionis/container/contracts/service_provider.py +2 -2
  10. orionis/container/entities/binding.py +31 -44
  11. orionis/container/enums/lifetimes.py +22 -1
  12. orionis/container/facades/facade.py +1 -2
  13. orionis/container/providers/service_provider.py +2 -2
  14. orionis/foundation/application.py +542 -248
  15. orionis/foundation/config/app/entities/app.py +107 -90
  16. orionis/foundation/config/auth/entities/auth.py +4 -33
  17. orionis/foundation/config/cache/entities/cache.py +18 -41
  18. orionis/foundation/config/cache/entities/file.py +8 -35
  19. orionis/foundation/config/cache/entities/stores.py +17 -38
  20. orionis/foundation/config/cors/entities/cors.py +41 -54
  21. orionis/foundation/config/database/entities/connections.py +40 -56
  22. orionis/foundation/config/database/entities/database.py +11 -38
  23. orionis/foundation/config/database/entities/mysql.py +48 -76
  24. orionis/foundation/config/database/entities/oracle.py +30 -57
  25. orionis/foundation/config/database/entities/pgsql.py +45 -61
  26. orionis/foundation/config/database/entities/sqlite.py +26 -53
  27. orionis/foundation/config/filesystems/entitites/aws.py +28 -49
  28. orionis/foundation/config/filesystems/entitites/disks.py +27 -47
  29. orionis/foundation/config/filesystems/entitites/filesystems.py +15 -37
  30. orionis/foundation/config/filesystems/entitites/local.py +9 -35
  31. orionis/foundation/config/filesystems/entitites/public.py +14 -41
  32. orionis/foundation/config/logging/entities/channels.py +56 -86
  33. orionis/foundation/config/logging/entities/chunked.py +9 -9
  34. orionis/foundation/config/logging/entities/daily.py +8 -8
  35. orionis/foundation/config/logging/entities/hourly.py +6 -6
  36. orionis/foundation/config/logging/entities/logging.py +12 -18
  37. orionis/foundation/config/logging/entities/monthly.py +7 -7
  38. orionis/foundation/config/logging/entities/stack.py +5 -5
  39. orionis/foundation/config/logging/entities/weekly.py +6 -6
  40. orionis/foundation/config/mail/entities/file.py +9 -36
  41. orionis/foundation/config/mail/entities/mail.py +22 -40
  42. orionis/foundation/config/mail/entities/mailers.py +29 -44
  43. orionis/foundation/config/mail/entities/smtp.py +47 -48
  44. orionis/foundation/config/queue/entities/brokers.py +19 -41
  45. orionis/foundation/config/queue/entities/database.py +24 -46
  46. orionis/foundation/config/queue/entities/queue.py +28 -40
  47. orionis/foundation/config/roots/paths.py +272 -468
  48. orionis/foundation/config/session/entities/session.py +23 -53
  49. orionis/foundation/config/startup.py +165 -135
  50. orionis/foundation/config/testing/entities/testing.py +137 -122
  51. orionis/foundation/config/testing/enums/__init__.py +6 -2
  52. orionis/foundation/config/testing/enums/drivers.py +16 -0
  53. orionis/foundation/config/testing/enums/verbosity.py +18 -0
  54. orionis/foundation/contracts/application.py +152 -362
  55. orionis/foundation/providers/console_provider.py +24 -2
  56. orionis/foundation/providers/dumper_provider.py +24 -2
  57. orionis/foundation/providers/logger_provider.py +24 -2
  58. orionis/foundation/providers/path_resolver_provider.py +25 -2
  59. orionis/foundation/providers/progress_bar_provider.py +24 -2
  60. orionis/foundation/providers/testing_provider.py +39 -0
  61. orionis/foundation/providers/workers_provider.py +24 -2
  62. orionis/metadata/framework.py +1 -1
  63. orionis/services/environment/helpers/functions.py +1 -2
  64. orionis/services/environment/key/__init__.py +0 -0
  65. orionis/services/environment/key/key_generator.py +37 -0
  66. orionis/support/entities/__init__.py +0 -0
  67. orionis/support/entities/base.py +104 -0
  68. orionis/support/facades/testing.py +15 -0
  69. orionis/support/facades/workers.py +1 -1
  70. orionis/test/cases/asynchronous.py +0 -11
  71. orionis/test/cases/synchronous.py +0 -9
  72. orionis/test/contracts/dumper.py +11 -4
  73. orionis/test/contracts/kernel.py +5 -110
  74. orionis/test/contracts/logs.py +27 -65
  75. orionis/test/contracts/printer.py +16 -128
  76. orionis/test/contracts/test_result.py +100 -0
  77. orionis/test/contracts/unit_test.py +87 -150
  78. orionis/test/core/unit_test.py +608 -554
  79. orionis/test/entities/result.py +22 -2
  80. orionis/test/enums/__init__.py +0 -2
  81. orionis/test/enums/status.py +14 -9
  82. orionis/test/exceptions/config.py +9 -1
  83. orionis/test/exceptions/failure.py +34 -11
  84. orionis/test/exceptions/persistence.py +10 -2
  85. orionis/test/exceptions/runtime.py +9 -1
  86. orionis/test/exceptions/value.py +13 -1
  87. orionis/test/kernel.py +87 -289
  88. orionis/test/output/dumper.py +82 -18
  89. orionis/test/output/printer.py +399 -156
  90. orionis/test/records/logs.py +203 -82
  91. orionis/test/validators/__init__.py +33 -0
  92. orionis/test/validators/base_path.py +45 -0
  93. orionis/test/validators/execution_mode.py +45 -0
  94. orionis/test/validators/fail_fast.py +37 -0
  95. orionis/test/validators/folder_path.py +34 -0
  96. orionis/test/validators/module_name.py +31 -0
  97. orionis/test/validators/name_pattern.py +40 -0
  98. orionis/test/validators/pattern.py +36 -0
  99. orionis/test/validators/persistent.py +42 -0
  100. orionis/test/validators/persistent_driver.py +43 -0
  101. orionis/test/validators/print_result.py +37 -0
  102. orionis/test/validators/tags.py +37 -0
  103. orionis/test/validators/throw_exception.py +39 -0
  104. orionis/test/validators/verbosity.py +37 -0
  105. orionis/test/validators/web_report.py +35 -0
  106. orionis/test/validators/workers.py +31 -0
  107. orionis/test/view/render.py +48 -54
  108. {orionis-0.405.0.dist-info → orionis-0.406.0.dist-info}/METADATA +1 -1
  109. {orionis-0.405.0.dist-info → orionis-0.406.0.dist-info}/RECORD +149 -98
  110. tests/container/__init__.py +0 -0
  111. tests/container/context/__init__.py +0 -0
  112. tests/container/context/test_manager.py +27 -0
  113. tests/container/context/test_scope.py +23 -0
  114. tests/container/entities/__init__.py +0 -0
  115. tests/container/entities/test_binding.py +133 -0
  116. tests/container/enums/__init__.py +0 -0
  117. tests/container/enums/test_lifetimes.py +63 -0
  118. tests/container/facades/__init__.py +0 -0
  119. tests/container/facades/test_facade.py +61 -0
  120. tests/container/mocks/__init__.py +0 -0
  121. tests/container/mocks/mock_complex_classes.py +482 -0
  122. tests/container/mocks/mock_simple_classes.py +32 -0
  123. tests/container/providers/__init__.py +0 -0
  124. tests/container/providers/test_providers.py +48 -0
  125. tests/container/resolver/__init__.py +0 -0
  126. tests/container/resolver/test_resolver.py +55 -0
  127. tests/container/test_container.py +254 -0
  128. tests/container/test_singleton.py +98 -0
  129. tests/container/test_thread_safety.py +217 -0
  130. tests/container/validators/__init__.py +0 -0
  131. tests/container/validators/test_implements.py +140 -0
  132. tests/container/validators/test_is_abstract_class.py +99 -0
  133. tests/container/validators/test_is_callable.py +73 -0
  134. tests/container/validators/test_is_concrete_class.py +97 -0
  135. tests/container/validators/test_is_instance.py +105 -0
  136. tests/container/validators/test_is_not_subclass.py +117 -0
  137. tests/container/validators/test_is_subclass.py +115 -0
  138. tests/container/validators/test_is_valid_alias.py +113 -0
  139. tests/container/validators/test_lifetime.py +75 -0
  140. tests/foundation/config/testing/test_foundation_config_testing.py +1 -1
  141. tests/metadata/test_metadata_framework.py +18 -18
  142. tests/testing/test_testing_result.py +117 -117
  143. tests/testing/test_testing_unit.py +209 -209
  144. orionis/foundation/config/base.py +0 -112
  145. orionis/test/arguments/parser.py +0 -187
  146. orionis/test/contracts/parser.py +0 -43
  147. orionis/test/entities/arguments.py +0 -38
  148. orionis/test/enums/execution_mode.py +0 -16
  149. /orionis/{test/arguments → console/base/contracts}/__init__.py +0 -0
  150. /orionis/foundation/config/testing/enums/{test_mode.py → mode.py} +0 -0
  151. {orionis-0.405.0.dist-info → orionis-0.406.0.dist-info}/WHEEL +0 -0
  152. {orionis-0.405.0.dist-info → orionis-0.406.0.dist-info}/licenses/LICENCE +0 -0
  153. {orionis-0.405.0.dist-info → orionis-0.406.0.dist-info}/top_level.txt +0 -0
  154. {orionis-0.405.0.dist-info → orionis-0.406.0.dist-info}/zip-safe +0 -0
@@ -0,0 +1,115 @@
1
+ from abc import ABC
2
+ from orionis.container.validators.is_subclass import IsSubclass
3
+ from orionis.container.exceptions.exception import OrionisContainerException
4
+ from orionis.test.cases.asynchronous import AsyncTestCase
5
+
6
+ class TestIsSubclass(AsyncTestCase):
7
+ """
8
+ Test cases for the IsSubclass validator in orionis.container.validators.is_subclass.
9
+
10
+ Notes
11
+ -----
12
+ This test suite validates the functionality of the IsSubclass validator
13
+ which ensures that a concrete class is a subclass of an abstract class.
14
+ """
15
+
16
+ async def testValidSubclass(self) -> None:
17
+ """
18
+ Test that validation passes when concrete class is a valid subclass.
19
+ """
20
+ # Define test classes
21
+ class AbstractClass(ABC):
22
+ pass
23
+
24
+ class ConcreteClass(AbstractClass):
25
+ pass
26
+
27
+ class SubConcreteClass(ConcreteClass):
28
+ pass
29
+
30
+ # These should not raise exceptions
31
+ IsSubclass(AbstractClass, ConcreteClass)
32
+ IsSubclass(AbstractClass, SubConcreteClass)
33
+ IsSubclass(ConcreteClass, SubConcreteClass)
34
+
35
+ async def testInvalidSubclass(self) -> None:
36
+ """
37
+ Test that validation fails when concrete class is not a subclass.
38
+ """
39
+ # Define test classes
40
+ class AbstractClass1(ABC):
41
+ pass
42
+
43
+ class AbstractClass2(ABC):
44
+ pass
45
+
46
+ class ConcreteClass1(AbstractClass1):
47
+ pass
48
+
49
+ class ConcreteClass2(AbstractClass2):
50
+ pass
51
+
52
+ # These should raise exceptions
53
+ with self.assertRaises(OrionisContainerException) as context:
54
+ IsSubclass(AbstractClass1, AbstractClass2)
55
+ self.assertIn("concrete class must inherit", str(context.exception))
56
+
57
+ with self.assertRaises(OrionisContainerException) as context:
58
+ IsSubclass(AbstractClass1, ConcreteClass2)
59
+ self.assertIn("concrete class must inherit", str(context.exception))
60
+
61
+ with self.assertRaises(OrionisContainerException) as context:
62
+ IsSubclass(ConcreteClass1, AbstractClass1)
63
+ self.assertIn("concrete class must inherit", str(context.exception))
64
+
65
+ async def testSameClass(self) -> None:
66
+ """
67
+ Test validation when abstract and concrete are the same class.
68
+ """
69
+ class TestClass:
70
+ pass
71
+
72
+ # A class is considered a subclass of itself
73
+ IsSubclass(TestClass, TestClass)
74
+
75
+ async def testBuiltinTypes(self) -> None:
76
+ """
77
+ Test validation with built-in types.
78
+ """
79
+ # Valid subclass relationships
80
+ IsSubclass(Exception, ValueError)
81
+ IsSubclass(BaseException, Exception)
82
+
83
+ # Invalid subclass relationships
84
+ with self.assertRaises(OrionisContainerException):
85
+ IsSubclass(ValueError, Exception)
86
+
87
+ with self.assertRaises(OrionisContainerException):
88
+ IsSubclass(int, str)
89
+
90
+ with self.assertRaises(OrionisContainerException):
91
+ IsSubclass(list, dict)
92
+
93
+ async def testNonClassArguments(self) -> None:
94
+ """
95
+ Test validation with non-class arguments which should raise TypeError.
96
+ """
97
+ class TestClass:
98
+ pass
99
+
100
+ # These should raise TypeError when passed to issubclass()
101
+ non_class_args = [
102
+ None,
103
+ 123,
104
+ "string",
105
+ [],
106
+ {},
107
+ lambda x: x
108
+ ]
109
+
110
+ for arg in non_class_args:
111
+ with self.assertRaises(TypeError):
112
+ IsSubclass(TestClass, arg)
113
+
114
+ with self.assertRaises(TypeError):
115
+ IsSubclass(arg, TestClass)
@@ -0,0 +1,113 @@
1
+ from orionis.container.validators.is_valid_alias import IsValidAlias
2
+ from orionis.container.exceptions.type import OrionisContainerTypeError
3
+ from orionis.test.cases.asynchronous import AsyncTestCase
4
+
5
+ class TestIsValidAlias(AsyncTestCase):
6
+ """
7
+ Test cases for the IsValidAlias validator in orionis.container.validators.is_valid_alias.
8
+
9
+ Notes
10
+ -----
11
+ This test suite validates the functionality of the IsValidAlias validator
12
+ which ensures that alias values are valid strings without invalid characters.
13
+ """
14
+
15
+ async def testValidAliases(self) -> None:
16
+ """
17
+ Test that validation passes when valid aliases are provided.
18
+ """
19
+ valid_aliases = [
20
+ "valid",
21
+ "valid_alias",
22
+ "validAlias",
23
+ "valid123",
24
+ "valid_123",
25
+ "v",
26
+ "1",
27
+ "_",
28
+ "valid_alias_with_underscores",
29
+ "ValidAliasWithMixedCase",
30
+ "VALID_UPPERCASE_ALIAS"
31
+ ]
32
+
33
+ for alias in valid_aliases:
34
+ IsValidAlias(alias)
35
+
36
+ async def testInvalidAliasTypes(self) -> None:
37
+ """
38
+ Test that validation fails when non-string types are provided.
39
+ """
40
+ invalid_types = [
41
+ 123,
42
+ 3.14,
43
+ None,
44
+ True,
45
+ False,
46
+ [],
47
+ {},
48
+ (),
49
+ set()
50
+ ]
51
+
52
+ for value in invalid_types:
53
+ with self.assertRaises(OrionisContainerTypeError) as context:
54
+ IsValidAlias(value)
55
+
56
+ async def testAliasWithInvalidCharacters(self) -> None:
57
+ """
58
+ Test that validation fails when aliases contain invalid characters.
59
+ """
60
+ invalid_aliases = [
61
+ "invalid alias", # space
62
+ "invalid\talias", # tab
63
+ "invalid\nalias", # newline
64
+ "invalid@alias", # special character
65
+ "invalid#alias", # special character
66
+ "invalid$alias", # special character
67
+ "invalid%alias", # special character
68
+ "invalid&alias", # special character
69
+ "invalid*alias", # special character
70
+ "invalid(alias)", # parentheses
71
+ "invalid[alias]", # brackets
72
+ "invalid{alias}", # braces
73
+ "invalid;alias", # semicolon
74
+ "invalid:alias", # colon
75
+ "invalid,alias", # comma
76
+ "invalid/alias", # slash
77
+ "invalid\\alias", # backslash
78
+ "invalid<alias>", # angle brackets
79
+ "invalid|alias", # pipe
80
+ "invalid`alias", # backtick
81
+ 'invalid"alias', # double quote
82
+ "invalid'alias" # single quote
83
+ ]
84
+
85
+ for alias in invalid_aliases:
86
+ with self.assertRaises(OrionisContainerTypeError) as context:
87
+ IsValidAlias(alias)
88
+
89
+ expected_msg_start = f"Alias '{alias}' contains invalid characters."
90
+ self.assertTrue(str(context.exception).startswith(expected_msg_start))
91
+ self.assertIn("Aliases must not contain whitespace or special symbols", str(context.exception))
92
+
93
+ async def testEmptyAlias(self) -> None:
94
+ """
95
+ Test that validation fails with an empty string.
96
+ """
97
+ # Empty string should be rejected
98
+ with self.assertRaises(OrionisContainerTypeError) as context:
99
+ IsValidAlias("")
100
+
101
+ self.assertEqual(
102
+ str(context.exception),
103
+ "Alias cannot be None, empty, or whitespace only."
104
+ )
105
+
106
+ # Whitespace-only string should also be rejected
107
+ with self.assertRaises(OrionisContainerTypeError) as context:
108
+ IsValidAlias(" ")
109
+
110
+ self.assertEqual(
111
+ str(context.exception),
112
+ "Alias cannot be None, empty, or whitespace only."
113
+ )
@@ -0,0 +1,75 @@
1
+ from orionis.container.validators.lifetime import LifetimeValidator
2
+ from orionis.container.enums.lifetimes import Lifetime
3
+ from orionis.container.exceptions.type import OrionisContainerTypeError
4
+ from orionis.test.cases.asynchronous import AsyncTestCase
5
+
6
+ class TestLifetimeValidator(AsyncTestCase):
7
+ """
8
+ Test cases for the LifetimeValidator in orionis.container.validators.lifetime.
9
+
10
+ Notes
11
+ -----
12
+ This test suite validates the functionality of the LifetimeValidator
13
+ which ensures that lifetime values are correctly validated and converted.
14
+ """
15
+
16
+ async def testValidLifetimeEnumValues(self) -> None:
17
+ """
18
+ Test that validation passes when Lifetime enum values are provided.
19
+ """
20
+ self.assertEqual(LifetimeValidator(Lifetime.TRANSIENT), Lifetime.TRANSIENT)
21
+ self.assertEqual(LifetimeValidator(Lifetime.SINGLETON), Lifetime.SINGLETON)
22
+ self.assertEqual(LifetimeValidator(Lifetime.SCOPED), Lifetime.SCOPED)
23
+
24
+ async def testValidLifetimeStringValues(self) -> None:
25
+ """
26
+ Test that validation passes when valid string representations are provided.
27
+ """
28
+ self.assertEqual(LifetimeValidator("TRANSIENT"), Lifetime.TRANSIENT)
29
+ self.assertEqual(LifetimeValidator("SINGLETON"), Lifetime.SINGLETON)
30
+ self.assertEqual(LifetimeValidator("SCOPED"), Lifetime.SCOPED)
31
+
32
+ # Test with lowercase and mixed case
33
+ self.assertEqual(LifetimeValidator("transient"), Lifetime.TRANSIENT)
34
+ self.assertEqual(LifetimeValidator("Singleton"), Lifetime.SINGLETON)
35
+ self.assertEqual(LifetimeValidator("scoped"), Lifetime.SCOPED)
36
+
37
+ # Test with extra whitespace
38
+ self.assertEqual(LifetimeValidator(" TRANSIENT "), Lifetime.TRANSIENT)
39
+ self.assertEqual(LifetimeValidator(" singleton "), Lifetime.SINGLETON)
40
+
41
+ async def testInvalidLifetimeStringValue(self) -> None:
42
+ """
43
+ Test that validation fails when invalid string representations are provided.
44
+ """
45
+ with self.assertRaises(OrionisContainerTypeError) as context:
46
+ LifetimeValidator("INVALID_LIFETIME")
47
+
48
+ self.assertIn("Invalid lifetime 'INVALID_LIFETIME'", str(context.exception))
49
+ self.assertIn("Valid options are:", str(context.exception))
50
+ self.assertIn("TRANSIENT", str(context.exception))
51
+ self.assertIn("SINGLETON", str(context.exception))
52
+ self.assertIn("SCOPED", str(context.exception))
53
+
54
+ async def testInvalidLifetimeType(self) -> None:
55
+ """
56
+ Test that validation fails when invalid types are provided.
57
+ """
58
+ invalid_values = [
59
+ 123,
60
+ 3.14,
61
+ None,
62
+ True,
63
+ False,
64
+ [],
65
+ {},
66
+ (),
67
+ set()
68
+ ]
69
+
70
+ for value in invalid_values:
71
+ with self.assertRaises(OrionisContainerTypeError) as context:
72
+ LifetimeValidator(value)
73
+
74
+ expected_msg = f"Lifetime must be of type str or Lifetime enum, got {type(value).__name__}."
75
+ self.assertEqual(str(context.exception), expected_msg)
@@ -1,6 +1,6 @@
1
1
  from orionis.foundation.config.testing.entities.testing import Testing
2
+ from orionis.foundation.config.testing.enums.mode import ExecutionMode
2
3
  from orionis.foundation.exceptions import OrionisIntegrityException
3
- from orionis.test.enums.execution_mode import ExecutionMode
4
4
  from orionis.test.cases.asynchronous import AsyncTestCase
5
5
 
6
6
  class TestFoundationConfigTesting(AsyncTestCase):
@@ -24,7 +24,7 @@ class TestMetadataFramework(AsyncTestCase):
24
24
  NAME, VERSION, AUTHOR, AUTHOR_EMAIL, DESCRIPTION,
25
25
  SKELETON, FRAMEWORK, DOCS, API, PYTHON_REQUIRES
26
26
  ]:
27
- assert isinstance(const, str)
27
+ self.assertIsInstance(const, str)
28
28
 
29
29
  async def testClassifiersStructure(self):
30
30
  """
@@ -35,10 +35,10 @@ class TestMetadataFramework(AsyncTestCase):
35
35
  AssertionError
36
36
  If `CLASSIFIERS` is not a list of tuples of strings.
37
37
  """
38
- assert isinstance(CLASSIFIERS, list)
38
+ self.assertIsInstance(CLASSIFIERS, list)
39
39
  for item in CLASSIFIERS:
40
- assert isinstance(item, tuple)
41
- assert all(isinstance(part, str) for part in item)
40
+ self.assertIsInstance(item, tuple)
41
+ self.assertTrue(all(isinstance(part, str) for part in item))
42
42
 
43
43
  async def testGetClassifiers(self):
44
44
  """
@@ -50,10 +50,10 @@ class TestMetadataFramework(AsyncTestCase):
50
50
  If the returned value is not a list of strings containing '::'.
51
51
  """
52
52
  classifiers = get_classifiers()
53
- assert isinstance(classifiers, list)
53
+ self.assertIsInstance(classifiers, list)
54
54
  for c in classifiers:
55
- assert isinstance(c, str)
56
- assert " :: " in c or len(c.split(" :: ")) > 1
55
+ self.assertIsInstance(c, str)
56
+ self.assertTrue(" :: " in c or len(c.split(" :: ")) > 1)
57
57
 
58
58
  async def testKeywords(self):
59
59
  """
@@ -64,11 +64,11 @@ class TestMetadataFramework(AsyncTestCase):
64
64
  AssertionError
65
65
  If `KEYWORDS` is not a list of strings or required keywords are missing.
66
66
  """
67
- assert isinstance(KEYWORDS, list)
67
+ self.assertIsInstance(KEYWORDS, list)
68
68
  for kw in KEYWORDS:
69
- assert isinstance(kw, str)
70
- assert "orionis" in KEYWORDS
71
- assert "framework" in KEYWORDS
69
+ self.assertIsInstance(kw, str)
70
+ self.assertIn("orionis", KEYWORDS)
71
+ self.assertIn("framework", KEYWORDS)
72
72
 
73
73
  async def testRequiresStructure(self):
74
74
  """
@@ -79,11 +79,11 @@ class TestMetadataFramework(AsyncTestCase):
79
79
  AssertionError
80
80
  If `REQUIRES` is not a list of 2-element tuples of strings.
81
81
  """
82
- assert isinstance(REQUIRES, list)
82
+ self.assertIsInstance(REQUIRES, list)
83
83
  for req in REQUIRES:
84
- assert isinstance(req, tuple)
85
- assert len(req) == 2
86
- assert all(isinstance(part, str) for part in req)
84
+ self.assertIsInstance(req, tuple)
85
+ self.assertEqual(len(req), 2)
86
+ self.assertTrue(all(isinstance(part, str) for part in req))
87
87
 
88
88
  async def testGetRequires(self):
89
89
  """
@@ -95,7 +95,7 @@ class TestMetadataFramework(AsyncTestCase):
95
95
  If the returned value is not a list of strings containing '>='.
96
96
  """
97
97
  requires = get_requires()
98
- assert isinstance(requires, list)
98
+ self.assertIsInstance(requires, list)
99
99
  for req in requires:
100
- assert isinstance(req, str)
101
- assert ">=" in req
100
+ self.assertIsInstance(req, str)
101
+ self.assertIn(">=", req)
@@ -1,131 +1,131 @@
1
- from orionis.test.cases.asynchronous import AsyncTestCase
2
- from orionis.test.entities.result import TestResult
3
- from orionis.test.enums import TestStatus
1
+ # from orionis.test.cases.asynchronous import AsyncTestCase
2
+ # from orionis.test.entities.result import TestResult
3
+ # from orionis.test.enums import TestStatus
4
4
 
5
- class TestTestingResult(AsyncTestCase):
5
+ # class TestTestingResult(AsyncTestCase):
6
6
 
7
- async def testDefaultValues(self) -> None:
8
- """
9
- Ensures that when optional fields are not provided during initialization of a TestResult
10
- instance, they are set to None.
7
+ # async def testDefaultValues(self) -> None:
8
+ # """
9
+ # Ensures that when optional fields are not provided during initialization of a TestResult
10
+ # instance, they are set to None.
11
11
 
12
- Notes
13
- -----
14
- This test verifies the default behavior of the following optional fields:
15
- - error_message
16
- - traceback
17
- - class_name
18
- - method
19
- - module
20
- - file_path
12
+ # Notes
13
+ # -----
14
+ # This test verifies the default behavior of the following optional fields:
15
+ # - error_message
16
+ # - traceback
17
+ # - class_name
18
+ # - method
19
+ # - module
20
+ # - file_path
21
21
 
22
- Assertions
23
- ----------
24
- Each optional field is checked to confirm it is None after initialization.
25
- """
26
- result = TestResult(
27
- id=1,
28
- name="Sample Test",
29
- status=TestStatus.PASSED,
30
- execution_time=0.5
31
- )
32
- self.assertIsNone(result.error_message)
33
- self.assertIsNone(result.traceback)
34
- self.assertIsNone(result.class_name)
35
- self.assertIsNone(result.method)
36
- self.assertIsNone(result.module)
37
- self.assertIsNone(result.file_path)
22
+ # Assertions
23
+ # ----------
24
+ # Each optional field is checked to confirm it is None after initialization.
25
+ # """
26
+ # result = TestResult(
27
+ # id=1,
28
+ # name="Sample Test",
29
+ # status=TestStatus.PASSED,
30
+ # execution_time=0.5
31
+ # )
32
+ # self.assertIsNone(result.error_message)
33
+ # self.assertIsNone(result.traceback)
34
+ # self.assertIsNone(result.class_name)
35
+ # self.assertIsNone(result.method)
36
+ # self.assertIsNone(result.module)
37
+ # self.assertIsNone(result.file_path)
38
38
 
39
- async def testRequiredFields(self) -> None:
40
- """
41
- Test that TestResult enforces the presence of all required (non-optional) fields during initialization.
42
- This test verifies that omitting any required field when creating a TestResult instance raises a TypeError.
39
+ # async def testRequiredFields(self) -> None:
40
+ # """
41
+ # Test that TestResult enforces the presence of all required (non-optional) fields during initialization.
42
+ # This test verifies that omitting any required field when creating a TestResult instance raises a TypeError.
43
43
 
44
- Notes
45
- -----
46
- - Attempts to instantiate TestResult with no arguments.
47
- - Attempts to instantiate TestResult missing the 'id' field.
48
- - Expects a TypeError to be raised in both cases.
49
- """
50
- with self.assertRaises(TypeError):
51
- TestResult() # Missing all required fields
44
+ # Notes
45
+ # -----
46
+ # - Attempts to instantiate TestResult with no arguments.
47
+ # - Attempts to instantiate TestResult missing the 'id' field.
48
+ # - Expects a TypeError to be raised in both cases.
49
+ # """
50
+ # with self.assertRaises(TypeError):
51
+ # TestResult() # Missing all required fields
52
52
 
53
- with self.assertRaises(TypeError):
54
- # Missing id
55
- TestResult(
56
- name="Sample Test",
57
- status=TestStatus.PASSED,
58
- execution_time=0.5
59
- )
53
+ # with self.assertRaises(TypeError):
54
+ # # Missing id
55
+ # TestResult(
56
+ # name="Sample Test",
57
+ # status=TestStatus.PASSED,
58
+ # execution_time=0.5
59
+ # )
60
60
 
61
- async def testImmutable(self) -> None:
62
- """
63
- Test the immutability of TestResult instances.
64
- This test ensures that TestResult, implemented as a frozen dataclass, does not allow
65
- modification of its attributes after instantiation.
61
+ # async def testImmutable(self) -> None:
62
+ # """
63
+ # Test the immutability of TestResult instances.
64
+ # This test ensures that TestResult, implemented as a frozen dataclass, does not allow
65
+ # modification of its attributes after instantiation.
66
66
 
67
- Parameters
68
- ----------
69
- self : TestCase
70
- The test case instance.
67
+ # Parameters
68
+ # ----------
69
+ # self : TestCase
70
+ # The test case instance.
71
71
 
72
- Raises
73
- ------
74
- FrozenInstanceError
75
- If an attempt is made to modify an attribute of a frozen TestResult instance.
76
- """
77
- result = TestResult(
78
- id=1,
79
- name="Sample Test",
80
- status=TestStatus.PASSED,
81
- execution_time=0.5
82
- )
83
- with self.assertRaises(Exception):
84
- result.name = "Modified Name"
72
+ # Raises
73
+ # ------
74
+ # FrozenInstanceError
75
+ # If an attempt is made to modify an attribute of a frozen TestResult instance.
76
+ # """
77
+ # result = TestResult(
78
+ # id=1,
79
+ # name="Sample Test",
80
+ # status=TestStatus.PASSED,
81
+ # execution_time=0.5
82
+ # )
83
+ # with self.assertRaises(Exception):
84
+ # result.name = "Modified Name"
85
85
 
86
- async def testStatusValues(self) -> None:
87
- """
88
- Parameters
89
- ----------
90
- self : TestCase
91
- The test case instance.
86
+ # async def testStatusValues(self) -> None:
87
+ # """
88
+ # Parameters
89
+ # ----------
90
+ # self : TestCase
91
+ # The test case instance.
92
92
 
93
- Notes
94
- -----
95
- This test iterates over all possible values of the `TestStatus` enum and verifies
96
- that each value can be assigned to the `status` field of a `TestResult` instance.
97
- It asserts that the assigned status matches the expected value.
98
- """
99
- for status in TestStatus:
100
- result = TestResult(
101
- id=1,
102
- name="Status Test",
103
- status=status,
104
- execution_time=0.1
105
- )
106
- self.assertEqual(result.status, status)
93
+ # Notes
94
+ # -----
95
+ # This test iterates over all possible values of the `TestStatus` enum and verifies
96
+ # that each value can be assigned to the `status` field of a `TestResult` instance.
97
+ # It asserts that the assigned status matches the expected value.
98
+ # """
99
+ # for status in TestStatus:
100
+ # result = TestResult(
101
+ # id=1,
102
+ # name="Status Test",
103
+ # status=status,
104
+ # execution_time=0.1
105
+ # )
106
+ # self.assertEqual(result.status, status)
107
107
 
108
- async def testErrorFields(self) -> None:
109
- """
110
- Parameters
111
- ----------
112
- self : TestCase
113
- The test case instance.
108
+ # async def testErrorFields(self) -> None:
109
+ # """
110
+ # Parameters
111
+ # ----------
112
+ # self : TestCase
113
+ # The test case instance.
114
114
 
115
- Notes
116
- -----
117
- Verifies that the `error_message` and `traceback` fields are correctly stored in the `TestResult`
118
- object when provided during initialization.
119
- """
120
- error_msg = "Test failed"
121
- traceback = "Traceback info"
122
- result = TestResult(
123
- id=1,
124
- name="Failing Test",
125
- status=TestStatus.FAILED,
126
- execution_time=0.2,
127
- error_message=error_msg,
128
- traceback=traceback
129
- )
130
- self.assertEqual(result.error_message, error_msg)
131
- self.assertEqual(result.traceback, traceback)
115
+ # Notes
116
+ # -----
117
+ # Verifies that the `error_message` and `traceback` fields are correctly stored in the `TestResult`
118
+ # object when provided during initialization.
119
+ # """
120
+ # error_msg = "Test failed"
121
+ # traceback = "Traceback info"
122
+ # result = TestResult(
123
+ # id=1,
124
+ # name="Failing Test",
125
+ # status=TestStatus.FAILED,
126
+ # execution_time=0.2,
127
+ # error_message=error_msg,
128
+ # traceback=traceback
129
+ # )
130
+ # self.assertEqual(result.error_message, error_msg)
131
+ # self.assertEqual(result.traceback, traceback)