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,220 +0,0 @@
1
- # TODO: move this spec to the right project
2
- RSpec.describe Foobara::ModelAttributeHelpers::Concerns::AttributeHelpers do
3
- after do
4
- Foobara.reset_alls
5
- end
6
-
7
- before do
8
- stub_class("SomeEntity", Foobara::Entity) do
9
- attributes do
10
- id :integer, :required, default: 10
11
- name :string, :required
12
- reviews [:integer], default: []
13
- end
14
- primary_key :id
15
- end
16
- end
17
-
18
- describe ".attributes_for_update" do
19
- it "calls attributes_for_aggregate_update" do
20
- expect(SomeEntity.foobara_attributes_for_update(require_primary_key: false)).to be_a(Hash)
21
- end
22
- end
23
-
24
- describe ".attributes_for_atom_update" do
25
- before do
26
- stub_class("SomeOtherEntity", Foobara::Entity) do
27
- attributes do
28
- id :integer
29
- reviews :array do
30
- stuff [SomeEntity], default: []
31
- end
32
- end
33
- primary_key :id
34
- end
35
- end
36
-
37
- it "returns a hash" do
38
- expect(SomeOtherEntity.foobara_attributes_for_atom_update(require_primary_key: false)).to be_a(Hash)
39
- end
40
- end
41
-
42
- describe ".attributes_for_create" do
43
- before do
44
- Foobara::Persistence.default_crud_driver = Foobara::Persistence::CrudDrivers::InMemory.new
45
- end
46
-
47
- let(:auth_user_class) do
48
- stub_class("AuthUser", Foobara::Entity) do
49
- attributes do
50
- id :integer
51
- username :string, :required
52
- end
53
-
54
- primary_key :id
55
- end
56
- end
57
-
58
- let(:user_class) do
59
- auth_user_class
60
- w = writer
61
- stub_class("User", Foobara::Entity) do
62
- attributes do
63
- id :integer
64
- stuff do
65
- things [:integer, AuthUser]
66
- end
67
- name :string, :required
68
- ssn :string, :private
69
- end
70
- primary_key :id
71
- delegate_attribute :username, [:stuff, :things, :"1", :username], writer: w
72
- end
73
- end
74
- let(:writer) { true }
75
-
76
- let(:for_create_declaration) do
77
- for_create_type.declaration_data
78
- end
79
- let(:for_create_type) do
80
- user_class.foobara_attributes_for_create(includes_primary_key:, include_private:, include_delegates:)
81
- end
82
-
83
- let(:includes_primary_key) { false }
84
- let(:include_private) { true }
85
- let(:include_delegates) { false }
86
-
87
- it "removes the primary key" do
88
- expect(for_create_declaration).to eq(
89
- type: :attributes,
90
- element_type_declarations: {
91
- name: :string,
92
- ssn: :string,
93
- stuff: {
94
- type: :attributes,
95
- element_type_declarations: {
96
- things: {
97
- type: :tuple,
98
- size: 2,
99
- element_type_declarations: [
100
- :integer,
101
- :AuthUser
102
- ]
103
- }
104
- }
105
- }
106
- },
107
- required: [:name]
108
- )
109
- end
110
-
111
- context "when there are delegated attributes and we set include_delegates" do
112
- let(:include_delegates) { true }
113
-
114
- it "includes the delegated attributes" do
115
- expect(for_create_declaration).to eq(
116
- type: :attributes,
117
- element_type_declarations: {
118
- name: :string,
119
- ssn: :string,
120
- username: :string,
121
- stuff: {
122
- type: :attributes,
123
- element_type_declarations: {
124
- things: {
125
- type: :tuple,
126
- size: 2,
127
- element_type_declarations: [
128
- :integer,
129
- :AuthUser
130
- ]
131
- }
132
- }
133
- }
134
- },
135
- required: [:name]
136
- )
137
-
138
- AuthUser.transaction do
139
- basil = AuthUser.create(username: "Basil")
140
- barbara = User.create(name: "Barbara", stuff: { things: [100, basil] })
141
-
142
- expect(barbara.username).to eq("Basil")
143
- barbara.username = "NewName"
144
- expect(basil.username).to eq("NewName")
145
- end
146
- end
147
-
148
- context "when private attributes are excluded" do
149
- let(:include_private) { false }
150
-
151
- it "does not include private attributes" do
152
- expect(for_create_declaration).to eq(
153
- type: :attributes,
154
- element_type_declarations: {
155
- name: :string,
156
- username: :string,
157
- stuff: {
158
- type: :attributes,
159
- element_type_declarations: {
160
- things: {
161
- type: :tuple,
162
- size: 2,
163
- element_type_declarations: [
164
- :integer,
165
- :AuthUser
166
- ]
167
- }
168
- }
169
- }
170
- },
171
- required: [:name]
172
- )
173
- end
174
- end
175
-
176
- context "when the primary key is included" do
177
- let(:includes_primary_key) { true }
178
-
179
- it "includes the primary key" do
180
- expect(for_create_declaration).to eq(
181
- type: :attributes,
182
- element_type_declarations: {
183
- id: :integer,
184
- name: :string,
185
- ssn: :string,
186
- username: :string,
187
- stuff: {
188
- type: :attributes,
189
- element_type_declarations: {
190
- things: {
191
- type: :tuple,
192
- size: 2,
193
- element_type_declarations: [
194
- :integer,
195
- :AuthUser
196
- ]
197
- }
198
- }
199
- }
200
- },
201
- required: [:name]
202
- )
203
- end
204
- end
205
- end
206
- end
207
-
208
- describe ".attributes_for_find_by" do
209
- it "excludes required and defaults information" do
210
- expect(SomeEntity.foobara_attributes_for_find_by).to eq(
211
- type: :attributes,
212
- element_type_declarations: {
213
- id: :integer,
214
- name: :string,
215
- reviews: { type: :array, element_type_declaration: :integer }
216
- }
217
- )
218
- end
219
- end
220
- end
@@ -1,61 +0,0 @@
1
- RSpec.describe Foobara::Entity::Concerns::Callbacks do
2
- around do |example|
3
- Foobara::Persistence.default_crud_driver = Foobara::Persistence::CrudDrivers::InMemory.new
4
-
5
- Foobara::Persistence.default_base.transaction do
6
- example.run
7
- end
8
- end
9
-
10
- after do
11
- Foobara.reset_alls
12
- end
13
-
14
- let(:entity_class) do
15
- stub_class = ->(klass) { stub_const(klass.name, klass) }
16
-
17
- Class.new(Foobara::Entity) do
18
- class << self
19
- def name
20
- "SomeEntity"
21
- end
22
- end
23
-
24
- stub_class.call(self)
25
-
26
- attributes pk: :integer,
27
- foo: :integer,
28
- bar: :symbol
29
-
30
- primary_key :pk
31
- end
32
- end
33
-
34
- describe ".after_any_action" do
35
- let(:record) { entity_class.create(foo: 10) }
36
-
37
- let(:calls) { [] }
38
-
39
- before do
40
- record.after_any_action do |**opts|
41
- calls << opts
42
- end
43
- end
44
-
45
- it "can create, load, and update records" do
46
- expect(calls).to be_empty
47
- expect(record).to be_dirty
48
-
49
- record.foo = 11
50
-
51
- expect(calls.size).to eq(1)
52
- expect(calls.last).to eq(
53
- record:,
54
- action: :attribute_changed,
55
- attribute_name: :foo,
56
- old_value: 10,
57
- new_value: 11
58
- )
59
- end
60
- end
61
- end
@@ -1,213 +0,0 @@
1
- RSpec.describe Foobara::Entity::Concerns::Initialization do
2
- describe "#run" do
3
- after do
4
- Foobara.reset_alls
5
- end
6
-
7
- before do
8
- Foobara::Persistence.default_crud_driver = Foobara::Persistence::CrudDrivers::InMemory.new
9
- end
10
-
11
- let(:base_class) do
12
- stub_class = ->(klass) { stub_const(klass.name, klass) }
13
-
14
- Class.new(Foobara::Entity) do
15
- abstract
16
-
17
- class << self
18
- def name
19
- "Base"
20
- end
21
- end
22
-
23
- stub_class.call(self)
24
-
25
- attributes id: :integer
26
-
27
- primary_key :id
28
- end
29
- end
30
-
31
- let(:user_class) do
32
- stub_class = ->(klass) { stub_const(klass.name, klass) }
33
-
34
- Class.new(base_class) do
35
- class << self
36
- def name
37
- "User"
38
- end
39
- end
40
-
41
- stub_class.call(self)
42
-
43
- attributes name: { type: :string, required: true }
44
- end
45
- end
46
-
47
- let(:person_class) do
48
- user_class
49
-
50
- stub_class = ->(klass) { stub_const(klass.name, klass) }
51
-
52
- Class.new(base_class) do
53
- class << self
54
- def name
55
- "Person"
56
- end
57
- end
58
-
59
- abstract
60
-
61
- stub_class.call(self)
62
-
63
- attributes user: User
64
- end
65
- end
66
-
67
- let(:applicant_class) do
68
- stub_class = ->(klass) { stub_const(klass.name, klass) }
69
-
70
- Class.new(person_class) do
71
- class << self
72
- def name
73
- "Applicant"
74
- end
75
- end
76
-
77
- stub_class.call(self)
78
-
79
- attributes is_active: :boolean
80
-
81
- # TODO: make sure this isn't necessary outside of test suite where name is created later...
82
- set_model_type
83
- end
84
- end
85
-
86
- describe "creation through casting" do
87
- def type_for_declaration(...)
88
- Foobara::Domain.current.foobara_type_from_declaration(...)
89
- end
90
-
91
- let(:type) do
92
- type_for_declaration([Applicant])
93
- end
94
-
95
- it "can create the record and nested associations, too" do
96
- applicant_class.transaction do
97
- expect(type.types_depended_on.map(&:type_symbol)).to contain_exactly(
98
- :Applicant, :array, :attributes, :duck, :symbol
99
- )
100
-
101
- expect(type.deep_types_depended_on.map(&:type_symbol)).to contain_exactly(
102
- :Applicant,
103
- :User,
104
- :array,
105
- :associative_array,
106
- :atomic_duck,
107
- :attributes,
108
- :boolean,
109
- :detached_entity,
110
- :duck,
111
- :duckture,
112
- :entity,
113
- :integer,
114
- :model,
115
- :number,
116
- :string,
117
- :symbol
118
- )
119
-
120
- applicants = type.process_value!([
121
- { user: { name: "Name1" }, is_active: false },
122
- { user: { name: "Name2" }, is_active: true },
123
- { user: { name: "Name3" }, is_active: false }
124
- ])
125
-
126
- expect(applicants).to all be_a(Applicant)
127
- expect(applicants.map(&:id)).to all be_nil
128
- expect(applicants.map(&:user).map(&:id)).to all be_nil
129
-
130
- applicant = Applicant.find_by_attribute(:is_active, true)
131
- expect(applicant.user.name).to eq("Name2")
132
- end
133
-
134
- User.transaction do
135
- applicants = Applicant.all.to_a
136
-
137
- expect(applicants).to all be_a(Applicant)
138
- expect(applicants.map(&:id)).to all be_a(Integer)
139
- expect(applicants.map(&:user).map(&:id)).to all be_a(Integer)
140
-
141
- applicant = Applicant.find_by_attribute(:is_active, true)
142
- expect(applicant.user.name).to eq("Name2")
143
- end
144
- end
145
-
146
- context "when not allowed to create an association via casting" do
147
- let(:user_class) do
148
- stub_class = ->(klass) { stub_const(klass.name, klass) }
149
-
150
- Class.new(base_class) do
151
- class << self
152
- def name
153
- "User"
154
- end
155
-
156
- def can_be_created_through_casting?
157
- false
158
- end
159
- end
160
-
161
- stub_class.call(self)
162
-
163
- attributes name: { type: :string, required: true }
164
- end
165
- end
166
-
167
- it "fails when creating by hash but works when creating by foreign key" do
168
- applicant_class.transaction do |tx|
169
- outcome = type.process_value(
170
- [
171
- { user: { name: "Name1" }, is_active: false },
172
- { user: { name: "Name2" }, is_active: true },
173
- { user: { name: "Name3" }, is_active: false }
174
- ]
175
- )
176
-
177
- expect(outcome).to_not be_success
178
-
179
- error_hash = outcome.errors_hash
180
-
181
- expect(error_hash.keys).to eq(
182
- [
183
- "data.0.user.cannot_cast",
184
- "data.1.user.cannot_cast",
185
- "data.2.user.cannot_cast"
186
- ]
187
- )
188
-
189
- expect(outcome.errors.first.path).to eq([0, :user])
190
-
191
- user1 = User.create(name: "Name1")
192
- user2 = User.create(name: "Name2")
193
- user3 = User.create(name: "Name3")
194
-
195
- tx.flush!
196
-
197
- outcome = type.process_value(
198
- [
199
- { user: user1.primary_key, is_active: false },
200
- { user: user2.primary_key, is_active: true },
201
- { user: user3.primary_key, is_active: false }
202
- ]
203
- )
204
-
205
- expect(outcome).to be_success
206
- applicants = Applicant.find_all_by_attribute(:is_active, true)
207
- expect(applicants.map(&:user).map(&:name)).to eq(["Name2"])
208
- end
209
- end
210
- end
211
- end
212
- end
213
- end
@@ -1,38 +0,0 @@
1
- RSpec.describe Foobara::Entity::Concerns::Mutations do
2
- after do
3
- Foobara.reset_alls
4
- end
5
-
6
- before do
7
- Foobara::Persistence.default_crud_driver = Foobara::Persistence::CrudDrivers::InMemory.new
8
- end
9
-
10
- let(:capybara_class) do
11
- stub_class "Capybara", Foobara::Entity do
12
- attributes do
13
- id :integer
14
- name :string, :required
15
- age :integer, :required
16
- end
17
-
18
- primary_key :id
19
- end
20
- end
21
-
22
- describe "#update" do
23
- it "updates the record in a persistent way" do
24
- capybara = capybara_class.transaction do
25
- Capybara.create(name: "Basil", age: 100)
26
- end
27
-
28
- expect {
29
- Capybara.transaction do
30
- record = Capybara.load(capybara.id)
31
- record.update(age: 101)
32
- end
33
- }.to change {
34
- Capybara.transaction { Capybara.load(capybara.id).age }
35
- }.from(100).to(101)
36
- end
37
- end
38
- end
@@ -1,184 +0,0 @@
1
- RSpec.describe Foobara::Entity::Concerns::Queries do
2
- after do
3
- Foobara.reset_alls
4
- end
5
-
6
- before do
7
- Foobara::Persistence.default_crud_driver = Foobara::Persistence::CrudDrivers::InMemory.new
8
- end
9
-
10
- let(:user_class) do
11
- stub_class "User", Foobara::Entity do
12
- attributes do
13
- id :integer
14
- name :string, :required
15
- stuff [:integer]
16
- end
17
-
18
- primary_key :id
19
- end
20
- end
21
-
22
- describe ".first" do
23
- context "when records do not exist" do
24
- it "is nil" do
25
- user_class.transaction do
26
- expect(user_class.first).to be_nil
27
- end
28
- end
29
- end
30
-
31
- context "when records exist" do
32
- before do
33
- user_class.transaction do
34
- user_class.create(name: "n1")
35
- user_class.create(name: "n2")
36
- end
37
- end
38
-
39
- it "fetches a record" do
40
- user_class.transaction do
41
- expect(user_class.first).to be_a(user_class)
42
- end
43
- end
44
- end
45
- end
46
-
47
- describe ".find_all_by_attribute_containing_any_of" do
48
- let(:user1) do
49
- user_class.create(name: "name1", stuff: [5, 6])
50
- end
51
-
52
- let(:user2) do
53
- user_class.create(name: "name2", stuff: [7, 8])
54
- end
55
- let(:user3) do
56
- user_class.create(name: "name3", stuff: [9, 10])
57
- end
58
-
59
- it "can find the records that contain the relevant values" do
60
- user_class.transaction do
61
- user1
62
- user2
63
- user3
64
- end
65
-
66
- user_class.transaction do
67
- users = user_class.find_all_by_attribute_containing_any_of(:stuff, [6, 9])
68
- expect(users.map(&:id)).to contain_exactly(1, 3)
69
- end
70
- end
71
-
72
- context "when records are created in the same transaction as the query" do
73
- it "can find the records that contain the relevant values" do
74
- user_class.transaction do
75
- user1
76
- user2
77
- user3
78
-
79
- expect(user_class.find_all_by_attribute_containing_any_of(:stuff, [6, 9])).to contain_exactly(user1, user3)
80
- end
81
- end
82
- end
83
- end
84
-
85
- describe ".load" do
86
- context "when the record is already loaded" do
87
- it "returns the record" do
88
- user = user_class.transaction do
89
- user_class.create(name: "Basil")
90
- end
91
-
92
- user_class.transaction do
93
- user = user_class.load(user.id)
94
- expect(user).to be_a(user_class)
95
- expect(user.name).to eq("Basil")
96
- user = user_class.load(user)
97
- expect(user).to be_a(user_class)
98
- expect(user.name).to eq("Basil")
99
- end
100
- end
101
- end
102
-
103
- context "with load_paths:" do
104
- let(:outer_entity) do
105
- user_class
106
-
107
- stub_class "Outer", Foobara::Entity do
108
- attributes do
109
- id :integer
110
- stuff :required do
111
- users [User], :required
112
- end
113
- end
114
-
115
- primary_key :id
116
- end
117
- end
118
-
119
- let(:outer_record) do
120
- outer_entity.transaction do
121
- outer_entity.create(stuff: { users: })
122
- end
123
- end
124
-
125
- let(:users) do
126
- (0..3).map do |i|
127
- User.create(name: "name#{i}")
128
- end
129
- end
130
-
131
- it "can load records with various types of load_paths specified in different ways" do
132
- record_id = outer_record.id
133
-
134
- record = outer_entity.transaction do
135
- outer_entity.load(record_id)
136
- end
137
- expect(record).to be_a(outer_entity)
138
- expect(record.stuff[:users].map(&:loaded?)).to eq([false, false, false, false])
139
-
140
- record = outer_entity.transaction do
141
- outer_entity.load(record_id, load_paths: "stuff.users.2")
142
- end
143
- expect(record).to be_a(outer_entity)
144
- expect(record.stuff[:users].map(&:loaded?)).to eq([false, false, true, false])
145
-
146
- record = outer_entity.transaction do
147
- outer_entity.load(record_id, load_paths: ["stuff.users.2"])
148
- end
149
- expect(record).to be_a(outer_entity)
150
- expect(record.stuff[:users].map(&:loaded?)).to eq([false, false, true, false])
151
-
152
- record = outer_entity.transaction do
153
- outer_entity.load(record_id, load_paths: ["stuff", "users", "2"])
154
- end
155
- expect(record).to be_a(outer_entity)
156
- expect(record.stuff[:users].map(&:loaded?)).to eq([false, false, true, false])
157
-
158
- record = outer_entity.transaction do
159
- outer_entity.load(record_id, load_paths: [:stuff, :users, :"2"])
160
- end
161
- expect(record).to be_a(outer_entity)
162
- expect(record.stuff[:users].map(&:loaded?)).to eq([false, false, true, false])
163
-
164
- record = outer_entity.transaction do
165
- outer_entity.load(record_id, load_paths: [[:stuff, :users, :"2"]])
166
- end
167
- expect(record).to be_a(outer_entity)
168
- expect(record.stuff[:users].map(&:loaded?)).to eq([false, false, true, false])
169
-
170
- record = outer_entity.transaction do
171
- outer_entity.load(record_id, load_paths: [[:stuff, :users, :"#"]])
172
- end
173
- expect(record).to be_a(outer_entity)
174
- expect(record.stuff[:users].map(&:loaded?)).to eq([true, true, true, true])
175
-
176
- record = outer_entity.transaction do
177
- outer_entity.load(record_id, load_paths: [[:stuff, :users]])
178
- end
179
- expect(record).to be_a(outer_entity)
180
- expect(record.stuff[:users].map(&:loaded?)).to eq([true, true, true, true])
181
- end
182
- end
183
- end
184
- end