@haskou/value-objects 1.1.0 → 1.1.2

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 (464) hide show
  1. package/dist/src/errors/BaseError.d.ts +8 -0
  2. package/dist/src/errors/BaseError.d.ts.map +1 -0
  3. package/dist/src/errors/BaseError.js +22 -0
  4. package/dist/src/errors/BaseError.js.map +1 -0
  5. package/dist/src/errors/DomainError.d.ts +7 -0
  6. package/dist/src/errors/DomainError.d.ts.map +1 -0
  7. package/dist/src/errors/DomainError.js +15 -0
  8. package/dist/src/errors/DomainError.js.map +1 -0
  9. package/dist/src/errors/InvalidColorError.d.ts +5 -0
  10. package/dist/src/errors/InvalidColorError.d.ts.map +1 -0
  11. package/dist/src/errors/InvalidColorError.js +11 -0
  12. package/dist/src/errors/InvalidColorError.js.map +1 -0
  13. package/dist/src/errors/InvalidDayError.d.ts +5 -0
  14. package/dist/src/errors/InvalidDayError.d.ts.map +1 -0
  15. package/dist/src/errors/InvalidDayError.js +11 -0
  16. package/dist/src/errors/InvalidDayError.js.map +1 -0
  17. package/dist/src/errors/InvalidDayFormatError.d.ts +5 -0
  18. package/dist/src/errors/InvalidDayFormatError.d.ts.map +1 -0
  19. package/dist/src/errors/InvalidDayFormatError.js +11 -0
  20. package/dist/src/errors/InvalidDayFormatError.js.map +1 -0
  21. package/dist/src/errors/InvalidEmailError.d.ts +5 -0
  22. package/dist/src/errors/InvalidEmailError.d.ts.map +1 -0
  23. package/dist/src/errors/InvalidEmailError.js +11 -0
  24. package/dist/src/errors/InvalidEmailError.js.map +1 -0
  25. package/dist/src/errors/InvalidFormatError.d.ts +5 -0
  26. package/dist/src/errors/InvalidFormatError.d.ts.map +1 -0
  27. package/dist/src/errors/InvalidFormatError.js +11 -0
  28. package/dist/src/errors/InvalidFormatError.js.map +1 -0
  29. package/dist/src/errors/InvalidHashError.d.ts +5 -0
  30. package/dist/src/errors/InvalidHashError.d.ts.map +1 -0
  31. package/dist/src/errors/InvalidHashError.js +11 -0
  32. package/dist/src/errors/InvalidHashError.js.map +1 -0
  33. package/dist/src/errors/InvalidHourError.d.ts +5 -0
  34. package/dist/src/errors/InvalidHourError.d.ts.map +1 -0
  35. package/dist/src/errors/InvalidHourError.js +11 -0
  36. package/dist/src/errors/InvalidHourError.js.map +1 -0
  37. package/dist/src/errors/InvalidIntegerError.d.ts +5 -0
  38. package/dist/src/errors/InvalidIntegerError.d.ts.map +1 -0
  39. package/dist/src/errors/InvalidIntegerError.js +11 -0
  40. package/dist/src/errors/InvalidIntegerError.js.map +1 -0
  41. package/dist/src/errors/InvalidLatitudeError.d.ts +5 -0
  42. package/dist/src/errors/InvalidLatitudeError.d.ts.map +1 -0
  43. package/dist/src/errors/InvalidLatitudeError.js +11 -0
  44. package/dist/src/errors/InvalidLatitudeError.js.map +1 -0
  45. package/dist/src/errors/InvalidLengthError.d.ts +5 -0
  46. package/dist/src/errors/InvalidLengthError.d.ts.map +1 -0
  47. package/dist/src/errors/InvalidLengthError.js +11 -0
  48. package/dist/src/errors/InvalidLengthError.js.map +1 -0
  49. package/dist/src/errors/InvalidLongitudeError.d.ts +5 -0
  50. package/dist/src/errors/InvalidLongitudeError.d.ts.map +1 -0
  51. package/dist/src/errors/InvalidLongitudeError.js +11 -0
  52. package/dist/src/errors/InvalidLongitudeError.js.map +1 -0
  53. package/dist/src/errors/InvalidMinutesError.d.ts +5 -0
  54. package/dist/src/errors/InvalidMinutesError.d.ts.map +1 -0
  55. package/dist/src/errors/InvalidMinutesError.js +11 -0
  56. package/dist/src/errors/InvalidMinutesError.js.map +1 -0
  57. package/dist/src/errors/InvalidNumberError.d.ts +5 -0
  58. package/dist/src/errors/InvalidNumberError.d.ts.map +1 -0
  59. package/dist/src/errors/InvalidNumberError.js +11 -0
  60. package/dist/src/errors/InvalidNumberError.js.map +1 -0
  61. package/dist/src/errors/InvalidPositiveNumberError.d.ts +5 -0
  62. package/dist/src/errors/InvalidPositiveNumberError.d.ts.map +1 -0
  63. package/dist/src/errors/InvalidPositiveNumberError.js +11 -0
  64. package/dist/src/errors/InvalidPositiveNumberError.js.map +1 -0
  65. package/dist/src/errors/InvalidStringLengthError.d.ts +5 -0
  66. package/dist/src/errors/InvalidStringLengthError.d.ts.map +1 -0
  67. package/dist/src/errors/InvalidStringLengthError.js +11 -0
  68. package/dist/src/errors/InvalidStringLengthError.js.map +1 -0
  69. package/dist/src/errors/InvalidTimestampIntervalError.d.ts +6 -0
  70. package/dist/src/errors/InvalidTimestampIntervalError.d.ts.map +1 -0
  71. package/dist/src/errors/InvalidTimestampIntervalError.js +11 -0
  72. package/dist/src/errors/InvalidTimestampIntervalError.js.map +1 -0
  73. package/dist/src/errors/InvalidValueError.d.ts +5 -0
  74. package/dist/src/errors/InvalidValueError.d.ts.map +1 -0
  75. package/dist/src/errors/InvalidValueError.js +11 -0
  76. package/dist/src/errors/InvalidValueError.js.map +1 -0
  77. package/dist/src/errors/NullObjectError.d.ts +5 -0
  78. package/dist/src/errors/NullObjectError.d.ts.map +1 -0
  79. package/dist/src/errors/NullObjectError.js +12 -0
  80. package/dist/src/errors/NullObjectError.js.map +1 -0
  81. package/dist/src/errors/ValueNotInEnumError.d.ts +5 -0
  82. package/dist/src/errors/ValueNotInEnumError.d.ts.map +1 -0
  83. package/dist/src/errors/ValueNotInEnumError.js +11 -0
  84. package/dist/src/errors/ValueNotInEnumError.js.map +1 -0
  85. package/{src/errors/index.ts → dist/src/errors/index.d.ts} +1 -0
  86. package/dist/src/errors/index.d.ts.map +1 -0
  87. package/dist/src/errors/index.js +24 -0
  88. package/dist/src/errors/index.js.map +1 -0
  89. package/{src/index.ts → dist/src/index.d.ts} +1 -0
  90. package/dist/src/index.d.ts.map +1 -0
  91. package/dist/src/index.js +9 -0
  92. package/dist/src/index.js.map +1 -0
  93. package/dist/src/interfaces/PrimitiveOf.d.ts +5 -0
  94. package/dist/src/interfaces/PrimitiveOf.d.ts.map +1 -0
  95. package/dist/src/interfaces/PrimitiveOf.js +3 -0
  96. package/dist/src/interfaces/PrimitiveOf.js.map +1 -0
  97. package/dist/src/interfaces/index.d.ts +2 -0
  98. package/dist/src/interfaces/index.d.ts.map +1 -0
  99. package/dist/src/interfaces/index.js +5 -0
  100. package/dist/src/interfaces/index.js.map +1 -0
  101. package/dist/src/patterns/Assert.d.ts +5 -0
  102. package/dist/src/patterns/Assert.d.ts.map +1 -0
  103. package/dist/src/patterns/Assert.js +11 -0
  104. package/dist/src/patterns/Assert.js.map +1 -0
  105. package/dist/src/patterns/index.d.ts +2 -0
  106. package/dist/src/patterns/index.d.ts.map +1 -0
  107. package/dist/src/patterns/index.js +5 -0
  108. package/dist/src/patterns/index.js.map +1 -0
  109. package/{src/types/Nullish.ts → dist/src/types/Nullish.d.ts} +1 -0
  110. package/dist/src/types/Nullish.d.ts.map +1 -0
  111. package/dist/src/types/Nullish.js +3 -0
  112. package/dist/src/types/Nullish.js.map +1 -0
  113. package/{src/types/Primitive.ts → dist/src/types/Primitive.d.ts} +1 -0
  114. package/dist/src/types/Primitive.d.ts.map +1 -0
  115. package/dist/src/types/Primitive.js +3 -0
  116. package/dist/src/types/Primitive.js.map +1 -0
  117. package/{src/types/index.ts → dist/src/types/index.d.ts} +1 -0
  118. package/dist/src/types/index.d.ts.map +1 -0
  119. package/dist/src/types/index.js +6 -0
  120. package/dist/src/types/index.js.map +1 -0
  121. package/dist/src/value-objects/Color.d.ts +19 -0
  122. package/dist/src/value-objects/Color.d.ts.map +1 -0
  123. package/dist/src/value-objects/Color.js +37 -0
  124. package/dist/src/value-objects/Color.js.map +1 -0
  125. package/dist/src/value-objects/Email.d.ts +6 -0
  126. package/dist/src/value-objects/Email.d.ts.map +1 -0
  127. package/dist/src/value-objects/Email.js +21 -0
  128. package/dist/src/value-objects/Email.js.map +1 -0
  129. package/dist/src/value-objects/Enum.d.ts +9 -0
  130. package/dist/src/value-objects/Enum.d.ts.map +1 -0
  131. package/dist/src/value-objects/Enum.js +24 -0
  132. package/dist/src/value-objects/Enum.js.map +1 -0
  133. package/dist/src/value-objects/Integer.d.ts +6 -0
  134. package/dist/src/value-objects/Integer.d.ts.map +1 -0
  135. package/dist/src/value-objects/Integer.js +21 -0
  136. package/dist/src/value-objects/Integer.js.map +1 -0
  137. package/dist/src/value-objects/NullObject.d.ts +8 -0
  138. package/dist/src/value-objects/NullObject.d.ts.map +1 -0
  139. package/dist/src/value-objects/NullObject.js +43 -0
  140. package/dist/src/value-objects/NullObject.js.map +1 -0
  141. package/dist/src/value-objects/NumberValueObject.d.ts +15 -0
  142. package/dist/src/value-objects/NumberValueObject.d.ts.map +1 -0
  143. package/dist/src/value-objects/NumberValueObject.js +48 -0
  144. package/dist/src/value-objects/NumberValueObject.js.map +1 -0
  145. package/dist/src/value-objects/PositiveNumber.d.ts +6 -0
  146. package/dist/src/value-objects/PositiveNumber.d.ts.map +1 -0
  147. package/dist/src/value-objects/PositiveNumber.js +21 -0
  148. package/dist/src/value-objects/PositiveNumber.js.map +1 -0
  149. package/dist/src/value-objects/StringValueObject.d.ts +7 -0
  150. package/dist/src/value-objects/StringValueObject.d.ts.map +1 -0
  151. package/dist/src/value-objects/StringValueObject.js +24 -0
  152. package/dist/src/value-objects/StringValueObject.js.map +1 -0
  153. package/dist/src/value-objects/ValueObject.d.ts +12 -0
  154. package/dist/src/value-objects/ValueObject.d.ts.map +1 -0
  155. package/dist/src/value-objects/ValueObject.js +33 -0
  156. package/dist/src/value-objects/ValueObject.js.map +1 -0
  157. package/dist/src/value-objects/coordinates/Coordinates.d.ts +12 -0
  158. package/dist/src/value-objects/coordinates/Coordinates.d.ts.map +1 -0
  159. package/dist/src/value-objects/coordinates/Coordinates.js +28 -0
  160. package/dist/src/value-objects/coordinates/Coordinates.js.map +1 -0
  161. package/dist/src/value-objects/coordinates/Latitude.d.ts +8 -0
  162. package/dist/src/value-objects/coordinates/Latitude.d.ts.map +1 -0
  163. package/dist/src/value-objects/coordinates/Latitude.js +21 -0
  164. package/dist/src/value-objects/coordinates/Latitude.js.map +1 -0
  165. package/dist/src/value-objects/coordinates/Longitude.d.ts +8 -0
  166. package/dist/src/value-objects/coordinates/Longitude.d.ts.map +1 -0
  167. package/dist/src/value-objects/coordinates/Longitude.js +21 -0
  168. package/dist/src/value-objects/coordinates/Longitude.js.map +1 -0
  169. package/{src/value-objects/coordinates/index.ts → dist/src/value-objects/coordinates/index.d.ts} +1 -0
  170. package/dist/src/value-objects/coordinates/index.d.ts.map +1 -0
  171. package/dist/src/value-objects/coordinates/index.js +7 -0
  172. package/dist/src/value-objects/coordinates/index.js.map +1 -0
  173. package/dist/src/value-objects/hashes/Hash.d.ts +7 -0
  174. package/dist/src/value-objects/hashes/Hash.d.ts.map +1 -0
  175. package/dist/src/value-objects/hashes/Hash.js +19 -0
  176. package/dist/src/value-objects/hashes/Hash.js.map +1 -0
  177. package/dist/src/value-objects/hashes/MD5Hash.d.ts +8 -0
  178. package/dist/src/value-objects/hashes/MD5Hash.d.ts.map +1 -0
  179. package/dist/src/value-objects/hashes/MD5Hash.js +26 -0
  180. package/dist/src/value-objects/hashes/MD5Hash.js.map +1 -0
  181. package/dist/src/value-objects/hashes/SHA256Hash.d.ts +9 -0
  182. package/dist/src/value-objects/hashes/SHA256Hash.d.ts.map +1 -0
  183. package/dist/src/value-objects/hashes/SHA256Hash.js +29 -0
  184. package/dist/src/value-objects/hashes/SHA256Hash.js.map +1 -0
  185. package/dist/src/value-objects/hashes/SHA512Hash.d.ts +9 -0
  186. package/dist/src/value-objects/hashes/SHA512Hash.d.ts.map +1 -0
  187. package/dist/src/value-objects/hashes/SHA512Hash.js +29 -0
  188. package/dist/src/value-objects/hashes/SHA512Hash.js.map +1 -0
  189. package/{src/value-objects/hashes/index.ts → dist/src/value-objects/hashes/index.d.ts} +1 -0
  190. package/dist/src/value-objects/hashes/index.d.ts.map +1 -0
  191. package/dist/src/value-objects/hashes/index.js +8 -0
  192. package/dist/src/value-objects/hashes/index.js.map +1 -0
  193. package/dist/src/value-objects/ids/ShortId.d.ts +10 -0
  194. package/dist/src/value-objects/ids/ShortId.d.ts.map +1 -0
  195. package/dist/src/value-objects/ids/ShortId.js +30 -0
  196. package/dist/src/value-objects/ids/ShortId.js.map +1 -0
  197. package/dist/src/value-objects/ids/UUID.d.ts +10 -0
  198. package/dist/src/value-objects/ids/UUID.d.ts.map +1 -0
  199. package/dist/src/value-objects/ids/UUID.js +29 -0
  200. package/dist/src/value-objects/ids/UUID.js.map +1 -0
  201. package/dist/src/value-objects/ids/index.d.ts +3 -0
  202. package/dist/src/value-objects/ids/index.d.ts.map +1 -0
  203. package/dist/src/value-objects/ids/index.js +6 -0
  204. package/dist/src/value-objects/ids/index.js.map +1 -0
  205. package/{src/value-objects/index.ts → dist/src/value-objects/index.d.ts} +2 -0
  206. package/dist/src/value-objects/index.d.ts.map +1 -0
  207. package/dist/src/value-objects/index.js +16 -0
  208. package/dist/src/value-objects/index.js.map +1 -0
  209. package/dist/src/value-objects/time/CalendarDay.d.ts +25 -0
  210. package/dist/src/value-objects/time/CalendarDay.d.ts.map +1 -0
  211. package/dist/src/value-objects/time/CalendarDay.js +74 -0
  212. package/dist/src/value-objects/time/CalendarDay.js.map +1 -0
  213. package/dist/src/value-objects/time/Day.d.ts +7 -0
  214. package/dist/src/value-objects/time/Day.d.ts.map +1 -0
  215. package/dist/src/value-objects/time/Day.js +18 -0
  216. package/dist/src/value-objects/time/Day.js.map +1 -0
  217. package/dist/src/value-objects/time/DayOfWeek.d.ts +34 -0
  218. package/dist/src/value-objects/time/DayOfWeek.d.ts.map +1 -0
  219. package/dist/src/value-objects/time/DayOfWeek.js +52 -0
  220. package/dist/src/value-objects/time/DayOfWeek.js.map +1 -0
  221. package/dist/src/value-objects/time/Duration.d.ts +23 -0
  222. package/dist/src/value-objects/time/Duration.d.ts.map +1 -0
  223. package/dist/src/value-objects/time/Duration.js +79 -0
  224. package/dist/src/value-objects/time/Duration.js.map +1 -0
  225. package/dist/src/value-objects/time/Hour.d.ts +15 -0
  226. package/dist/src/value-objects/time/Hour.d.ts.map +1 -0
  227. package/dist/src/value-objects/time/Hour.js +81 -0
  228. package/dist/src/value-objects/time/Hour.js.map +1 -0
  229. package/dist/src/value-objects/time/Month.d.ts +18 -0
  230. package/dist/src/value-objects/time/Month.d.ts.map +1 -0
  231. package/dist/src/value-objects/time/Month.js +41 -0
  232. package/dist/src/value-objects/time/Month.js.map +1 -0
  233. package/dist/src/value-objects/time/MonthOfYear.d.ts +17 -0
  234. package/dist/src/value-objects/time/MonthOfYear.d.ts.map +1 -0
  235. package/dist/src/value-objects/time/MonthOfYear.js +45 -0
  236. package/dist/src/value-objects/time/MonthOfYear.js.map +1 -0
  237. package/dist/src/value-objects/time/Timestamp.d.ts +51 -0
  238. package/dist/src/value-objects/time/Timestamp.d.ts.map +1 -0
  239. package/dist/src/value-objects/time/Timestamp.js +156 -0
  240. package/dist/src/value-objects/time/Timestamp.js.map +1 -0
  241. package/dist/src/value-objects/time/TimestampInterval.d.ts +26 -0
  242. package/dist/src/value-objects/time/TimestampInterval.d.ts.map +1 -0
  243. package/dist/src/value-objects/time/TimestampInterval.js +88 -0
  244. package/dist/src/value-objects/time/TimestampInterval.js.map +1 -0
  245. package/dist/src/value-objects/time/Year.d.ts +10 -0
  246. package/dist/src/value-objects/time/Year.d.ts.map +1 -0
  247. package/dist/src/value-objects/time/Year.js +26 -0
  248. package/dist/src/value-objects/time/Year.js.map +1 -0
  249. package/{src/value-objects/time/index.ts → dist/src/value-objects/time/index.d.ts} +1 -0
  250. package/dist/src/value-objects/time/index.d.ts.map +1 -0
  251. package/dist/src/value-objects/time/index.js +14 -0
  252. package/dist/src/value-objects/time/index.js.map +1 -0
  253. package/dist/tests/errors/BaseError.spec.d.ts +2 -0
  254. package/dist/tests/errors/BaseError.spec.d.ts.map +1 -0
  255. package/dist/tests/errors/BaseError.spec.js +54 -0
  256. package/dist/tests/errors/BaseError.spec.js.map +1 -0
  257. package/dist/tests/errors/DomainError.spec.d.ts +2 -0
  258. package/dist/tests/errors/DomainError.spec.d.ts.map +1 -0
  259. package/dist/tests/errors/DomainError.spec.js +47 -0
  260. package/dist/tests/errors/DomainError.spec.js.map +1 -0
  261. package/dist/tests/patterns/Assert.spec.d.ts +2 -0
  262. package/dist/tests/patterns/Assert.spec.d.ts.map +1 -0
  263. package/dist/tests/patterns/Assert.spec.js +27 -0
  264. package/dist/tests/patterns/Assert.spec.js.map +1 -0
  265. package/dist/tests/setup.jest.d.ts +2 -0
  266. package/dist/tests/setup.jest.d.ts.map +1 -0
  267. package/dist/tests/setup.jest.js +6 -0
  268. package/dist/tests/setup.jest.js.map +1 -0
  269. package/dist/tests/value-objects/Color.spec.d.ts +2 -0
  270. package/dist/tests/value-objects/Color.spec.d.ts.map +1 -0
  271. package/dist/tests/value-objects/Color.spec.js +171 -0
  272. package/dist/tests/value-objects/Color.spec.js.map +1 -0
  273. package/dist/tests/value-objects/Email.spec.d.ts +2 -0
  274. package/dist/tests/value-objects/Email.spec.d.ts.map +1 -0
  275. package/dist/tests/value-objects/Email.spec.js +117 -0
  276. package/dist/tests/value-objects/Email.spec.js.map +1 -0
  277. package/dist/tests/value-objects/Enum.spec.d.ts +2 -0
  278. package/dist/tests/value-objects/Enum.spec.d.ts.map +1 -0
  279. package/dist/tests/value-objects/Enum.spec.js +233 -0
  280. package/dist/tests/value-objects/Enum.spec.js.map +1 -0
  281. package/dist/tests/value-objects/Integer.spec.d.ts +2 -0
  282. package/dist/tests/value-objects/Integer.spec.d.ts.map +1 -0
  283. package/dist/tests/value-objects/Integer.spec.js +31 -0
  284. package/dist/tests/value-objects/Integer.spec.js.map +1 -0
  285. package/dist/tests/value-objects/NullObject.spec.d.ts +2 -0
  286. package/dist/tests/value-objects/NullObject.spec.d.ts.map +1 -0
  287. package/dist/tests/value-objects/NullObject.spec.js +48 -0
  288. package/dist/tests/value-objects/NullObject.spec.js.map +1 -0
  289. package/dist/tests/value-objects/NumberValueObject.spec.d.ts +2 -0
  290. package/dist/tests/value-objects/NumberValueObject.spec.d.ts.map +1 -0
  291. package/dist/tests/value-objects/NumberValueObject.spec.js +333 -0
  292. package/dist/tests/value-objects/NumberValueObject.spec.js.map +1 -0
  293. package/dist/tests/value-objects/PositiveNumber.spec.d.ts +2 -0
  294. package/dist/tests/value-objects/PositiveNumber.spec.d.ts.map +1 -0
  295. package/dist/tests/value-objects/PositiveNumber.spec.js +209 -0
  296. package/dist/tests/value-objects/PositiveNumber.spec.js.map +1 -0
  297. package/dist/tests/value-objects/StringValueObject.spec.d.ts +2 -0
  298. package/dist/tests/value-objects/StringValueObject.spec.d.ts.map +1 -0
  299. package/dist/tests/value-objects/StringValueObject.spec.js +104 -0
  300. package/dist/tests/value-objects/StringValueObject.spec.js.map +1 -0
  301. package/dist/tests/value-objects/coordinates/Coordinates.spec.d.ts +2 -0
  302. package/dist/tests/value-objects/coordinates/Coordinates.spec.d.ts.map +1 -0
  303. package/dist/tests/value-objects/coordinates/Coordinates.spec.js +76 -0
  304. package/dist/tests/value-objects/coordinates/Coordinates.spec.js.map +1 -0
  305. package/dist/tests/value-objects/coordinates/Latitude.spec.d.ts +2 -0
  306. package/dist/tests/value-objects/coordinates/Latitude.spec.d.ts.map +1 -0
  307. package/dist/tests/value-objects/coordinates/Latitude.spec.js +23 -0
  308. package/dist/tests/value-objects/coordinates/Latitude.spec.js.map +1 -0
  309. package/dist/tests/value-objects/coordinates/Longitude.spec.d.ts +2 -0
  310. package/dist/tests/value-objects/coordinates/Longitude.spec.d.ts.map +1 -0
  311. package/dist/tests/value-objects/coordinates/Longitude.spec.js +23 -0
  312. package/dist/tests/value-objects/coordinates/Longitude.spec.js.map +1 -0
  313. package/dist/tests/value-objects/hashes/Hashes.spec.d.ts +2 -0
  314. package/dist/tests/value-objects/hashes/Hashes.spec.d.ts.map +1 -0
  315. package/dist/tests/value-objects/hashes/Hashes.spec.js +107 -0
  316. package/dist/tests/value-objects/hashes/Hashes.spec.js.map +1 -0
  317. package/dist/tests/value-objects/hashes/MD5Hash.spec.d.ts +2 -0
  318. package/dist/tests/value-objects/hashes/MD5Hash.spec.d.ts.map +1 -0
  319. package/dist/tests/value-objects/hashes/MD5Hash.spec.js +147 -0
  320. package/dist/tests/value-objects/hashes/MD5Hash.spec.js.map +1 -0
  321. package/dist/tests/value-objects/hashes/SHA256Hash.spec.d.ts +2 -0
  322. package/dist/tests/value-objects/hashes/SHA256Hash.spec.d.ts.map +1 -0
  323. package/dist/tests/value-objects/hashes/SHA256Hash.spec.js +147 -0
  324. package/dist/tests/value-objects/hashes/SHA256Hash.spec.js.map +1 -0
  325. package/dist/tests/value-objects/hashes/SHA512Hash.spec.d.ts +2 -0
  326. package/dist/tests/value-objects/hashes/SHA512Hash.spec.d.ts.map +1 -0
  327. package/dist/tests/value-objects/hashes/SHA512Hash.spec.js +147 -0
  328. package/dist/tests/value-objects/hashes/SHA512Hash.spec.js.map +1 -0
  329. package/dist/tests/value-objects/ids/ShortId.spec.d.ts +2 -0
  330. package/dist/tests/value-objects/ids/ShortId.spec.d.ts.map +1 -0
  331. package/dist/tests/value-objects/ids/ShortId.spec.js +30 -0
  332. package/dist/tests/value-objects/ids/ShortId.spec.js.map +1 -0
  333. package/dist/tests/value-objects/ids/UUID.spec.d.ts +2 -0
  334. package/dist/tests/value-objects/ids/UUID.spec.d.ts.map +1 -0
  335. package/dist/tests/value-objects/ids/UUID.spec.js +30 -0
  336. package/dist/tests/value-objects/ids/UUID.spec.js.map +1 -0
  337. package/dist/tests/value-objects/time/CalendarDay.spec.d.ts +2 -0
  338. package/dist/tests/value-objects/time/CalendarDay.spec.d.ts.map +1 -0
  339. package/dist/tests/value-objects/time/CalendarDay.spec.js +149 -0
  340. package/dist/tests/value-objects/time/CalendarDay.spec.js.map +1 -0
  341. package/dist/tests/value-objects/time/Day.spec.d.ts +2 -0
  342. package/dist/tests/value-objects/time/Day.spec.d.ts.map +1 -0
  343. package/dist/tests/value-objects/time/Day.spec.js +28 -0
  344. package/dist/tests/value-objects/time/Day.spec.js.map +1 -0
  345. package/dist/tests/value-objects/time/DayOfWeek.spec.d.ts +2 -0
  346. package/dist/tests/value-objects/time/DayOfWeek.spec.d.ts.map +1 -0
  347. package/dist/tests/value-objects/time/DayOfWeek.spec.js +44 -0
  348. package/dist/tests/value-objects/time/DayOfWeek.spec.js.map +1 -0
  349. package/dist/tests/value-objects/time/Duration.spec.d.ts +2 -0
  350. package/dist/tests/value-objects/time/Duration.spec.d.ts.map +1 -0
  351. package/dist/tests/value-objects/time/Duration.spec.js +255 -0
  352. package/dist/tests/value-objects/time/Duration.spec.js.map +1 -0
  353. package/dist/tests/value-objects/time/Hour.spec.d.ts +2 -0
  354. package/dist/tests/value-objects/time/Hour.spec.d.ts.map +1 -0
  355. package/dist/tests/value-objects/time/Hour.spec.js +168 -0
  356. package/dist/tests/value-objects/time/Hour.spec.js.map +1 -0
  357. package/dist/tests/value-objects/time/MonthOfYear.spec.d.ts +2 -0
  358. package/dist/tests/value-objects/time/MonthOfYear.spec.d.ts.map +1 -0
  359. package/dist/tests/value-objects/time/MonthOfYear.spec.js +93 -0
  360. package/dist/tests/value-objects/time/MonthOfYear.spec.js.map +1 -0
  361. package/dist/tests/value-objects/time/Timestamp.spec.d.ts +2 -0
  362. package/dist/tests/value-objects/time/Timestamp.spec.d.ts.map +1 -0
  363. package/dist/tests/value-objects/time/Timestamp.spec.js +391 -0
  364. package/dist/tests/value-objects/time/Timestamp.spec.js.map +1 -0
  365. package/dist/tests/value-objects/time/TimestampInterval.spec.d.ts +2 -0
  366. package/dist/tests/value-objects/time/TimestampInterval.spec.d.ts.map +1 -0
  367. package/dist/tests/value-objects/time/TimestampInterval.spec.js +270 -0
  368. package/dist/tests/value-objects/time/TimestampInterval.spec.js.map +1 -0
  369. package/dist/tests/value-objects/time/Year.spec.d.ts +2 -0
  370. package/dist/tests/value-objects/time/Year.spec.d.ts.map +1 -0
  371. package/dist/tests/value-objects/time/Year.spec.js +41 -0
  372. package/dist/tests/value-objects/time/Year.spec.js.map +1 -0
  373. package/package.json +6 -2
  374. package/.editorconfig +0 -15
  375. package/.eslintignore +0 -3
  376. package/.eslintrc.json +0 -218
  377. package/.prettierrc.json +0 -13
  378. package/TECHNICAL_DOCUMENTATION.md +0 -1257
  379. package/jest.config.ts +0 -30
  380. package/src/errors/BaseError.ts +0 -20
  381. package/src/errors/DomainError.ts +0 -12
  382. package/src/errors/InvalidColorError.ts +0 -7
  383. package/src/errors/InvalidDayError.ts +0 -7
  384. package/src/errors/InvalidDayFormatError.ts +0 -7
  385. package/src/errors/InvalidEmailError.ts +0 -7
  386. package/src/errors/InvalidFormatError.ts +0 -7
  387. package/src/errors/InvalidHashError.ts +0 -7
  388. package/src/errors/InvalidHourError.ts +0 -7
  389. package/src/errors/InvalidIntegerError.ts +0 -7
  390. package/src/errors/InvalidLatitudeError.ts +0 -7
  391. package/src/errors/InvalidLengthError.ts +0 -9
  392. package/src/errors/InvalidLongitudeError.ts +0 -7
  393. package/src/errors/InvalidMinutesError.ts +0 -7
  394. package/src/errors/InvalidNumberError.ts +0 -7
  395. package/src/errors/InvalidPositiveNumberError.ts +0 -7
  396. package/src/errors/InvalidStringLengthError.ts +0 -9
  397. package/src/errors/InvalidTimestampIntervalError.ts +0 -10
  398. package/src/errors/InvalidValueError.ts +0 -7
  399. package/src/errors/NullObjectError.ts +0 -8
  400. package/src/errors/ValueNotInEnumError.ts +0 -9
  401. package/src/interfaces/PrimitiveOf.ts +0 -5
  402. package/src/interfaces/index.ts +0 -1
  403. package/src/patterns/Assert.ts +0 -15
  404. package/src/patterns/index.ts +0 -1
  405. package/src/value-objects/Color.ts +0 -39
  406. package/src/value-objects/Email.ts +0 -23
  407. package/src/value-objects/Enum.ts +0 -31
  408. package/src/value-objects/Integer.ts +0 -22
  409. package/src/value-objects/NullObject.ts +0 -60
  410. package/src/value-objects/NumberValueObject.ts +0 -56
  411. package/src/value-objects/PositiveNumber.ts +0 -20
  412. package/src/value-objects/StringValueObject.ts +0 -27
  413. package/src/value-objects/ValueObject.ts +0 -39
  414. package/src/value-objects/coordinates/Coordinates.ts +0 -30
  415. package/src/value-objects/coordinates/Latitude.ts +0 -22
  416. package/src/value-objects/coordinates/Longitude.ts +0 -25
  417. package/src/value-objects/hashes/Hash.ts +0 -19
  418. package/src/value-objects/hashes/MD5Hash.ts +0 -32
  419. package/src/value-objects/hashes/SHA256Hash.ts +0 -38
  420. package/src/value-objects/hashes/SHA512Hash.ts +0 -38
  421. package/src/value-objects/ids/ShortId.ts +0 -34
  422. package/src/value-objects/ids/UUID.ts +0 -34
  423. package/src/value-objects/time/CalendarDay.ts +0 -91
  424. package/src/value-objects/time/Day.ts +0 -17
  425. package/src/value-objects/time/DayOfWeek.ts +0 -60
  426. package/src/value-objects/time/Duration.ts +0 -142
  427. package/src/value-objects/time/Hour.ts +0 -105
  428. package/src/value-objects/time/Month.ts +0 -39
  429. package/src/value-objects/time/MonthOfYear.ts +0 -52
  430. package/src/value-objects/time/Timestamp.ts +0 -208
  431. package/src/value-objects/time/TimestampInterval.ts +0 -122
  432. package/src/value-objects/time/Year.ts +0 -27
  433. package/tests/errors/BaseError.spec.ts +0 -63
  434. package/tests/errors/DomainError.spec.ts +0 -52
  435. package/tests/patterns/Assert.spec.ts +0 -29
  436. package/tests/setup.jest.ts +0 -2
  437. package/tests/value-objects/Color.spec.ts +0 -214
  438. package/tests/value-objects/Email.spec.ts +0 -141
  439. package/tests/value-objects/Enum.spec.ts +0 -293
  440. package/tests/value-objects/Integer.spec.ts +0 -38
  441. package/tests/value-objects/NullObject.spec.ts +0 -55
  442. package/tests/value-objects/NumberValueObject.spec.ts +0 -446
  443. package/tests/value-objects/PositiveNumber.spec.ts +0 -274
  444. package/tests/value-objects/StringValueObject.spec.ts +0 -135
  445. package/tests/value-objects/coordinates/Coordinates.spec.ts +0 -90
  446. package/tests/value-objects/coordinates/Latitude.spec.ts +0 -24
  447. package/tests/value-objects/coordinates/Longitude.spec.ts +0 -24
  448. package/tests/value-objects/hashes/Hashes.spec.ts +0 -139
  449. package/tests/value-objects/hashes/MD5Hash.spec.ts +0 -187
  450. package/tests/value-objects/hashes/SHA256Hash.spec.ts +0 -220
  451. package/tests/value-objects/hashes/SHA512Hash.spec.ts +0 -220
  452. package/tests/value-objects/ids/ShortId.spec.ts +0 -34
  453. package/tests/value-objects/ids/UUID.spec.ts +0 -37
  454. package/tests/value-objects/time/CalendarDay.spec.ts +0 -182
  455. package/tests/value-objects/time/Day.spec.ts +0 -29
  456. package/tests/value-objects/time/DayOfWeek.spec.ts +0 -71
  457. package/tests/value-objects/time/Duration.spec.ts +0 -278
  458. package/tests/value-objects/time/Hour.spec.ts +0 -197
  459. package/tests/value-objects/time/MonthOfYear.spec.ts +0 -111
  460. package/tests/value-objects/time/Timestamp.spec.ts +0 -497
  461. package/tests/value-objects/time/TimestampInterval.spec.ts +0 -383
  462. package/tests/value-objects/time/Year.spec.ts +0 -48
  463. package/tsconfig.jest.json +0 -33
  464. package/tsconfig.json +0 -42
@@ -1,55 +0,0 @@
1
- import { NullObject, NullObjectError } from '../../src';
2
-
3
- /* eslint-disable no-unused-expressions */
4
- describe('NullObject', () => {
5
- class TestNullObject {
6
- constructor(private readonly uid: string) {}
7
-
8
- public getUid(): string {
9
- return 'uid';
10
- }
11
-
12
- public getName(): string {
13
- return 'name';
14
- }
15
-
16
- public valueOf(): string {
17
- return this.getUid();
18
- }
19
- }
20
-
21
- let test: TestNullObject;
22
-
23
- beforeEach(() => {
24
- test = NullObject.new(TestNullObject);
25
- });
26
-
27
- it('should replace all methods with fake methods throwing NullObjectError', () => {
28
- expect(() => test.getUid()).toThrow(NullObjectError);
29
- expect(() => test.getName()).toThrow(NullObjectError);
30
- });
31
-
32
- it('should replace valueOf with undefined ', () => {
33
- expect(test.valueOf()).toBeUndefined();
34
- });
35
-
36
- it('should return true when checking if it is a null object', () => {
37
- expect(NullObject.isNullObject(test)).toBeTrue();
38
- });
39
-
40
- it('should return false when checking if empty object it is a null object', () => {
41
- expect(NullObject.isNullObject({})).toBeFalse();
42
- });
43
-
44
- it('should return false when checking if null it is a null object', () => {
45
- expect(NullObject.isNullObject(null)).toBeFalse();
46
- });
47
-
48
- it('should return false when checking if undefined it is a null object', () => {
49
- expect(NullObject.isNullObject(undefined)).toBeFalse();
50
- });
51
-
52
- it('should return false when checking if NaN it is a null object', () => {
53
- expect(NullObject.isNullObject(NaN)).toBeFalse();
54
- });
55
- });
@@ -1,446 +0,0 @@
1
- import { InvalidNumberError, NullObject, NumberValueObject } from '../../src';
2
-
3
- describe('NumberValueObject', () => {
4
- describe('constructor', () => {
5
- it('should return a NullValueObject when a Nullish is received', () => {
6
- expect(
7
- () => new NumberValueObject(undefined as unknown as number),
8
- ).not.toThrow();
9
- expect(
10
- NullObject.isNullObject(
11
- new NumberValueObject(undefined as unknown as number),
12
- ),
13
- ).toBeTrue();
14
- expect(
15
- NullObject.isNullObject(
16
- new NumberValueObject(null as unknown as number),
17
- ),
18
- ).toBeTrue();
19
- });
20
-
21
- it('should throw InvalidNumberError for NaN', () => {
22
- const value = NaN;
23
-
24
- expect(() => new NumberValueObject(value)).toThrow(InvalidNumberError);
25
- expect(() => new NumberValueObject(value)).toThrow(
26
- `Invalid number ${value}`,
27
- );
28
- });
29
- it('should throw InvalidNumberError for a parsed string', () => {
30
- const value = parseInt('Not a number');
31
-
32
- expect(() => new NumberValueObject(value)).toThrow(InvalidNumberError);
33
- expect(() => new NumberValueObject(value)).toThrow(
34
- `Invalid number ${value}`,
35
- );
36
- });
37
- });
38
-
39
- describe('isZero', () => {
40
- it('should return true when value is 0', () => {
41
- expect(new NumberValueObject(0).isZero()).toBeTrue();
42
- });
43
-
44
- it('should return false when value is not 0', () => {
45
- expect(new NumberValueObject(1).isZero()).toBeFalse();
46
- });
47
- });
48
-
49
- describe('isGreaterThan', () => {
50
- it('should return true when value is greater than other', () => {
51
- expect(
52
- new NumberValueObject(1).isGreaterThan(new NumberValueObject(0)),
53
- ).toBeTrue();
54
- });
55
-
56
- it('should return false when value is not greater than other', () => {
57
- expect(
58
- new NumberValueObject(0).isGreaterThan(new NumberValueObject(1)),
59
- ).toBeFalse();
60
- });
61
- });
62
- describe('isGreaterOrEqualThan', () => {
63
- it('should return true when value is greater than other', () => {
64
- expect(
65
- new NumberValueObject(1).isGreaterOrEqualThan(new NumberValueObject(0)),
66
- ).toBeTrue();
67
- });
68
-
69
- it('should return true when value is the equal than other', () => {
70
- expect(
71
- new NumberValueObject(1).isGreaterOrEqualThan(new NumberValueObject(1)),
72
- ).toBeTrue();
73
- });
74
-
75
- it('should return false when value is not greater than other', () => {
76
- expect(
77
- new NumberValueObject(0).isGreaterOrEqualThan(new NumberValueObject(1)),
78
- ).toBeFalse();
79
- });
80
- });
81
-
82
- describe('isLessThan', () => {
83
- it('should return true when value is less than other', () => {
84
- expect(
85
- new NumberValueObject(0).isLessThan(new NumberValueObject(1)),
86
- ).toBeTrue();
87
- });
88
-
89
- it('should return false when value is not less than other', () => {
90
- expect(
91
- new NumberValueObject(1).isLessThan(new NumberValueObject(0)),
92
- ).toBeFalse();
93
- });
94
- });
95
-
96
- describe('isLessOrEqualThan', () => {
97
- it('should return true when value is less than other', () => {
98
- expect(
99
- new NumberValueObject(0).isLessOrEqualThan(new NumberValueObject(1)),
100
- ).toBeTrue();
101
- });
102
-
103
- it('should return true when value is equal than other', () => {
104
- expect(
105
- new NumberValueObject(1).isLessOrEqualThan(new NumberValueObject(1)),
106
- ).toBeTrue();
107
- });
108
-
109
- it('should return false when value is not less than other', () => {
110
- expect(
111
- new NumberValueObject(1).isLessOrEqualThan(new NumberValueObject(0)),
112
- ).toBeFalse();
113
- });
114
- });
115
-
116
- describe('add', () => {
117
- it('should return a new NumberValueObject with the sum of the two values', () => {
118
- const value = new NumberValueObject(1);
119
- const other = new NumberValueObject(2);
120
- const result = value.add(other);
121
- expect(result.valueOf()).toEqual(3);
122
- });
123
-
124
- it('should not mutate original objects when adding', () => {
125
- const original = new NumberValueObject(10);
126
- const other = new NumberValueObject(5);
127
- const originalValue = original.valueOf();
128
- const otherValue = other.valueOf();
129
-
130
- const result = original.add(other);
131
-
132
- // Original objects should remain unchanged
133
- expect(original.valueOf()).toBe(originalValue);
134
- expect(original.valueOf()).toBe(10);
135
- expect(other.valueOf()).toBe(otherValue);
136
- expect(other.valueOf()).toBe(5);
137
-
138
- // Result should be a new instance
139
- expect(result.valueOf()).toBe(15);
140
- expect(result).not.toBe(original);
141
- expect(result).not.toBe(other);
142
- });
143
-
144
- it('should work with primitive numbers and maintain immutability', () => {
145
- const original = new NumberValueObject(15);
146
- const originalValue = original.valueOf();
147
-
148
- const result = original.add(5);
149
-
150
- // Original should remain unchanged
151
- expect(original.valueOf()).toBe(originalValue);
152
- expect(original.valueOf()).toBe(15);
153
-
154
- // Result should be correct and a new instance
155
- expect(result.valueOf()).toBe(20);
156
- expect(result).not.toBe(original);
157
- });
158
-
159
- it('should maintain immutability when adding zero', () => {
160
- const original = new NumberValueObject(42);
161
- const zero = new NumberValueObject(0);
162
- const originalValue = original.valueOf();
163
-
164
- const result = original.add(zero);
165
-
166
- // Original should remain unchanged
167
- expect(original.valueOf()).toBe(originalValue);
168
- expect(original.valueOf()).toBe(42);
169
- expect(zero.valueOf()).toBe(0);
170
-
171
- // Result should be correct and a new instance
172
- expect(result.valueOf()).toBe(42);
173
- expect(result).not.toBe(original);
174
- });
175
- });
176
-
177
- describe('subtract', () => {
178
- it('should return a new NumberValueObject with the difference of the two values', () => {
179
- const value = new NumberValueObject(1);
180
- const other = new NumberValueObject(2);
181
- const result = value.subtract(other);
182
- expect(result.valueOf()).toEqual(-1);
183
- });
184
-
185
- it('should not mutate original objects when subtracting', () => {
186
- const original = new NumberValueObject(10);
187
- const other = new NumberValueObject(3);
188
- const originalValue = original.valueOf();
189
- const otherValue = other.valueOf();
190
-
191
- const result = original.subtract(other);
192
-
193
- // Original objects should remain unchanged
194
- expect(original.valueOf()).toBe(originalValue);
195
- expect(original.valueOf()).toBe(10);
196
- expect(other.valueOf()).toBe(otherValue);
197
- expect(other.valueOf()).toBe(3);
198
-
199
- // Result should be a new instance
200
- expect(result.valueOf()).toBe(7);
201
- expect(result).not.toBe(original);
202
- expect(result).not.toBe(other);
203
- });
204
-
205
- it('should work with primitive numbers and maintain immutability', () => {
206
- const original = new NumberValueObject(15);
207
- const originalValue = original.valueOf();
208
-
209
- const result = original.subtract(3);
210
-
211
- // Original should remain unchanged
212
- expect(original.valueOf()).toBe(originalValue);
213
- expect(original.valueOf()).toBe(15);
214
-
215
- // Result should be correct and a new instance
216
- expect(result.valueOf()).toBe(12);
217
- expect(result).not.toBe(original);
218
- });
219
-
220
- it('should maintain immutability when subtracting zero', () => {
221
- const original = new NumberValueObject(42);
222
- const zero = new NumberValueObject(0);
223
- const originalValue = original.valueOf();
224
-
225
- const result = original.subtract(zero);
226
-
227
- // Original should remain unchanged
228
- expect(original.valueOf()).toBe(originalValue);
229
- expect(original.valueOf()).toBe(42);
230
- expect(zero.valueOf()).toBe(0);
231
-
232
- // Result should be correct and a new instance
233
- expect(result.valueOf()).toBe(42);
234
- expect(result).not.toBe(original);
235
- });
236
- });
237
-
238
- describe('multiply', () => {
239
- it('should return a new NumberValueObject with the product of the two values', () => {
240
- const value = new NumberValueObject(1);
241
- const other = new NumberValueObject(2);
242
- const result = value.multiply(other);
243
- expect(result.valueOf()).toEqual(2);
244
- });
245
-
246
- it('should not mutate original objects when multiplying', () => {
247
- const original = new NumberValueObject(7);
248
- const other = new NumberValueObject(6);
249
- const originalValue = original.valueOf();
250
- const otherValue = other.valueOf();
251
-
252
- const result = original.multiply(other);
253
-
254
- // Original objects should remain unchanged
255
- expect(original.valueOf()).toBe(originalValue);
256
- expect(original.valueOf()).toBe(7);
257
- expect(other.valueOf()).toBe(otherValue);
258
- expect(other.valueOf()).toBe(6);
259
-
260
- // Result should be a new instance
261
- expect(result.valueOf()).toBe(42);
262
- expect(result).not.toBe(original);
263
- expect(result).not.toBe(other);
264
- });
265
-
266
- it('should work with primitive numbers and maintain immutability', () => {
267
- const original = new NumberValueObject(15);
268
- const originalValue = original.valueOf();
269
-
270
- const result = original.multiply(2);
271
-
272
- // Original should remain unchanged
273
- expect(original.valueOf()).toBe(originalValue);
274
- expect(original.valueOf()).toBe(15);
275
-
276
- // Result should be correct and a new instance
277
- expect(result.valueOf()).toBe(30);
278
- expect(result).not.toBe(original);
279
- });
280
-
281
- it('should maintain immutability when multiplying by zero', () => {
282
- const original = new NumberValueObject(42);
283
- const zero = new NumberValueObject(0);
284
- const originalValue = original.valueOf();
285
-
286
- const result = original.multiply(zero);
287
-
288
- // Original should remain unchanged
289
- expect(original.valueOf()).toBe(originalValue);
290
- expect(original.valueOf()).toBe(42);
291
- expect(zero.valueOf()).toBe(0);
292
-
293
- // Result should be correct and a new instance
294
- expect(result.valueOf()).toBe(0);
295
- expect(result).not.toBe(original);
296
- });
297
- });
298
-
299
- describe('divide', () => {
300
- it('should return a new NumberValueObject with the quotient of the two values', () => {
301
- const value = new NumberValueObject(1);
302
- const other = new NumberValueObject(2);
303
- const result = value.divide(other);
304
- expect(result.valueOf()).toEqual(0.5);
305
- });
306
-
307
- it('should not mutate original objects when dividing', () => {
308
- const original = new NumberValueObject(20);
309
- const other = new NumberValueObject(4);
310
- const originalValue = original.valueOf();
311
- const otherValue = other.valueOf();
312
-
313
- const result = original.divide(other);
314
-
315
- // Original objects should remain unchanged
316
- expect(original.valueOf()).toBe(originalValue);
317
- expect(original.valueOf()).toBe(20);
318
- expect(other.valueOf()).toBe(otherValue);
319
- expect(other.valueOf()).toBe(4);
320
-
321
- // Result should be a new instance
322
- expect(result.valueOf()).toBe(5);
323
- expect(result).not.toBe(original);
324
- expect(result).not.toBe(other);
325
- });
326
-
327
- it('should work with primitive numbers and maintain immutability', () => {
328
- const original = new NumberValueObject(15);
329
- const originalValue = original.valueOf();
330
-
331
- const result = original.divide(3);
332
-
333
- // Original should remain unchanged
334
- expect(original.valueOf()).toBe(originalValue);
335
- expect(original.valueOf()).toBe(15);
336
-
337
- // Result should be correct and a new instance
338
- expect(result.valueOf()).toBe(5);
339
- expect(result).not.toBe(original);
340
- });
341
- });
342
-
343
- describe('inheritance and ValueObject behavior', () => {
344
- it('should inherit from ValueObject', () => {
345
- const numberValueObject = new NumberValueObject(42);
346
- expect(numberValueObject).toBeInstanceOf(NumberValueObject);
347
- expect(numberValueObject.valueOf).toBeDefined();
348
- expect(numberValueObject.isEqual).toBeDefined();
349
- expect(numberValueObject.toString).toBeDefined();
350
- });
351
-
352
- it('should implement valueOf() method correctly', () => {
353
- const value = 123.45;
354
- const numberValueObject = new NumberValueObject(value);
355
- expect(numberValueObject.valueOf()).toBe(value);
356
- });
357
-
358
- it('should implement toString() method correctly from ValueObject', () => {
359
- const value = 987.654;
360
- const numberValueObject = new NumberValueObject(value);
361
- expect(numberValueObject.toString()).toBe(value.toString());
362
- expect(numberValueObject.toString()).toBe('987.654');
363
- });
364
-
365
- it('should implement isEqual() method correctly', () => {
366
- const value = 100;
367
- const numberValueObject1 = new NumberValueObject(value);
368
- const numberValueObject2 = new NumberValueObject(value);
369
- const numberValueObject3 = new NumberValueObject(200);
370
-
371
- expect(numberValueObject1.isEqual(numberValueObject2)).toBeTrue();
372
- expect(numberValueObject1.isEqual(numberValueObject3)).toBeFalse();
373
- expect(numberValueObject1.isEqual(value)).toBeTrue();
374
- expect(numberValueObject1.isEqual(200)).toBeFalse();
375
- });
376
-
377
- it('should compare with primitive values using isEqual', () => {
378
- const numberValueObject = new NumberValueObject(42);
379
- expect(numberValueObject.isEqual(42)).toBeTrue();
380
- expect(numberValueObject.isEqual(43)).toBeFalse();
381
- });
382
-
383
- it('should implement clone() method correctly', () => {
384
- const originalValue = 3.14159;
385
- const original = new NumberValueObject(originalValue);
386
- const cloned = (original as any).clone();
387
-
388
- expect(cloned).toBeInstanceOf(NumberValueObject);
389
- expect(cloned.valueOf()).toBe(originalValue);
390
- expect(cloned.toString()).toBe(originalValue.toString());
391
- expect(cloned.isEqual(original)).toBeTrue();
392
- expect(cloned).not.toBe(original); // Different instances
393
- });
394
-
395
- it('should accept another NumberValueObject in constructor', () => {
396
- const original = new NumberValueObject(555);
397
- const copy = new NumberValueObject(original);
398
- expect(copy.valueOf()).toBe(555);
399
- expect(copy.isEqual(original)).toBeTrue();
400
- });
401
-
402
- it('should validate number when constructed from another NumberValueObject', () => {
403
- const validNumberValueObject = new NumberValueObject(123);
404
- expect(() => new NumberValueObject(validNumberValueObject)).not.toThrow();
405
-
406
- // Create an invalid NumberValueObject by bypassing validation (for testing)
407
- const invalidValue = NaN;
408
- expect(() => new NumberValueObject(invalidValue)).toThrow(
409
- InvalidNumberError,
410
- );
411
- });
412
-
413
- it('should maintain immutability with chained operations', () => {
414
- const original = new NumberValueObject(10);
415
- const two = new NumberValueObject(2);
416
- const three = new NumberValueObject(3);
417
-
418
- const originalValue = original.valueOf();
419
- const twoValue = two.valueOf();
420
- const threeValue = three.valueOf();
421
-
422
- // Chain operations: (10 + 2) * 3 / 2
423
- const step1 = original.add(two);
424
- const step2 = step1.multiply(three);
425
- const final = step2.divide(two);
426
-
427
- // All original objects should remain unchanged
428
- expect(original.valueOf()).toBe(originalValue);
429
- expect(original.valueOf()).toBe(10);
430
- expect(two.valueOf()).toBe(twoValue);
431
- expect(two.valueOf()).toBe(2);
432
- expect(three.valueOf()).toBe(threeValue);
433
- expect(three.valueOf()).toBe(3);
434
-
435
- // Each step should create new instances
436
- expect(step1.valueOf()).toBe(12);
437
- expect(step2.valueOf()).toBe(36);
438
- expect(final.valueOf()).toBe(18);
439
-
440
- // All results should be different instances
441
- expect(step1).not.toBe(original);
442
- expect(step2).not.toBe(step1);
443
- expect(final).not.toBe(step2);
444
- });
445
- });
446
- });