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,91 +0,0 @@
1
- RSpec.describe Foobara::WeakObjectSet do
2
- after { set.close }
3
-
4
- let(:set) { described_class.new(key_method) }
5
- let(:key_method) { nil }
6
-
7
- describe "auto-removal of garbage collected records" do
8
- context "without key_method" do
9
- it "automatically removes records that have been garbage collected" do
10
- some_object = "asdf"
11
- set << some_object
12
-
13
- # Deleting this line breaks the spec for mysterious reasons. Without this line, GC.start doesn't
14
- # call the finalizer for "asdf" for some reason until the end of the test suite.
15
- # It looks like when these finalizers run is not guaranteed so it might be a bad idea to
16
- # test the behavior as if it were. Will leave this test here for now but might need to delete it if
17
- # it acts up in other environments.
18
- expect(set.size).to eq(1)
19
-
20
- # rubocop:disable Lint/UselessAssignment
21
- some_object = nil
22
- # rubocop:enable Lint/UselessAssignment
23
- GC.start
24
-
25
- expect(set.size).to eq(0)
26
- expect(set).to be_empty
27
- end
28
- end
29
-
30
- context "with key_method passed in" do
31
- let(:some_class) do
32
- stub_class "Foo" do
33
- attr_accessor :bar
34
- end
35
- end
36
- let(:key_method) { :bar }
37
-
38
- it "automatically removes records that have been garbage collected" do
39
- some_object = some_class.new.tap { |o| o.bar = "asdf" }
40
- some_object_id = some_object.object_id
41
- set << some_object
42
-
43
- expect(set).to_not be_empty
44
- expect(set.size).to eq(1)
45
- expect(set.find_by_key("asdf").object_id).to eq(some_object.object_id)
46
- expect(set[some_object_id].object_id).to be(some_object.object_id)
47
-
48
- expect(set.to_a.map(&:object_id)).to eq([some_object_id])
49
-
50
- # rubocop:disable Lint/UselessAssignment
51
- some_object = nil
52
- # rubocop:enable Lint/UselessAssignment
53
- GC.start
54
-
55
- expect(set).to be_empty
56
- expect(set.size).to eq(0)
57
- expect(set.to_a).to eq([])
58
- end
59
-
60
- describe "#<<" do
61
- context "when key is unset" do
62
- it "can no longer find the object by the old key" do
63
- some_object = some_class.new.tap { |o| o.bar = "asdf" }
64
- some_object_id = some_object.object_id
65
- set << some_object
66
-
67
- expect(set.find_by_key("asdf").object_id).to eq(some_object.object_id)
68
-
69
- some_object.bar = nil
70
- set << some_object
71
-
72
- expect(set.find_by_key("asdf")).to be_nil
73
- expect(set[some_object]).to eq(some_object)
74
- expect(set[some_object_id]).to eq(some_object)
75
- end
76
- end
77
- end
78
- end
79
- end
80
-
81
- describe "#delete" do
82
- it "removes the object being deleted" do
83
- some_object = "asdf"
84
- set << some_object
85
-
86
- expect {
87
- set.delete(some_object)
88
- }.to change { set.member?(some_object) }.from(true).to(false)
89
- end
90
- end
91
- end
@@ -1,135 +0,0 @@
1
- RSpec.describe Foobara::Model do
2
- after do
3
- Foobara.reset_alls
4
- [
5
- :SomeModel,
6
- :SomeEntity,
7
- :Foo
8
- ].each do |const|
9
- Object.send(:remove_const, const) if Object.const_defined?(const)
10
- end
11
- end
12
-
13
- let(:model_class) do
14
- stub_class("SomeModel", described_class) do
15
- attributes do
16
- name :string, :required
17
- age :integer, :required
18
- end
19
- end
20
- end
21
- let(:model_instance) { model_class.new(name:, age:) }
22
- let(:name) { "foo" }
23
- let(:age) { 100 }
24
-
25
- it "can be mutated" do
26
- expect {
27
- model_instance.age += 1
28
- }.to change(model_instance, :age).by(1)
29
- end
30
-
31
- describe "ignore unexpected attributes option" do
32
- let(:outer_model_class) do
33
- inner = model_class
34
-
35
- stub_class("OuterModel", described_class) do
36
- attributes do
37
- inner_model inner, :required
38
- end
39
- end
40
- end
41
-
42
- it "ignores unexpected attributes" do
43
- attributes = { inner_model: { age: 100, name: "foo", height: 100 } }
44
-
45
- value = outer_model_class.new(attributes)
46
- expect(value).to_not be_valid
47
-
48
- value = outer_model_class.new(attributes, ignore_unexpected_attributes: true)
49
- expect(value).to be_valid
50
-
51
- expect(value.inner_model.attributes.keys).to contain_exactly(:age, :name)
52
- end
53
- end
54
-
55
- describe ".deanonymize_class" do
56
- let(:type_declaration) do
57
- {
58
- type: :model,
59
- name: model_name,
60
- attributes_declaration:,
61
- model_module:
62
- }
63
- end
64
- let(:model_name) { "SomeEntity" }
65
- let(:model_module) { nil }
66
- let(:attributes_declaration) do
67
- {
68
- foo: { type: :integer, max: 10 },
69
- pk: { type: :integer },
70
- bar: { type: :string, required: true }
71
- }
72
- end
73
- let(:model_type) do
74
- Foobara::Domain.current.foobara_type_from_declaration(type_declaration)
75
- end
76
- let(:model_class) do
77
- model_type.target_class
78
- end
79
-
80
- it "deanonymizes the class" do
81
- expect(model_class).to be_a(Class)
82
- expect(model_class.superclass).to be(described_class)
83
- expect(model_class.name).to be_nil
84
- expect(model_class.foobara_name).to eq("SomeEntity")
85
-
86
- described_class.deanonymize_class(model_class)
87
-
88
- expect(model_class.name).to eq(model_name)
89
-
90
- # allowed to call it twice...
91
- expect(described_class.deanonymize_class(model_class)).to be(model_class)
92
- end
93
-
94
- context "with a model module that doesn't exist" do
95
- let(:model_module) { "Foo::Bar::Baz" }
96
-
97
- it "deanonymizes the class" do
98
- expect(model_class).to be_a(Class)
99
- expect(model_class.superclass).to be(described_class)
100
- expect(model_class.name).to be_nil
101
-
102
- described_class.deanonymize_class(model_class)
103
-
104
- expect(model_class.name).to eq("Foo::Bar::Baz::SomeEntity")
105
- end
106
- end
107
-
108
- context "when a module already exists with the desired model name" do
109
- let(:model_module) { "Foo::Bar" }
110
- let(:model_name) { "SomeModel" }
111
-
112
- before do
113
- Foobara::Util.make_module_p("Foo::Bar::SomeModel", tag: true)
114
-
115
- stub_const("Foo::Bar::SomeModel::SOME_CONST", "some_const")
116
- end
117
-
118
- after do
119
- if Object.const_defined?(:Foo)
120
- Object.send(:remove_const, :Foo)
121
- end
122
- end
123
-
124
- it "upgrades the module to a class and copies over the constants" do
125
- expect(Foo::Bar::SomeModel).to be_a(Module)
126
- expect(Foo::Bar::SomeModel).to_not be_a(Class)
127
-
128
- described_class.deanonymize_class(model_class)
129
-
130
- expect(Foo::Bar::SomeModel).to be_a(Class)
131
- expect(Foo::Bar::SomeModel::SOME_CONST).to eq("some_const")
132
- end
133
- end
134
- end
135
- end
@@ -1,397 +0,0 @@
1
- RSpec.describe Foobara::Model do
2
- after do
3
- Foobara.reset_alls
4
- end
5
-
6
- describe ".delegate_attribute" do
7
- let(:auth_user_class) do
8
- stub_class(:AuthUser, described_class) do
9
- attributes do
10
- username :string, :required
11
- email :string
12
- end
13
- end
14
- end
15
- let(:user_class) do
16
- auth_user
17
-
18
- stub_class(:User, described_class) do
19
- attributes do
20
- auth_user AuthUser, :required
21
- some_attribute :integer
22
- end
23
- end.tap do |klass|
24
- klass.delegate_attribute(:username, [:auth_user, :username], writer:)
25
- end
26
- end
27
-
28
- let(:writer) { nil }
29
- let(:auth_user) { auth_user_class.new(username:, email:) }
30
- let(:username) { "Basil" }
31
- let(:email) { "basil@foobara.org" }
32
-
33
- let(:user) { user_class.new(auth_user:) }
34
-
35
- let(:manifest) { user_class.model_type.foobara_manifest }
36
-
37
- context "when defining models using classes" do
38
- it "creates a reader" do
39
- expect(user.username).to eq(username)
40
- expect(user).to_not respond_to("username=")
41
- expect(user).to_not respond_to(email)
42
- end
43
-
44
- it "contains the delegated attribute in the attributes_type" do
45
- expect(manifest[:attributes_type][:element_type_declarations][:username]).to eq(:string)
46
- end
47
-
48
- it "includes the delegate info in the manifest" do
49
- expect(manifest[:delegates]).to eq(
50
- username: {
51
- data_path: "auth_user.username"
52
- },
53
- guaranteed_to_exist: [:username]
54
- )
55
-
56
- expect(manifest[:declaration_data][:delegates]).to eq(
57
- username: {
58
- data_path: "auth_user.username"
59
- }
60
- )
61
- end
62
-
63
- context "when creating writer method" do
64
- let(:writer) { true }
65
-
66
- it "creates a writer" do
67
- expect(user.username).to eq(username)
68
- expect(user).to respond_to("username=")
69
- expect(user).to_not respond_to(email)
70
-
71
- expect {
72
- user.username = "Barbara"
73
- }.to change(user, :username).to("Barbara")
74
- end
75
-
76
- it "includes the delegate info in the manifest" do
77
- expect(manifest[:delegates]).to eq(
78
- username: {
79
- data_path: "auth_user.username",
80
- writer: true
81
- },
82
- guaranteed_to_exist: [:username]
83
- )
84
-
85
- expect(manifest[:declaration_data][:delegates]).to eq(
86
- username: {
87
- data_path: "auth_user.username",
88
- writer: true
89
- }
90
- )
91
- end
92
- end
93
- end
94
-
95
- context "when defining models using type declarations" do
96
- let(:auth_user_declaration) do
97
- {
98
- type: :model,
99
- name: "AuthUser",
100
- attributes_declaration: {
101
- type: :attributes,
102
- element_type_declarations: {
103
- username: { type: :string },
104
- email: { type: :string }
105
- },
106
- required: [:username]
107
- },
108
- delegates: {}
109
- }
110
- end
111
-
112
- let(:user_declaration) do
113
- {
114
- type: :model,
115
- name: "User",
116
- attributes_declaration: {
117
- type: :attributes,
118
- element_type_declarations: {
119
- auth_user: { type: :AuthUser }
120
- },
121
- required: [:auth_user]
122
- },
123
- delegates:
124
- }
125
- end
126
-
127
- let(:delegates) do
128
- { username: { data_path: "auth_user.username", writer: } }
129
- end
130
-
131
- let(:auth_user_class) do
132
- Foobara::Domain.current.foobara_type_from_declaration(auth_user_declaration).target_class
133
- end
134
-
135
- let(:user_class) do
136
- auth_user_class
137
- Foobara::Domain.current.foobara_type_from_declaration(user_declaration).target_class
138
- end
139
-
140
- it "creates anonymous classes" do
141
- expect(auth_user_class.name).to be_nil
142
- expect(user_class.name).to be_nil
143
- end
144
-
145
- it "creates a reader" do
146
- expect(user.username).to eq(username)
147
- expect(user).to_not respond_to("username=")
148
- expect(user).to_not respond_to(email)
149
- end
150
-
151
- it "includes the delegate info in the manifest" do
152
- expect(manifest[:delegates]).to eq(
153
- username: {
154
- data_path: "auth_user.username"
155
- },
156
- guaranteed_to_exist: [:username]
157
- )
158
-
159
- expect(manifest[:declaration_data][:delegates]).to eq(
160
- username: {
161
- data_path: "auth_user.username"
162
- }
163
- )
164
- end
165
-
166
- context "when delegates is invalid" do
167
- context "when it is not a hash" do
168
- let(:delegates) { "not a hash" }
169
-
170
- it "cannot create the type" do
171
- expect {
172
- user_class
173
- }.to raise_error(
174
- Foobara::TypeDeclarations::Handlers::ExtendModelTypeDeclaration::DelegatesValidator::InvalidDelegatesError
175
- )
176
- end
177
- end
178
-
179
- context "when it has a bad key" do
180
- let(:delegates) do
181
- { username: { data_path: "auth_user.username", bad_key: 100 } }
182
- end
183
-
184
- it "cannot create the type" do
185
- expect {
186
- user_class
187
- }.to raise_error(
188
- Foobara::TypeDeclarations::Handlers::ExtendModelTypeDeclaration::DelegatesValidator::InvalidDelegatesError
189
- )
190
- end
191
- end
192
- end
193
-
194
- context "when creating writer method" do
195
- let(:writer) { true }
196
-
197
- it "creates a writer" do
198
- expect(user.username).to eq(username)
199
- expect(user).to respond_to("username=")
200
- expect(user).to_not respond_to(email)
201
-
202
- expect {
203
- user.username = "Barbara"
204
- }.to change(user, :username).to("Barbara")
205
- end
206
-
207
- it "includes the delegate info in the manifest" do
208
- expect(manifest[:delegates]).to eq(
209
- username: {
210
- data_path: "auth_user.username",
211
- writer: true
212
- },
213
- guaranteed_to_exist: [:username]
214
- )
215
-
216
- expect(manifest[:declaration_data][:delegates]).to eq(
217
- username: {
218
- data_path: "auth_user.username",
219
- writer: true
220
- }
221
- )
222
- end
223
- end
224
- end
225
- end
226
-
227
- describe ".private_attribute" do
228
- let(:auth_user_class) do
229
- stub_class(:AuthUser, described_class) do
230
- attributes do
231
- username :string, :required
232
- email :string
233
- ssn :string
234
- end
235
-
236
- private_attribute(:ssn)
237
- end
238
- end
239
- let(:user_class) do
240
- auth_user
241
-
242
- stub_class(:User, described_class) do
243
- attributes do
244
- auth_user AuthUser, :required, :private
245
- some_attribute :integer
246
- end
247
-
248
- delegate_attribute(:username, :auth_user)
249
- end
250
- end
251
-
252
- let(:auth_user) { auth_user_class.new(username:, email:) }
253
- let(:username) { "Basil" }
254
- let(:email) { "basil@foobara.org" }
255
- let(:some_attribute) { 100 }
256
-
257
- let(:user) { user_class.new(auth_user:, some_attribute:) }
258
-
259
- let(:manifest) { user_class.model_type.foobara_manifest }
260
-
261
- context "when defining models using classes" do
262
- it "hides the private attribute" do
263
- expect(user.username).to eq(username)
264
- expect(user.some_attribute).to eq(100)
265
- expect(user).to_not respond_to("username=")
266
- expect(user).to_not respond_to(:auth_user)
267
- expect(user_class.private_attribute_names).to eq([:auth_user])
268
- expect(auth_user).to_not respond_to(:ssn)
269
- end
270
-
271
- it "contains the private attribute in the manifest" do
272
- expect(manifest[:private]).to eq([:auth_user])
273
- end
274
- end
275
-
276
- context "with bad private attribute" do
277
- context "with a non-existent attribute name" do
278
- let(:user_declaration) do
279
- {
280
- type: :model,
281
- name: "User",
282
- attributes_declaration: {
283
- type: :attributes,
284
- element_type_declarations: {
285
- name: :string,
286
- password: :string
287
- },
288
- required: [:name, :password]
289
- },
290
- private: [:some_invalid_attribute]
291
- }
292
- end
293
-
294
- it "cannot create the type" do
295
- expect {
296
- Foobara::Domain.current.foobara_type_from_declaration(user_declaration)
297
- }.to raise_error(
298
- Foobara::TypeDeclarations::Handlers::ExtendModelTypeDeclaration::
299
- ValidAttributeNames::InvalidPrivateValueGivenError
300
- )
301
- end
302
- end
303
-
304
- context "with a non-string/symbol" do
305
- let(:user_declaration) do
306
- {
307
- type: :model,
308
- name: "User",
309
- attributes_declaration: {
310
- type: :attributes,
311
- element_type_declarations: {
312
- name: :string,
313
- password: :string
314
- },
315
- required: [:name, :password]
316
- },
317
- private: [Object.new]
318
- }
319
- end
320
-
321
- it "cannot create the type" do
322
- expect {
323
- Foobara::Domain.current.foobara_type_from_declaration(user_declaration)
324
- }.to raise_error(
325
- Foobara::TypeDeclarations::Handlers::ExtendModelTypeDeclaration::
326
- ArrayWithSymbolicElements::InvalidPrivateValuesGivenError
327
- )
328
- end
329
- end
330
- end
331
-
332
- context "when defining models using type declarations" do
333
- let(:auth_user_declaration) do
334
- {
335
- type: :model,
336
- name: "AuthUser",
337
- attributes_declaration: {
338
- type: :attributes,
339
- element_type_declarations: {
340
- username: { type: :string },
341
- email: { type: :string },
342
- ssn: { type: :string, private: true }
343
- },
344
- required: [:username]
345
- },
346
- delegates: {}
347
- }
348
- end
349
-
350
- let(:user_declaration) do
351
- {
352
- type: :model,
353
- name: "User",
354
- attributes_declaration: {
355
- type: :attributes,
356
- element_type_declarations: {
357
- auth_user: { type: :AuthUser },
358
- some_attribute: { type: :integer }
359
- },
360
- required: [:auth_user]
361
- },
362
- delegates:,
363
- private: ["auth_user"]
364
- }
365
- end
366
-
367
- let(:delegates) do
368
- { username: { data_path: "auth_user.username" } }
369
- end
370
-
371
- let(:auth_user_class) do
372
- Foobara::Domain.current.foobara_type_from_declaration(auth_user_declaration).target_class
373
- end
374
-
375
- let(:user_class) do
376
- auth_user_class
377
- Foobara::Domain.current.foobara_type_from_declaration(user_declaration).target_class
378
- end
379
-
380
- it "creates anonymous classes" do
381
- expect(auth_user_class.name).to be_nil
382
- expect(user_class.name).to be_nil
383
- end
384
-
385
- it "hides the private attribute" do
386
- expect(user.username).to eq(username)
387
- expect(user.some_attribute).to eq(100)
388
- expect(user).to_not respond_to(:auth_user)
389
- expect(user_class.private_attribute_names).to eq([:auth_user])
390
- end
391
-
392
- it "includes the private attribute name in the manifest" do
393
- expect(manifest[:private]).to eq([:auth_user])
394
- end
395
- end
396
- end
397
- end
@@ -1,67 +0,0 @@
1
- RSpec.describe Foobara::NestedTransactionable do
2
- before do
3
- Foobara::Persistence.default_crud_driver = Foobara::Persistence::CrudDrivers::InMemory.new
4
- end
5
-
6
- after { Foobara.reset_alls }
7
-
8
- let(:entity_class) do
9
- stub_class("SomeEntity", Foobara::Entity) do
10
- attributes do
11
- id :integer
12
- foo :string, :required
13
- end
14
- primary_key :id
15
- end
16
- end
17
-
18
- let(:type) do
19
- Foobara::Domain.current.foobara_type_from_declaration(SomeEntity)
20
- end
21
-
22
- describe ".with_needed_transactions_for_type" do
23
- it "opens needed transactions for the given type" do
24
- entity_class
25
-
26
- expect {
27
- described_class.with_needed_transactions_for_type(type) do
28
- SomeEntity.create(foo: "foo")
29
- end
30
- }.to change {
31
- SomeEntity.transaction { SomeEntity.count }
32
- }
33
- end
34
-
35
- context "when type doesn't depend on any entity classes" do
36
- let(:type) { Foobara::BuiltinTypes[:integer] }
37
-
38
- it "returns the result of the block without opening transactions" do
39
- expect(described_class.with_needed_transactions_for_type(type) { 100 }).to eq(100)
40
- end
41
- end
42
-
43
- context "when there's an error" do
44
- let(:some_error_class) do
45
- stub_class("SomeError", StandardError)
46
- end
47
-
48
- it "rolls back the transaction" do
49
- entity_class
50
-
51
- expect {
52
- begin
53
- described_class.with_needed_transactions_for_type(type) do
54
- SomeEntity.create(foo: "foo")
55
- expect(SomeEntity.count).to eq(1)
56
- raise some_error_class
57
- end
58
- rescue SomeError
59
- nil
60
- end
61
- }.to_not change {
62
- SomeEntity.transaction { SomeEntity.count }
63
- }
64
- end
65
- end
66
- end
67
- end
@@ -1,13 +0,0 @@
1
- require "foobara/spec_helpers/it_behaves_like_a_crud_driver"
2
-
3
- # rubocop:disable RSpec/EmptyExampleGroup
4
- RSpec.describe Foobara::Persistence::CrudDrivers::InMemoryMinimal do
5
- after { Foobara.reset_alls }
6
-
7
- before do
8
- Foobara::Persistence.default_crud_driver = described_class.new
9
- end
10
-
11
- it_behaves_like_a_crud_driver
12
- end
13
- # rubocop:enable RSpec/EmptyExampleGroup