foobara 0.5.10 → 0.6.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 (325) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/CHANGELOG.md +22 -0
  4. data/lib/foobara/all.rb +4 -2
  5. data/projects/command/src/command_pattern_implementation/concerns/command_data.rb +3 -3
  6. data/projects/command/src/command_pattern_implementation/concerns/domain_mappers.rb +2 -2
  7. data/projects/command/src/command_pattern_implementation/concerns/errors.rb +27 -27
  8. data/projects/command/src/command_pattern_implementation/concerns/errors_type.rb +7 -11
  9. data/projects/command/src/command_pattern_implementation/concerns/inputs.rb +4 -24
  10. data/projects/command/src/command_pattern_implementation/concerns/inputs_type.rb +9 -14
  11. data/projects/command/src/command_pattern_implementation/concerns/reflection.rb +7 -20
  12. data/projects/command/src/command_pattern_implementation/concerns/runtime.rb +3 -48
  13. data/projects/command/src/command_pattern_implementation/concerns/subcommands.rb +5 -5
  14. data/projects/command/src/command_pattern_implementation.rb +0 -1
  15. data/projects/command_connectors/lib/foobara/command_connectors.rb +1 -1
  16. data/projects/command_connectors/src/command_connector/concerns/desugarizers.rb +5 -5
  17. data/projects/command_connectors/src/command_connector/concerns/reflection.rb +63 -17
  18. data/projects/command_connectors/src/command_connector/request.rb +26 -10
  19. data/projects/command_connectors/src/command_connector/response.rb +2 -0
  20. data/projects/command_connectors/src/command_connector.rb +62 -58
  21. data/projects/command_connectors/src/command_registry/exposed_command.rb +7 -2
  22. data/projects/command_connectors/src/command_registry.rb +24 -18
  23. data/projects/command_connectors/src/desugarizer.rb +2 -2
  24. data/projects/command_connectors/src/desugarizers/attributes.rb +8 -8
  25. data/projects/command_connectors/src/desugarizers/auth.rb +1 -1
  26. data/projects/command_connectors/src/desugarizers/set_inputs.rb +3 -3
  27. data/projects/command_connectors/src/desugarizers/symbols_to_true.rb +2 -2
  28. data/projects/command_connectors/src/request_mutator.rb +6 -6
  29. data/projects/command_connectors/src/response_mutator.rb +6 -6
  30. data/projects/command_connectors/src/transformed_command.rb +39 -36
  31. data/projects/command_connectors/src/transformers/auth_errors_transformer.rb +2 -2
  32. data/projects/command_connectors/src/transformers/entity_to_primary_key_inputs_transformer.rb +2 -2
  33. data/projects/command_connectors/src/transformers/load_delegated_attributes_entities_pre_commit_transformer.rb +1 -1
  34. data/projects/domain_mapper/src/domain_mapper.rb +4 -4
  35. data/projects/domain_mapper/src/domain_mapper_lookups.rb +3 -3
  36. data/projects/entities/projects/detached_entity/lib/foobara/detached_entity.rb +1 -1
  37. data/projects/entities/projects/detached_entity/src/concerns/associations.rb +18 -18
  38. data/projects/entities/projects/detached_entity/src/concerns/initialization.rb +2 -2
  39. data/projects/entities/projects/detached_entity/src/concerns/primary_key.rb +4 -4
  40. data/projects/entities/projects/detached_entity/src/concerns/types.rb +2 -2
  41. data/projects/entities/projects/detached_entity/src/detached_entity_type.rb +4 -4
  42. data/projects/entities/projects/detached_entity/src/extensions/builtin_types/detached_entity/casters/primary_key.rb +1 -1
  43. data/projects/entities/projects/detached_entity/src/extensions/builtin_types/detached_entity/validators/model_instance_is_valid.rb +2 -2
  44. data/projects/entities/projects/detached_entity/src/extensions/type_declarations/handlers/registered_type_declaration/validate_primary_key_present.rb +30 -0
  45. data/projects/entities/projects/detached_entity/src/remove_sensitive_values_transformer_extensions.rb +2 -2
  46. data/projects/entities/projects/entity/lib/foobara/entity.rb +1 -1
  47. data/projects/entities/projects/entity/src/concerns/attributes.rb +6 -6
  48. data/projects/entities/projects/entity/src/concerns/callbacks.rb +1 -1
  49. data/projects/entities/projects/entity/src/concerns/initialization.rb +8 -8
  50. data/projects/entities/projects/entity/src/concerns/mutations.rb +4 -4
  51. data/projects/entities/projects/entity/src/concerns/persistence.rb +3 -3
  52. data/projects/entities/projects/entity/src/concerns/queries.rb +7 -7
  53. data/projects/entities/projects/entity/src/extensions/domain/domain_module_extension.rb +4 -4
  54. data/projects/entities/projects/entity/src/new_prepend.rb +2 -2
  55. data/projects/entities/projects/entity/src/not_found_error.rb +8 -8
  56. data/projects/entities/projects/entity/src/sensitive_value_removers/entity.rb +8 -5
  57. data/projects/entities/projects/in_memory_crud_driver_minimal/src/in_memory_minimal.rb +4 -4
  58. data/projects/entities/projects/model_attribute_helpers/lib/foobara/model_attribute_helpers.rb +0 -2
  59. data/projects/entities/projects/model_attribute_helpers/src/attribute_helper_aliases.rb +1 -1
  60. data/projects/entities/projects/model_attribute_helpers/src/attribute_helpers.rb +2 -2
  61. data/projects/entities/projects/nested_transactionable/lib/foobara/nested_transactionable.rb +5 -5
  62. data/projects/entities/projects/persistence/lib/foobara/persistence.rb +1 -1
  63. data/projects/entities/projects/persistence/src/entity_attributes_crud_driver.rb +35 -37
  64. data/projects/entities/projects/persistence/src/entity_base/transaction/concerns/entity_callback_handling.rb +25 -25
  65. data/projects/entities/projects/persistence/src/entity_base/transaction/concerns/state_transitions.rb +8 -8
  66. data/projects/entities/projects/persistence/src/entity_base/transaction/concerns/transaction_tracking.rb +1 -1
  67. data/projects/entities/projects/persistence/src/entity_base/transaction.rb +9 -9
  68. data/projects/entities/projects/persistence/src/entity_base/transaction_table/concerns/record_tracking.rb +4 -4
  69. data/projects/entities/projects/persistence/src/entity_base/transaction_table.rb +52 -52
  70. data/projects/entities/projects/persistence/src/entity_base.rb +7 -7
  71. data/projects/entities/projects/persistence/src/persistence.rb +23 -23
  72. data/projects/entities/projects/weak_object_set/src/weak_object_set.rb +16 -16
  73. data/projects/entities_plumbing/lib/foobara/entities_plumbing.rb +6 -2
  74. data/projects/entities_plumbing/src/extensions/command_pattern_implementation/concerns/entities.rb +21 -5
  75. data/projects/entities_plumbing/src/extensions/command_pattern_implementation/concerns/entity_errors_type.rb +23 -0
  76. data/projects/entities_plumbing/src/extensions/command_pattern_implementation/concerns/entity_inputs.rb +33 -0
  77. data/projects/entities_plumbing/src/extensions/command_pattern_implementation/concerns/entity_reflection.rb +39 -0
  78. data/projects/entities_plumbing/src/extensions/command_pattern_implementation/concerns/runtime.rb +39 -0
  79. data/projects/manifest/src/base_manifest.rb +9 -9
  80. data/projects/manifest/src/model.rb +4 -4
  81. data/projects/manifest/src/type.rb +3 -3
  82. data/projects/manifest/src/type_declaration.rb +4 -4
  83. data/projects/model_plumbing/lib/foobara/model_plumbing.rb +2 -0
  84. data/projects/model_plumbing/src/extensions/command_pattern_implementation/concerns/model_inputs_type.rb +35 -0
  85. data/projects/typesystem/projects/builtin_types/lib/foobara/builtin_types.rb +2 -1
  86. data/projects/typesystem/projects/builtin_types/src/builtin_types.rb +8 -8
  87. data/projects/typesystem/projects/builtin_types/src/duck/supported_validators/one_of/type_declaration_extension/extend_registered_type_declaration/desugarizers/module_desugarizer.rb +2 -2
  88. data/projects/typesystem/projects/builtin_types/src/email/validator_base.rb +4 -4
  89. data/projects/typesystem/projects/callback/src/block/concerns/block_parameter_required.rb +2 -2
  90. data/projects/typesystem/projects/callback/src/block/concerns/keyword_argumentable_block.rb +2 -2
  91. data/projects/typesystem/projects/callback/src/block/concerns/single_argument_block.rb +2 -2
  92. data/projects/typesystem/projects/callback/src/block.rb +4 -4
  93. data/projects/typesystem/projects/callback/src/registry/base.rb +10 -10
  94. data/projects/typesystem/projects/callback/src/registry/conditioned.rb +2 -2
  95. data/projects/typesystem/projects/callback/src/registry/multiple_action.rb +6 -6
  96. data/projects/typesystem/projects/callback/src/runner.rb +4 -4
  97. data/projects/typesystem/projects/callback/src/set.rb +4 -4
  98. data/projects/typesystem/projects/common/src/data_path.rb +14 -14
  99. data/projects/typesystem/projects/common/src/error.rb +11 -11
  100. data/projects/typesystem/projects/common/src/error_collection.rb +14 -14
  101. data/projects/typesystem/projects/common/src/error_key.rb +5 -3
  102. data/projects/typesystem/projects/common/src/outcome.rb +5 -5
  103. data/projects/typesystem/projects/common/src/possible_error.rb +2 -2
  104. data/projects/typesystem/projects/concerns/src/concern.rb +3 -3
  105. data/projects/typesystem/projects/delegate/src/extensions/module.rb +4 -4
  106. data/projects/typesystem/projects/domain/lib/foobara/domain.rb +2 -2
  107. data/projects/typesystem/projects/domain/src/domain.rb +5 -5
  108. data/projects/typesystem/projects/domain/src/domain_module_extension.rb +22 -22
  109. data/projects/typesystem/projects/domain/src/extensions/foobara.rb +14 -6
  110. data/projects/typesystem/projects/domain/src/module_extension.rb +4 -4
  111. data/projects/typesystem/projects/domain/src/organization.rb +6 -6
  112. data/projects/typesystem/projects/enumerated/src/accessors.rb +4 -4
  113. data/projects/typesystem/projects/enumerated/src/values.rb +14 -14
  114. data/projects/{entities → typesystem}/projects/model/lib/foobara/model.rb +1 -1
  115. data/projects/{entities → typesystem}/projects/model/src/concerns/classes.rb +4 -4
  116. data/projects/{entities → typesystem}/projects/model/src/concerns/types.rb +5 -5
  117. data/projects/{entities → typesystem}/projects/model/src/extensions/builtin_types/model/casters/hash.rb +1 -1
  118. data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/attributes_handler_desugarizer.rb +2 -2
  119. data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/model_class_desugarizer.rb +6 -6
  120. data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/to_type_transformer.rb +4 -4
  121. data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/extend_registered_model_type_declaration.rb +2 -2
  122. data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/registered_type_declaration/model_class_desugarizer.rb +6 -10
  123. data/projects/{entities → typesystem}/projects/model/src/model.rb +13 -13
  124. data/projects/{entities → typesystem}/projects/model/src/sensitive_value_removers/model.rb +1 -1
  125. data/projects/typesystem/projects/namespace/src/ambiguous_registry.rb +5 -5
  126. data/projects/typesystem/projects/namespace/src/base_registry.rb +8 -8
  127. data/projects/typesystem/projects/namespace/src/is_namespace.rb +19 -19
  128. data/projects/typesystem/projects/namespace/src/namespace/lookup_mode.rb +2 -2
  129. data/projects/typesystem/projects/namespace/src/namespace.rb +5 -5
  130. data/projects/typesystem/projects/namespace/src/namespace_helpers.rb +4 -4
  131. data/projects/typesystem/projects/namespace/src/prefixless_registry.rb +3 -3
  132. data/projects/typesystem/projects/namespace/src/scoped.rb +7 -7
  133. data/projects/typesystem/projects/project/src/foobara.rb +13 -7
  134. data/projects/typesystem/projects/project/src/project.rb +1 -1
  135. data/projects/typesystem/projects/state_machine/src/callbacks.rb +14 -14
  136. data/projects/typesystem/projects/state_machine/src/state_machine.rb +2 -2
  137. data/projects/typesystem/projects/state_machine/src/sugar.rb +3 -3
  138. data/projects/typesystem/projects/type_declarations/lib/foobara/type_declarations.rb +1 -1
  139. data/projects/typesystem/projects/type_declarations/src/attributes.rb +2 -2
  140. data/projects/typesystem/projects/type_declarations/src/attributes_transformers/from_yaml.rb +2 -2
  141. data/projects/typesystem/projects/type_declarations/src/attributes_transformers/only.rb +2 -2
  142. data/projects/typesystem/projects/type_declarations/src/attributes_transformers/reject.rb +2 -2
  143. data/projects/typesystem/projects/type_declarations/src/attributes_transformers/set.rb +4 -4
  144. data/projects/typesystem/projects/type_declarations/src/desugarizer.rb +2 -2
  145. data/projects/typesystem/projects/type_declarations/src/dsl/attributes.rb +9 -9
  146. data/projects/typesystem/projects/type_declarations/src/error_extension.rb +6 -6
  147. data/projects/typesystem/projects/type_declarations/src/handlers/extend_array_type_declaration/array_desugarizer.rb +3 -3
  148. data/projects/typesystem/projects/type_declarations/src/handlers/extend_array_type_declaration/element_type_declaration_desugarizer.rb +2 -2
  149. data/projects/typesystem/projects/type_declarations/src/handlers/extend_array_type_declaration/type_set_to_array_desugarizer.rb +2 -2
  150. data/projects/typesystem/projects/type_declarations/src/handlers/extend_attributes_type_declaration/element_type_declarations_desugarizer.rb +2 -2
  151. data/projects/typesystem/projects/type_declarations/src/handlers/extend_registered_type_declaration/to_type_transformer.rb +2 -2
  152. data/projects/typesystem/projects/type_declarations/src/handlers/extend_registered_type_declaration.rb +2 -2
  153. data/projects/typesystem/projects/type_declarations/src/handlers/extend_tuple_type_declaration/array_desugarizer.rb +2 -2
  154. data/projects/typesystem/projects/type_declarations/src/handlers/registered_type_declaration.rb +4 -3
  155. data/projects/typesystem/projects/type_declarations/src/remove_sensitive_values_transformer.rb +3 -3
  156. data/projects/typesystem/projects/type_declarations/src/type_builder.rb +5 -5
  157. data/projects/typesystem/projects/type_declarations/src/type_declaration.rb +7 -1
  158. data/projects/typesystem/projects/type_declarations/src/type_declaration_handler.rb +13 -13
  159. data/projects/typesystem/projects/type_declarations/src/type_declaration_handler_registry.rb +2 -2
  160. data/projects/typesystem/projects/type_declarations/src/type_declaration_validator.rb +2 -2
  161. data/projects/typesystem/projects/type_declarations/src/type_declarations.rb +2 -2
  162. data/projects/typesystem/projects/type_declarations/src/with_registries.rb +2 -2
  163. data/projects/typesystem/projects/types/lib/foobara/types.rb +0 -2
  164. data/projects/typesystem/projects/types/src/extensions/error.rb +5 -5
  165. data/projects/typesystem/projects/types/src/type/concerns/reflection.rb +22 -22
  166. data/projects/typesystem/projects/types/src/type/concerns/supported_processor_registration.rb +4 -4
  167. data/projects/typesystem/projects/types/src/type.rb +25 -25
  168. data/projects/typesystem/projects/value/src/caster.rb +11 -11
  169. data/projects/typesystem/projects/value/src/data_error.rb +1 -1
  170. data/projects/typesystem/projects/value/src/mutator.rb +3 -3
  171. data/projects/typesystem/projects/value/src/processor/casting.rb +6 -6
  172. data/projects/typesystem/projects/value/src/processor/pipeline.rb +2 -2
  173. data/projects/typesystem/projects/value/src/processor/runner.rb +1 -1
  174. data/projects/typesystem/projects/value/src/processor/selection.rb +3 -3
  175. data/projects/typesystem/projects/value/src/processor.rb +23 -23
  176. data/projects/typesystem/projects/value/src/transformer.rb +5 -5
  177. data/projects/typesystem/projects/value/src/validator.rb +3 -3
  178. data/version.rb +2 -2
  179. metadata +44 -160
  180. data/projects/command_connectors/Guardfile +0 -6
  181. data/projects/command_connectors/spec/allowed_rules_spec.rb +0 -77
  182. data/projects/command_connectors/spec/ambiguous_lookups_spec.rb +0 -143
  183. data/projects/command_connectors/spec/auth_mappers_spec.rb +0 -201
  184. data/projects/command_connectors/spec/command_connector_spec.rb +0 -2460
  185. data/projects/command_connectors/spec/command_registry_spec.rb +0 -9
  186. data/projects/command_connectors/spec/commands/describe_spec.rb +0 -83
  187. data/projects/command_connectors/spec/commands/ping_spec.rb +0 -14
  188. data/projects/command_connectors/spec/commands/query_git_commit_info_spec.rb +0 -55
  189. data/projects/command_connectors/spec/fixtures/command_connectors/manifest_with_errors_with_missing_command_parents.yaml +0 -1662
  190. data/projects/command_connectors/spec/not_found_error_spec.rb +0 -17
  191. data/projects/command_connectors/spec/pre_commit_transformers/load_atoms_pre_commit_transformer_spec.rb +0 -108
  192. data/projects/command_connectors/spec/request_spec.rb +0 -118
  193. data/projects/command_connectors/spec/serializer_spec.rb +0 -9
  194. data/projects/command_connectors/spec/serializers/aggregate_serializer_spec.rb +0 -45
  195. data/projects/command_connectors/spec/serializers/atomic_serializer_spec.rb +0 -68
  196. data/projects/command_connectors/spec/serializers/entities_to_primary_keys_serializer_spec.rb +0 -36
  197. data/projects/command_connectors/spec/serializers/json_serializer_spec.rb +0 -22
  198. data/projects/command_connectors/spec/serializers/noop_serializer_spec.rb +0 -22
  199. data/projects/command_connectors/spec/serializers/yaml_serializer_spec.rb +0 -22
  200. data/projects/command_connectors/spec/spec_helper.rb +0 -56
  201. data/projects/command_connectors/spec/support/rubyprof.rb +0 -32
  202. data/projects/command_connectors/spec/support/term_trap.rb +0 -6
  203. data/projects/command_connectors/spec/transformers/entity_to_primary_key_inputs_transformer_spec.rb +0 -119
  204. data/projects/entities/Guardfile +0 -6
  205. data/projects/entities/spec/builtin_types/detached_entity_spec.rb +0 -300
  206. data/projects/entities/spec/builtin_types/entity_spec.rb +0 -501
  207. data/projects/entities/spec/builtin_types/model_spec.rb +0 -420
  208. data/projects/entities/spec/detached_entity/casting_spec.rb +0 -31
  209. data/projects/entities/spec/entity/concerns/associations_spec.rb +0 -73
  210. data/projects/entities/spec/entity/concerns/attribute_helpers_spec.rb +0 -220
  211. data/projects/entities/spec/entity/concerns/callbacks_spec.rb +0 -61
  212. data/projects/entities/spec/entity/concerns/initialization_spec.rb +0 -213
  213. data/projects/entities/spec/entity/concerns/mutations_spec.rb +0 -38
  214. data/projects/entities/spec/entity/concerns/queries_spec.rb +0 -184
  215. data/projects/entities/spec/entity/entity_spec.rb +0 -240
  216. data/projects/entities/spec/entity/extending_existing_spec.rb +0 -137
  217. data/projects/entities/spec/entity/extensions/domain_module_extension_spec.rb +0 -42
  218. data/projects/entities/spec/entity/from_type_declaration_spec.rb +0 -34
  219. data/projects/entities/spec/entity/that_owns_spec.rb +0 -243
  220. data/projects/entities/spec/entity/weak_object_set_spec.rb +0 -91
  221. data/projects/entities/spec/model/model_spec.rb +0 -135
  222. data/projects/entities/spec/model/types_spec.rb +0 -397
  223. data/projects/entities/spec/nested_transactionable/nested_transactionable_spec.rb +0 -67
  224. data/projects/entities/spec/persistence/entity_attributes_crud_drivers/in_memory_minimal_spec.rb +0 -13
  225. data/projects/entities/spec/persistence/entity_base/transaction_spec.rb +0 -509
  226. data/projects/entities/spec/persistence/entity_base/transaction_table_spec.rb +0 -58
  227. data/projects/entities/spec/persistence/persistence_spec.rb +0 -148
  228. data/projects/entities/spec/spec_helper.rb +0 -54
  229. data/projects/entities/spec/support/rubyprof.rb +0 -32
  230. data/projects/entities/spec/support/term_trap.rb +0 -6
  231. data/projects/entities/spec/type_declarations/sensitive_type_removers_spec.rb +0 -90
  232. data/projects/entities_plumbing/Guardfile +0 -6
  233. data/projects/entities_plumbing/spec/auth_mappers_spec.rb +0 -159
  234. data/projects/entities_plumbing/spec/spec_helper.rb +0 -55
  235. data/projects/entities_plumbing/spec/support/rubyprof.rb +0 -32
  236. data/projects/entities_plumbing/spec/support/term_trap.rb +0 -6
  237. data/projects/entities_plumbing/spec/transaction_spec.rb +0 -534
  238. data/projects/manifest/Guardfile +0 -6
  239. data/projects/manifest/spec/associations_spec.rb +0 -67
  240. data/projects/manifest/spec/manifest_spec.rb +0 -382
  241. data/projects/manifest/spec/model_spec.rb +0 -126
  242. data/projects/manifest/spec/spec_helper.rb +0 -54
  243. data/projects/manifest/spec/type_declaration_spec.rb +0 -39
  244. data/projects/manifest/spec/type_spec.rb +0 -30
  245. data/projects/typesystem/spec/builtin_types/allow_nil_spec.rb +0 -138
  246. data/projects/typesystem/spec/builtin_types/array_spec.rb +0 -140
  247. data/projects/typesystem/spec/builtin_types/associative_array_spec.rb +0 -228
  248. data/projects/typesystem/spec/builtin_types/attributes_spec.rb +0 -490
  249. data/projects/typesystem/spec/builtin_types/big_decimal_spec.rb +0 -42
  250. data/projects/typesystem/spec/builtin_types/boolean_spec.rb +0 -43
  251. data/projects/typesystem/spec/builtin_types/class_type_desugarizer_spec.rb +0 -17
  252. data/projects/typesystem/spec/builtin_types/custom_type_spec.rb +0 -430
  253. data/projects/typesystem/spec/builtin_types/date_spec.rb +0 -37
  254. data/projects/typesystem/spec/builtin_types/datetime_spec.rb +0 -49
  255. data/projects/typesystem/spec/builtin_types/email_spec.rb +0 -44
  256. data/projects/typesystem/spec/builtin_types/float_spec.rb +0 -59
  257. data/projects/typesystem/spec/builtin_types/instance_of_spec.rb +0 -75
  258. data/projects/typesystem/spec/builtin_types/one_of_spec.rb +0 -73
  259. data/projects/typesystem/spec/builtin_types/string_spec.rb +0 -117
  260. data/projects/typesystem/spec/builtin_types/symbol_spec.rb +0 -24
  261. data/projects/typesystem/spec/builtin_types/tuple_spec.rb +0 -125
  262. data/projects/typesystem/spec/callback/callback_spec.rb +0 -155
  263. data/projects/typesystem/spec/callback/registry/conditioned_spec.rb +0 -152
  264. data/projects/typesystem/spec/callback/registry/multiple_action_spec.rb +0 -144
  265. data/projects/typesystem/spec/callback/registry/single_action_spec.rb +0 -114
  266. data/projects/typesystem/spec/common/data_path_spec.rb +0 -268
  267. data/projects/typesystem/spec/common/error_collection_spec.rb +0 -77
  268. data/projects/typesystem/spec/common/error_key_spec.rb +0 -56
  269. data/projects/typesystem/spec/common/outcome_spec.rb +0 -65
  270. data/projects/typesystem/spec/common/possible_error_spec.rb +0 -17
  271. data/projects/typesystem/spec/concerns/concern_spec.rb +0 -122
  272. data/projects/typesystem/spec/enumerated/accessors_spec.rb +0 -182
  273. data/projects/typesystem/spec/enumerated/enumerated_spec.rb +0 -32
  274. data/projects/typesystem/spec/enumerated/values_spec.rb +0 -67
  275. data/projects/typesystem/spec/foobara/foobara_spec.rb +0 -45
  276. data/projects/typesystem/spec/namespace/ambiguous_registry_spec.rb +0 -70
  277. data/projects/typesystem/spec/namespace/foobara_simulation_spec.rb +0 -254
  278. data/projects/typesystem/spec/namespace/is_namespace_spec.rb +0 -103
  279. data/projects/typesystem/spec/namespace/namespace_helpers_spec.rb +0 -67
  280. data/projects/typesystem/spec/namespace/namespace_spec.rb +0 -335
  281. data/projects/typesystem/spec/namespace/prefixless_registry_spec.rb +0 -30
  282. data/projects/typesystem/spec/namespace/unambiguous_registry_spec.rb +0 -50
  283. data/projects/typesystem/spec/spec_helper.rb +0 -52
  284. data/projects/typesystem/spec/state_machine/callbacks_spec.rb +0 -144
  285. data/projects/typesystem/spec/state_machine/state_machine_spec.rb +0 -224
  286. data/projects/typesystem/spec/state_machine/target_attribute_spec.rb +0 -46
  287. data/projects/typesystem/spec/support/rubyprof.rb +0 -32
  288. data/projects/typesystem/spec/support/term_trap.rb +0 -6
  289. data/projects/typesystem/spec/type_declarations/attributes_spec.rb +0 -14
  290. data/projects/typesystem/spec/type_declarations/attributes_transformer_spec.rb +0 -95
  291. data/projects/typesystem/spec/type_declarations/dsl/attributes_spec.rb +0 -107
  292. data/projects/typesystem/spec/type_declarations/handlers/extend_registered_type_declaration_spec.rb +0 -13
  293. data/projects/typesystem/spec/type_declarations/sensitive_type_removers_spec.rb +0 -210
  294. data/projects/typesystem/spec/type_declarations/type_builder_spec.rb +0 -47
  295. data/projects/typesystem/spec/type_declarations/type_declaration_spec.rb +0 -252
  296. data/projects/typesystem/spec/type_declarations/type_declarations_spec.rb +0 -11
  297. data/projects/typesystem/spec/type_declarations/typed_transformer_spec.rb +0 -65
  298. data/projects/typesystem/spec/types/sensitive_spec.rb +0 -36
  299. data/projects/typesystem/spec/types/type_spec.rb +0 -102
  300. data/projects/typesystem/spec/value/caster_spec.rb +0 -23
  301. data/projects/typesystem/spec/value/processor/runner_spec.rb +0 -34
  302. data/projects/typesystem/spec/value/processor/selection_spec.rb +0 -71
  303. data/projects/typesystem/spec/value/processor_spec.rb +0 -76
  304. data/projects/typesystem/spec/value/transformer_spec.rb +0 -27
  305. /data/projects/{command/src → entities_plumbing/src/extensions}/command_pattern_implementation/concerns/transactions.rb +0 -0
  306. /data/projects/{entities → typesystem}/projects/model/src/concerns/aliases.rb +0 -0
  307. /data/projects/{entities → typesystem}/projects/model/src/concerns/reflection.rb +0 -0
  308. /data/projects/{entities → typesystem}/projects/model/src/extensions/builtin_types/model/supported_transformers/mutable.rb +0 -0
  309. /data/projects/{entities → typesystem}/projects/model/src/extensions/builtin_types/model/validators/model_instance_is_valid.rb +0 -0
  310. /data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/array_with_symbolic_elements.rb +0 -0
  311. /data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/delegates_desugarizer.rb +0 -0
  312. /data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/delegates_validator.rb +0 -0
  313. /data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/hash_desugarizer.rb +0 -0
  314. /data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/move_private_from_element_types_to_root.rb +0 -0
  315. /data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/symbolize_private.rb +0 -0
  316. /data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/valid_attribute_names.rb +0 -0
  317. /data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration.rb +0 -0
  318. /data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/extend_registered_model_type_declaration/hash_desugarizer.rb +0 -0
  319. /data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/extend_registered_model_type_declaration/model_class_type_desugarizer.rb +0 -0
  320. /data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/extend_registered_model_type_declaration/mutable_validator.rb +0 -0
  321. /data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/extend_registered_model_type_declaration/normalize_mutable_attributes_desugarizer.rb +0 -0
  322. /data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/handlers/extend_registered_model_type_declaration/to_type_transformer.rb +0 -0
  323. /data/projects/{entities → typesystem}/projects/model/src/extensions/type_declarations/lazy_element_types/model.rb +0 -0
  324. /data/projects/{entities → typesystem}/projects/model/src/sensitive_type_removers/extended_model.rb +0 -0
  325. /data/projects/{entities → typesystem}/projects/model/src/sensitive_type_removers/model.rb +0 -0
@@ -1,534 +0,0 @@
1
- RSpec.describe Foobara::CommandPatternImplementation::Concerns::Entities do
2
- describe "#run" do
3
- after do
4
- Foobara.reset_alls
5
- end
6
-
7
- let(:user_base) do
8
- Foobara::Persistence::EntityBase.new(
9
- "user_base",
10
- entity_attributes_crud_driver: Foobara::Persistence::CrudDrivers::InMemory.new
11
- ).tap do |base|
12
- Foobara::Persistence.register_base(base)
13
- end
14
- end
15
-
16
- let(:read_command) do
17
- stub_class(:ReadEmployee, Foobara::Command) do
18
- # TODO: does this work with Employee instead of :Employee ?
19
- inputs employee: { type: :Employee, required: true }
20
-
21
- load_all
22
-
23
- result Employee
24
-
25
- def execute
26
- employee
27
- end
28
- end
29
- end
30
-
31
- let(:employee_id) do
32
- Foobara::Persistence.transaction(Employee, User, mode: :use_existing) do
33
- Employee.all[0].id
34
- end
35
- end
36
-
37
- before do
38
- Foobara::Persistence.default_crud_driver = Foobara::Persistence::CrudDrivers::InMemory.new
39
-
40
- stub_class :Base, Foobara::Entity do
41
- abstract
42
-
43
- attributes id: :integer
44
-
45
- primary_key :id
46
- end
47
-
48
- stub_class :User, Base do
49
- attributes name: { type: :string, required: true }
50
- end
51
-
52
- Foobara::Persistence.register_entity(user_base, User, table_name: "users")
53
-
54
- stub_class(:Person, Base) do
55
- abstract
56
-
57
- attributes user: User
58
- end
59
-
60
- # TODO: how to support self-referential models??
61
- stub_class(:Applicant, Person) do
62
- attributes do
63
- is_active :boolean, default: true
64
- friends [User]
65
- attrs do
66
- foo :symbol
67
- bar [:integer]
68
- duckfoo :duck
69
- duckbar [:duck]
70
- end
71
- end
72
- end
73
-
74
- stub_class(:Package, Base) do
75
- attributes applicants: [Applicant],
76
- is_active: :boolean
77
- end
78
-
79
- stub_class(:Assignment, Base) do
80
- attributes package: Package
81
- end
82
-
83
- stub_class(:Employee, Person) do
84
- attributes do
85
- assignments [Assignment], default: []
86
- past_assignments [Assignment]
87
- priority_assignment Assignment
88
- end
89
-
90
- association :past_users, "past_assignments.#.package.applicants.#.user"
91
- association :priority_package, :"priority_assignment.package"
92
- end
93
-
94
- applicant_users = []
95
- employee_users = []
96
-
97
- User.transaction do
98
- 5.times do |i|
99
- applicant_users << User.create(name: "applicant user#{i}")
100
- end
101
-
102
- 5.times do |i|
103
- employee_users << User.create(name: "employee user#{i}")
104
- end
105
- end
106
-
107
- Foobara::Persistence.transaction(Employee, User) do
108
- applicants = []
109
- employees = []
110
-
111
- 5.times do |i|
112
- applicants << Applicant.create(user: applicant_users[i])
113
- end
114
-
115
- 5.times do |i|
116
- employees << Employee.create(user: employee_users[i])
117
- end
118
-
119
- 7.times do |i|
120
- package = Package.create(is_active: i < 3, applicants: [applicants[i % 3]])
121
-
122
- assignment = Assignment.create(package:)
123
-
124
- if i < 5
125
- employees[i % 4].assignments += [assignment]
126
-
127
- if i.even?
128
- employees[(i % 4) + 1].assignments += [assignment]
129
- end
130
- else
131
- employees[0].past_assignments ||= []
132
- employees[0].past_assignments += [assignment]
133
- end
134
- end
135
- end
136
- end
137
-
138
- it "can find the record" do
139
- expect(read_command.run!(employee: employee_id).id).to eq(employee_id)
140
- end
141
-
142
- context "with multiple records" do
143
- let(:read_command) do
144
- stub_class(:ReadEmployee, Foobara::Command) do
145
- # TODO: does this work with Employee instead of :Employee ?
146
- inputs employee: { type: :Employee, required: true },
147
- employee_array: [Employee]
148
-
149
- load_all
150
-
151
- result [Employee]
152
-
153
- def execute
154
- [employee, *employee_array]
155
- end
156
- end
157
- end
158
-
159
- let!(:employee2_id) do
160
- Employee.transaction do
161
- Employee.create
162
- end.id
163
- end
164
-
165
- let!(:employee3_id) do
166
- Employee.transaction do
167
- Employee.create
168
- end.id
169
- end
170
-
171
- it "can find the records" do
172
- inputs = { employee: employee_id, employee_array: [employee2_id, employee3_id] }
173
- expect(read_command.run!(inputs).map(&:id)).to eq([employee_id, employee2_id, employee3_id])
174
- end
175
- end
176
-
177
- context "when given primary key for record that doesnt exist" do
178
- it "is not success" do
179
- outcome = read_command.run(employee: 100)
180
- expect(outcome).to_not be_success
181
-
182
- errors = outcome.errors
183
-
184
- expect(errors.size).to eq(1)
185
-
186
- error = errors.first
187
-
188
- expect(error.class.name).to eq("ReadEmployee::EmployeeNotFoundError")
189
- expect(error.key).to eq("runtime.employee_not_found")
190
-
191
- expect(error.symbol).to be(:employee_not_found)
192
-
193
- context = error.context
194
-
195
- expect(context[:entity_class]).to eq("Employee")
196
- expect(context[:criteria]).to eq(100)
197
- expect(context[:data_path]).to eq("employee")
198
-
199
- expect(error.entity_class).to eq("Employee")
200
- expect(error.criteria).to eq(100)
201
- expect(error.data_path).to eq("employee")
202
- end
203
- end
204
-
205
- context "when given non-castable primary key" do
206
- it "is not success" do
207
- outcome = read_command.run(employee: "asdf")
208
- expect(outcome).to_not be_success
209
-
210
- errors = outcome.errors
211
-
212
- expect(errors.size).to eq(1)
213
-
214
- error = errors.first
215
-
216
- expect(error.key).to eq("data.employee.cannot_cast")
217
- end
218
- end
219
-
220
- context "when input is good but a different runtime error occurs" do
221
- let(:read_command) do
222
- error_class = stub_class(:SomeRuntimeError, Foobara::RuntimeError) do
223
- class << self
224
- def context_type_declaration
225
- {}
226
- end
227
- end
228
- end
229
-
230
- stub_class(:ReadEmployee, Foobara::Command) do
231
- # TODO: does this work with Employee instead of :Employee ?
232
- inputs employee: { type: :Employee, required: true }
233
-
234
- load_all
235
-
236
- possible_error error_class
237
-
238
- result Employee
239
-
240
- define_method :execute do
241
- employee.assignments = []
242
- add_runtime_error(error_class.new(message: "asdf", context: {}))
243
- end
244
- end
245
- end
246
-
247
- it "is not success and rolls back" do
248
- old_assignments = Foobara::Persistence.transaction(Employee, User, mode: :use_existing) do
249
- Employee.load(employee_id).assignments
250
- end
251
-
252
- expect(old_assignments).to_not be_empty
253
-
254
- outcome = read_command.run(employee: employee_id)
255
- expect(outcome).to_not be_success
256
-
257
- errors = outcome.error_collection
258
-
259
- expect(errors.size).to eq(1)
260
-
261
- error = errors.first
262
-
263
- expect(error.class.name).to eq("SomeRuntimeError")
264
-
265
- Foobara::Persistence.transaction(Employee, User, mode: :use_existing) do
266
- expect(Employee.load(employee_id).assignments).to eq(old_assignments)
267
- end
268
- end
269
- end
270
-
271
- describe "manifest" do
272
- it "includes entity dependencies" do
273
- expect(Foobara.manifest[:type][:Employee][:deep_depends_on]).to eq(
274
- [
275
- "Assignment",
276
- "User",
277
- "Package",
278
- "Applicant"
279
- ]
280
- )
281
- end
282
- end
283
-
284
- describe "create command" do
285
- context "with entity class as inputs" do
286
- let(:create_command) do
287
- stub_class(:CreateUser, Foobara::Command) do
288
- inputs User.attributes_type
289
- result User
290
-
291
- # TODO: automatically include result type if it's an entity to avoid this in such cases
292
- depends_on_entities User
293
-
294
- def execute
295
- create_user
296
-
297
- user
298
- end
299
-
300
- attr_accessor :user
301
-
302
- def create_user
303
- self.user = User.create(inputs)
304
- end
305
- end
306
- end
307
-
308
- it "can create an user" do
309
- expect(create_command.types_depended_on).to include(User.entity_type)
310
- command = create_command.new(name: "Some Name")
311
- outcome = command.run
312
-
313
- expect(outcome).to be_success
314
- expect(command.user).to be_a(User)
315
-
316
- result = outcome.result
317
- expect(result.name).to eq("Some Name")
318
- expect(result.id).to be_a(Integer)
319
- end
320
- end
321
-
322
- context "with normal attributes inputs" do
323
- let(:create_command) do
324
- stub_class(:CreateUser, Foobara::Command) do
325
- # TODO: does this work with User instead of :User ?
326
- # We can't come up with a cleaner way to do this?
327
- inputs user: User
328
- result User.entity_type
329
-
330
- def execute
331
- user
332
- end
333
- end
334
- end
335
-
336
- it "can create an user" do
337
- command = create_command.new(user: { name: "Some Name" })
338
- outcome = Foobara::Persistence.transaction(Employee, User, mode: :use_existing) do
339
- command.run
340
- end
341
- expect(outcome).to be_success
342
- expect(command.user).to be_a(User)
343
-
344
- result = outcome.result
345
- expect(result.name).to eq("Some Name")
346
- expect(result.id).to be_a(Integer)
347
- end
348
- end
349
- end
350
-
351
- describe "update atom command" do
352
- context "with helper method result for inputs" do
353
- let(:update_command) do
354
- stub_class(:UpdateApplicant, Foobara::Command) do
355
- # TODO: does this work with User instead of :User ?
356
- # We can't come up with a cleaner way to do this?
357
- inputs Applicant.attributes_for_atom_update(require_primary_key: true)
358
- result Applicant # seems like we should just use nil?
359
-
360
- def execute
361
- update_applicant
362
-
363
- applicant
364
- end
365
-
366
- attr_accessor :applicant
367
-
368
- def load_records
369
- self.applicant = Applicant.load(id)
370
- end
371
-
372
- def update_applicant
373
- inputs.each_pair do |attribute_name, value|
374
- applicant.write_attribute(attribute_name, value)
375
- end
376
- end
377
- end
378
- end
379
-
380
- let(:applicant) { Applicant.create(user:, is_active: true) }
381
- let(:user) { User.create(name: "first user") }
382
-
383
- it "can update an applicant" do
384
- applicant_id = Applicant.transaction { applicant }.id
385
-
386
- Applicant.transaction do
387
- expect {
388
- update_command.run!(id: applicant_id, is_active: false)
389
- }.to change { Applicant.load_aggregate(applicant_id).is_active }.from(true).to(false)
390
-
391
- expect {
392
- update_command.run!(id: applicant_id, is_active: true)
393
- }.to change { Applicant.load(applicant_id).is_active }.from(false).to(true)
394
- end
395
-
396
- new_user_id = User.transaction(skip_dependent_transactions: true) { User.create(name: "second user") }.id
397
-
398
- Applicant.transaction do
399
- expect {
400
- update_command.run!(id: applicant_id, user: new_user_id)
401
- }.to change { Applicant.load(applicant_id).user.name }.from("first user").to("second user")
402
- end
403
- end
404
- end
405
- end
406
-
407
- describe "update aggregate command" do
408
- context "with helper method result for inputs" do
409
- let(:update_command) do
410
- stub_class(:UpdateApplicantAggregate, Foobara::Command) do
411
- # TODO: does this work with User instead of :User ?
412
- # We can't come up with a cleaner way to do this?
413
- inputs Applicant.attributes_for_aggregate_update(require_primary_key: true)
414
- result Applicant # seems like we should just use nil?
415
-
416
- def execute
417
- update_applicant
418
-
419
- applicant
420
- end
421
-
422
- attr_accessor :applicant
423
-
424
- def load_records
425
- self.applicant = Applicant.load(id)
426
- end
427
-
428
- def update_applicant
429
- applicant.update_aggregate(inputs)
430
- end
431
- end
432
- end
433
-
434
- let(:applicant) do
435
- Applicant.create(
436
- user:,
437
- is_active: true,
438
- attrs: {
439
- foo: :fooooo,
440
- bar: [1, 2, 3, 4],
441
- duckfoo: "asdfasdf",
442
- duckbar: ["asdf", 5]
443
- }
444
- )
445
- end
446
- let(:user) { User.create(name: "old name") }
447
-
448
- it "can update an applicant" do
449
- applicant_id = Applicant.transaction { applicant }.id
450
- user_id = User.transaction { user }.id
451
-
452
- expect {
453
- update_command.run!(id: applicant_id, is_active: false)
454
- }.to change {
455
- Applicant.transaction { Applicant.load(applicant_id).is_active }
456
- }.from(true).to(false)
457
-
458
- expect {
459
- update_command.run!(id: applicant_id, is_active: true)
460
- }.to change {
461
- Applicant.transaction { Applicant.load(applicant_id).is_active }
462
- }.from(false).to(true)
463
-
464
- Applicant.transaction do
465
- update_command.run!(
466
- id: applicant_id,
467
- user: { name: "new name" },
468
- attrs: {
469
- foo: :food,
470
- bar: [10, 11],
471
- duckfoo: "df",
472
- duckbar: ["db", "asdf"]
473
- }
474
- )
475
- end
476
-
477
- Applicant.transaction do
478
- applicant = Applicant.load(applicant_id)
479
- expect(applicant.user.name).to eq("new name")
480
- expect(applicant.user.id).to eq(user_id)
481
- expect(applicant.attrs).to eq(
482
- foo: :food,
483
- bar: [10, 11],
484
- duckfoo: "df",
485
- duckbar: ["db", "asdf"]
486
- )
487
- end
488
- end
489
- end
490
- end
491
-
492
- describe "delete command" do
493
- let(:delete_command) do
494
- stub_class(:DeleteApplicant, Foobara::Command) do
495
- # TODO: does this work with User instead of :User ?
496
- # We can't come up with a cleaner way to do this?
497
- inputs applicant: Applicant
498
- result Applicant
499
-
500
- load_all
501
-
502
- def execute
503
- delete_applicant
504
-
505
- applicant
506
- end
507
-
508
- def delete_applicant
509
- applicant.hard_delete!
510
- end
511
- end
512
- end
513
-
514
- let(:applicant) { Applicant.create(user:) }
515
- let(:user) { User.create(name: "old name") }
516
-
517
- it "deletes the applicant" do
518
- applicant_id = Applicant.transaction { applicant }.id
519
-
520
- Applicant.transaction do
521
- expect {
522
- delete_command.run!(applicant: applicant_id)
523
- }.to change(Applicant, :count).by(-1)
524
- end
525
-
526
- Applicant.transaction do
527
- expect {
528
- Applicant.load(applicant_id)
529
- }.to raise_error(Foobara::Entity::NotFoundError)
530
- end
531
- end
532
- end
533
- end
534
- end
@@ -1,6 +0,0 @@
1
- guard :rspec, all_after_pass: false, all_on_start: true, cmd: "bundle exec rspec", failed_mode: :focus do
2
- watch(%r{^spec/(.+)_spec\.rb$})
3
- watch(%r{^src/(.+)\.rb$}) { "spec/" }
4
- watch(%r{^lib/(.+)\.rb$}) { "spec/" }
5
- watch(%r{^spec/spec_helper.rb$}) { "spec/" }
6
- end
@@ -1,67 +0,0 @@
1
- # TODO: Get this out of here and into model project
2
- RSpec.describe Foobara::Manifest::Model do
3
- after { Foobara.reset_alls }
4
-
5
- describe ".associations" do
6
- context "when the type has associations" do
7
- before do
8
- stub_class "SomeInnerInnerEntity", Foobara::Entity do
9
- attributes do
10
- id :integer
11
- bar :string, :required
12
- end
13
- primary_key :id
14
- end
15
-
16
- stub_class "SomeOuterModel", Foobara::Model do
17
- attributes do
18
- some_inner_inner_entities [:SomeInnerInnerEntity, :SomeInnerInnerEntity]
19
- end
20
- end
21
-
22
- stub_class("SomeInnerEntity", Foobara::Entity) do
23
- attributes do
24
- id :integer
25
- foo :string, :required
26
- end
27
-
28
- primary_key :id
29
- end
30
-
31
- stub_class("SomeOuterEntity", Foobara::Entity) do
32
- attributes do
33
- id :integer
34
- some_inner_entity :SomeInnerEntity
35
- end
36
-
37
- primary_key :id
38
- end
39
-
40
- Foobara::GlobalDomain.foobara_register_type(:some_type) do
41
- some_array [SomeOuterEntity]
42
- some_inner_model :SomeOuterModel
43
- end
44
- end
45
-
46
- it "can reproduce association info from the underlying associations in the types" do
47
- raw_manifest = Foobara.manifest
48
-
49
- root_manifest = Foobara::Manifest::RootManifest.new(raw_manifest)
50
-
51
- manifest_type = root_manifest.type_by_name(:some_type)
52
-
53
- expect(manifest_type).to be_a(Foobara::Manifest::Type)
54
-
55
- associations = described_class.associations(manifest_type)
56
-
57
- expect(associations.keys).to contain_exactly(
58
- "some_array.#",
59
- "some_inner_model.some_inner_inner_entities.0",
60
- "some_inner_model.some_inner_inner_entities.1"
61
- )
62
-
63
- expect(associations.values).to all be_a(Foobara::Manifest::Entity)
64
- end
65
- end
66
- end
67
- end