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,382 +0,0 @@
1
- RSpec.describe Foobara::Manifest 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
-
9
- stub_module :SomeOrg do
10
- foobara_organization!
11
- end
12
-
13
- stub_module :SomeOtherDomain do
14
- foobara_domain!
15
- end
16
-
17
- stub_class "SomeOtherDomain::SomeDetachedEntity", Foobara::DetachedEntity do
18
- attributes do
19
- id :integer, :required
20
- foo :string, :required
21
- bar :string, :required
22
- end
23
- primary_key :id
24
- end
25
-
26
- stub_class "SomeOtherDomain::SomeOtherUser", Foobara::Entity do
27
- attributes do
28
- id :integer
29
- first_name :string, :allow_nil
30
- some_detached_entity SomeOtherDomain::SomeDetachedEntity, :required
31
- end
32
- primary_key :id
33
- end
34
-
35
- stub_module("SomeOrg::SomeDomain") do
36
- foobara_domain!
37
- foobara_depends_on "SomeOtherDomain"
38
- end
39
-
40
- stub_module "SomeOrg::SomeDomain::Types"
41
-
42
- stub_class "SomeOrg::SomeDomain::Types::Address", Foobara::Model do
43
- attributes do
44
- street :string
45
- city :string
46
- state :string
47
- zip :string
48
- end
49
- end
50
-
51
- stub_class "SomeOrg::SomeDomain::User", Foobara::Entity do
52
- attributes do
53
- id :integer
54
- name :string, :required
55
- phone :string, :allow_nil
56
- ratings [:integer], default: []
57
- junk :associative_array, value_type_declaration: :array
58
- address SomeOrg::SomeDomain::Types::Address
59
- end
60
-
61
- primary_key :id
62
- end
63
-
64
- stub_class "SomeOrg::SomeDomain::Referral", Foobara::Entity do
65
- attributes do
66
- id :integer
67
- user SomeOrg::SomeDomain::User
68
- channel :string
69
- end
70
-
71
- primary_key :id
72
- end
73
-
74
- stub_class "SomeOrg::SomeDomain::QueryUser", Foobara::Query
75
- stub_class "SomeOrg::SomeDomain::QueryUser::SomethingWentWrongError", Foobara::RuntimeError do
76
- class << self
77
- def context_type_declaration
78
- {}
79
- end
80
- end
81
- end
82
-
83
- SomeOrg::SomeDomain::QueryUser.class_eval do
84
- inputs user: SomeOrg::SomeDomain::User,
85
- some_other_user: SomeOtherDomain::SomeOtherUser
86
- result :User
87
-
88
- load_all
89
-
90
- possible_error SomeOrg::SomeDomain::QueryUser::SomethingWentWrongError
91
- end
92
-
93
- stub_class "SomeOrg::SomeDomain::QueryReferral", Foobara::Command do
94
- inputs id: :integer
95
- result :Referral
96
- end
97
-
98
- stub_class "GlobalError", Foobara::RuntimeError do
99
- class << self
100
- def context_type_declaration
101
- {}
102
- end
103
- end
104
- end
105
-
106
- stub_class "GlobalCommand", Foobara::Command do
107
- possible_error GlobalError
108
- end
109
-
110
- stub_class "CommandWithNoPossibleErrors", Foobara::Command do
111
- def execute
112
- end
113
- end
114
- end
115
-
116
- let(:manifest) { Foobara::Manifest::RootManifest.new(raw_manifest) }
117
- let(:raw_manifest) do
118
- Foobara::TypeDeclarations.with_manifest_context(include_processors: true) do
119
- Foobara.manifest
120
- end
121
- end
122
- let(:raw_stringified_manifest) { Foobara::Util.deep_stringify_keys(raw_manifest) }
123
-
124
- it "is a Manifest" do
125
- integer = Foobara::Manifest::Type.new(raw_manifest, [:type, :integer])
126
- string = Foobara::Manifest::Type.new(raw_manifest, [:type, :string])
127
-
128
- expect(integer).to be_builtin
129
-
130
- expect(manifest).to be_a(Foobara::Manifest::RootManifest)
131
- expect(manifest.detached_entities).to be_an(Array)
132
- expect(manifest.lookup_path(:command, :does_not_exist)).to be_nil
133
- expect(manifest.lookup(:does_not_exist)).to be_nil
134
- expect(manifest.global_domain).to be_global
135
- expect(manifest.scoped_category).to be_nil
136
- expect(manifest.parent).to be_nil
137
-
138
- domain = manifest.domain_by_name("SomeOrg::SomeDomain")
139
- expect(domain.full_domain_name).to eq("SomeOrg::SomeDomain")
140
- expect(domain).to be_a(Foobara::Manifest::Domain)
141
- expect(domain.scoped_category).to eq(:domain)
142
- expect(manifest.domains).to include(domain)
143
- expect(domain.domain_name).to eq("SomeDomain")
144
-
145
- expect(domain.organization).to_not be_global
146
- expect(domain).to_not be_global
147
-
148
- entity = manifest.entity_by_name("SomeOrg::SomeDomain::User")
149
-
150
- expect(entity).to be_a(Foobara::Manifest::Entity)
151
- expect(entity.full_type_name).to eq("SomeOrg::SomeDomain::User")
152
- expect(entity.full_entity_name).to eq("SomeOrg::SomeDomain::User")
153
- expect(entity.primary_key_name).to eq("id")
154
-
155
- expect(entity.relevant_manifest[:base_type]).to eq(:entity)
156
- expect(entity).to_not have_associations
157
-
158
- detached_entity = manifest.detached_entity_by_name("SomeOtherDomain::SomeDetachedEntity")
159
- expect(detached_entity).to be_a(Foobara::Manifest::DetachedEntity)
160
- expect(detached_entity.full_type_name).to eq("SomeOtherDomain::SomeDetachedEntity")
161
- expect(detached_entity.full_detached_entity_name).to eq("SomeOtherDomain::SomeDetachedEntity")
162
- expect(detached_entity.primary_key_name).to eq("id")
163
- expect(detached_entity).to_not have_associations
164
- expect(detached_entity).to be_detached_entity
165
- Foobara::Manifest::TypeDeclaration.new(raw_manifest, [*detached_entity.manifest_path, :declaration_data])
166
- some_other_domain = manifest.domain_by_name("SomeOtherDomain")
167
- # expect(declaration.to_type).to be_detached_entity
168
- expect(some_other_domain.detached_entities).to include(detached_entity)
169
- some_other_user = manifest.type_by_name("SomeOtherDomain::SomeOtherUser")
170
- detached_entity_declaration = some_other_user.attributes_type.attribute_declarations[:some_detached_entity]
171
- expect(detached_entity_declaration).to be_detached_entity
172
- expect(detached_entity_declaration.to_detached_entity).to be_detached_entity
173
- expect(detached_entity_declaration.to_type).to be_detached_entity
174
-
175
- expect(entity.primary_key_type.to_type).to eq(integer)
176
- expect(entity.types_depended_on).to include(integer)
177
- expect(entity.scoped_category).to eq(:type)
178
- expect(entity.parent).to eq(domain)
179
- expect(manifest.entities).to include(entity)
180
-
181
- expect(entity.target_class).to eq("SomeOrg::SomeDomain::User")
182
- expect(entity.entity_manifest).to be_a(Hash)
183
- expect(entity.type_manifest).to be_a(Hash)
184
- expect(entity.attribute_names).to contain_exactly("name", "ratings", "junk", "phone", "address")
185
-
186
- expect(manifest.types).to include(entity)
187
- expect(entity.organization.types).to include(entity)
188
- expect(entity.to_type_declaration_from_declaration_data.name).to eq("User")
189
-
190
- attributes = entity.attributes_type
191
- expect(attributes).to be_a(Foobara::Manifest::TypeDeclaration)
192
- expect(attributes).to_not be_reference
193
- expect(attributes).to_not be_primitive
194
- expect(attributes.attribute_declarations[:id]).to be_reference
195
- expect(attributes.attribute_declarations[:id]).to be_primitive
196
- expect(attributes.attribute_declarations[:address]).to be_reference
197
- expect(attributes.attribute_declarations[:address]).to_not be_primitive
198
-
199
- expect(attributes).to_not be_custom
200
- expect(attributes.scoped_category).to be_nil
201
- expect(attributes.parent).to be_nil
202
- expect(attributes).to be_a(Foobara::Manifest::Attributes)
203
- expect(attributes.required?("name")).to be(true)
204
- expect(attributes.required?("ratings")).to be(false)
205
- expect(attributes.required).to eq([:name])
206
- expect(attributes.attribute_declarations[:ratings]).to be_array
207
- expect(attributes.attribute_declarations[:ratings].element_type.type).to eq(:integer)
208
- expect(attributes.attribute_declarations[:phone].allows_nil?).to be(true)
209
- expect(attributes.has_attribute_declarations?).to be(true)
210
-
211
- attribute = attributes.attribute_declarations[:ratings]
212
- expect(attribute).to be_attribute
213
- expect(attribute.parent_attributes).to eq(attributes)
214
- expect(attribute.attribute_name).to eq(:ratings)
215
- expect(attribute).to_not be_required
216
- expect(attribute.default).to eq([])
217
-
218
- new_attributes = Foobara::Manifest::TypeDeclaration.new(attributes.root_manifest, attributes.manifest_path)
219
- expect(new_attributes).to be_a(Foobara::Manifest::Attributes)
220
- expect(new_attributes).to be_attributes
221
- expect(new_attributes).to eql(attributes)
222
- expect(new_attributes.hash).to eql(attributes.hash)
223
-
224
- entity_with_associations = manifest.entity_by_name("SomeOrg::SomeDomain::Referral")
225
- expect(entity_with_associations).to have_associations
226
-
227
- expect(entity_with_associations.associations[:user]).to eq(entity)
228
-
229
- expect(
230
- entity_with_associations.attributes_type.attribute_declarations[:user].type_symbol
231
- ).to eq(:"SomeOrg::SomeDomain::User")
232
-
233
- model = manifest.model_by_name("SomeOrg::SomeDomain::Types::Address")
234
-
235
- expect(model).to be_a(Foobara::Manifest::Model)
236
- expect(model.model?).to be(true)
237
- expect(entity.attributes_type.attribute_declarations[:address].to_model).to eq(model)
238
-
239
- expect(model.types_depended_on).to include(string)
240
- expect(model.scoped_category).to eq(:type)
241
- expect(model.parent).to eq(domain)
242
- expect(manifest.models).to include(model)
243
-
244
- expect(model.target_class).to eq("SomeOrg::SomeDomain::Types::Address")
245
- expect(model.model_manifest).to be_a(Hash)
246
- expect(model.type_manifest).to be_a(Hash)
247
- expect(model.attribute_names).to contain_exactly("street", "city", "state", "zip")
248
-
249
- expect(manifest.types).to include(model)
250
- expect(model.organization.types).to include(model)
251
- expect(model.has_associations?).to be(false)
252
- expect(model.type_name).to eq("Types::Address")
253
-
254
- attributes = model.attributes_type
255
- expect(attributes.scoped_category).to be_nil
256
- expect(attributes.parent).to be_nil
257
- expect(attributes).to be_a(Foobara::Manifest::Attributes)
258
- expect(attributes.attribute_declarations[:street].type).to eq(:string)
259
- expect(attributes.sensitive).to be_falsey
260
- expect(attributes.sensitive_exposed).to be_falsey
261
-
262
- expect(manifest.queries.map(&:command_name)).to contain_exactly("QueryUser")
263
-
264
- command = manifest.command_by_name("SomeOrg::SomeDomain::QueryUser")
265
-
266
- expect(command).to be_query
267
- expect(command).to be_a(Foobara::Manifest::Command)
268
- expect(command.scoped_category).to eq(:command)
269
- expect(command.parent_category).to eq(:domain)
270
- expect(command.parent_name).to eq("SomeOrg::SomeDomain")
271
- expect(command.domain_reference).to eq("SomeOrg::SomeDomain")
272
- expect(command.parent).to eq(domain)
273
- expect(command.requires_authentication?).to be false
274
- expect(command.command_name).to eq("QueryUser")
275
- expect(manifest.commands).to include(command)
276
- expect(command.command_manifest).to be_a(Hash)
277
- expect(command.inputs_type).to be_a(Foobara::Manifest::Attributes)
278
- expect(command.inputs_type.required).to be_nil
279
- command = Foobara::Manifest::Command.new(raw_stringified_manifest, command.manifest_path)
280
- expect(command.inputs_type.required).to be_nil
281
- some_other_user_declaration = command.inputs_type.attribute_declarations[:some_other_user]
282
- expect(command.domain.find_type(some_other_user_declaration)).to be_a(Foobara::Manifest::Entity)
283
- expect(command.types_depended_on).to include(entity)
284
- expect(command.inputs_types_depended_on).to include(entity)
285
- expect(command.result_types_depended_on).to include(entity)
286
- expect(command.errors_types_depended_on).to include(
287
- Foobara::Manifest::Type.new(raw_manifest, [:type, :attributes])
288
- )
289
-
290
- type_declaration = command.result_type
291
- expect(type_declaration.type).to eq(:"SomeOrg::SomeDomain::User")
292
- expect(type_declaration.type_declaration_manifest).to eq(:"SomeOrg::SomeDomain::User")
293
- expect(type_declaration.to_entity).to be_a(Foobara::Manifest::Entity)
294
- expect(type_declaration.to_entity.scoped_category).to eq(:type)
295
- expect(type_declaration).to_not be_sensitive
296
-
297
- global_domain = Foobara::Manifest::Domain.new(raw_manifest, [:domain, "global_organization::global_domain"])
298
-
299
- global_command = manifest.command_by_name("GlobalCommand")
300
- expect(global_command).to be_a(Foobara::Manifest::Command)
301
- expect(global_command.full_command_name).to eq("GlobalCommand")
302
- expect(global_command.result_type).to be_nil
303
- expect(global_command.scoped_category).to eq(:command)
304
- expect(global_command.parent).to eq(global_domain)
305
- expect(global_command.domain).to eq(manifest.global_domain)
306
- expect(global_command.scoped_full_name).to eq("GlobalCommand")
307
- expect(global_command.domain.reference).to eq("global_organization::global_domain")
308
- expect(global_command.organization).to eq(manifest.global_organization)
309
- expect(global_command.inputs_type).to be_empty
310
-
311
- foobara_possible_error = command.possible_errors["data.cannot_cast"]
312
- expect(foobara_possible_error.scoped_category).to be_nil
313
- expect(foobara_possible_error.parent).to be_nil
314
- expect(foobara_possible_error._path).to eq([])
315
- expect(foobara_possible_error.processor_manifest_data).to be_a(Hash)
316
- expect(foobara_possible_error.manually_added).to be_falsey
317
-
318
- foobara_error = foobara_possible_error.error
319
- expect(foobara_error).to be_a(Foobara::Manifest::Error)
320
- expect(foobara_error.full_error_name).to eq("Foobara::Value::Processor::Casting::CannotCastError")
321
- expect(foobara_error.short_error_name).to eq("CannotCastError")
322
- expect(foobara_error.scoped_category).to eq(:error)
323
- expect(foobara_error.parent).to eq(
324
- Foobara::Manifest::ProcessorClass.new(
325
- raw_manifest,
326
- [:processor_class, "Foobara::Value::Processor::Casting"]
327
- )
328
- )
329
- expect(foobara_error.error_manifest).to be_a(Hash)
330
- expect(foobara_error.symbol).to be_a(Symbol)
331
- expect(foobara_error.organization.scoped_full_name).to eq("Foobara")
332
- expect(foobara_error.domain.scoped_full_name).to eq("Foobara::Value")
333
- expect(foobara_error.scoped_full_name).to eq("Foobara::Value::Processor::Casting::CannotCastError")
334
- expect(foobara_error.error_name).to eq("CannotCastError")
335
- expect(manifest.errors).to include(foobara_error)
336
- expect(foobara_error.abstract).to be_falsey
337
-
338
- local_possible_error = command.possible_errors["runtime.something_went_wrong"]
339
- expect(local_possible_error.scoped_category).to be_nil
340
- expect(local_possible_error.parent).to be_nil
341
- local_error = local_possible_error.error
342
- expect(local_error).to be_a(Foobara::Manifest::Error)
343
- expect(local_error.scoped_category).to eq(:error)
344
- expect(local_error.parent).to eq(command)
345
- expect(local_error.organization.scoped_full_name).to eq("SomeOrg")
346
- expect(local_error.domain.scoped_full_name).to eq("SomeOrg::SomeDomain")
347
- expect(local_error.scoped_name).to eq("SomethingWentWrongError")
348
- expect(local_error.scoped_full_name).to eq("SomeOrg::SomeDomain::QueryUser::SomethingWentWrongError")
349
- expect(local_error.types_depended_on.map(&:name)).to include(:attributes)
350
-
351
- global_error = Foobara::Manifest::Error.new(raw_manifest, [:error, "GlobalError"])
352
-
353
- expect(global_error).to be_a(Foobara::Manifest::Error)
354
- expect(global_error.scoped_category).to eq(:error)
355
- expect(global_error.parent).to eq(manifest.global_domain)
356
- expect(global_error.error_manifest).to be_a(Hash)
357
- expect(global_error.symbol).to be_a(Symbol)
358
- expect(global_error.organization).to eq(manifest.global_organization)
359
- expect(global_error.domain).to eq(manifest.global_domain)
360
- expect(global_error.scoped_full_name).to eq("GlobalError")
361
- expect(global_error.error_name).to eq("GlobalError")
362
-
363
- # TODO: disable this rubocop rule so we can just check against true
364
- expect(manifest).to be_contains("duck::SupportedCasters::AllowNil", :processor_class)
365
- processor_class = manifest.lookup_path(:processor_class, :"duck::SupportedCasters::AllowNil")
366
- expect(processor_class.full_processor_class_name).to eq("duck::SupportedCasters::AllowNil")
367
-
368
- processor = manifest.lookup("symbol::Casters::string")
369
- expect(processor.full_processor_name).to eq("symbol::Casters::string")
370
-
371
- org = manifest.organization_by_name("SomeOrg")
372
- expect(org.full_organization_name).to eq("SomeOrg")
373
- expect(org).to be_a(Foobara::Manifest::Organization)
374
- expect(org.scoped_category).to eq(:organization)
375
- expect(org.parent).to be_nil
376
- expect(manifest.organizations).to include(org)
377
- expect(org.organization_name).to eq("SomeOrg")
378
-
379
- command = manifest.command_by_name("CommandWithNoPossibleErrors")
380
- expect(command.possible_errors).to eq({})
381
- end
382
- end
@@ -1,126 +0,0 @@
1
- RSpec.describe Foobara::Manifest 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
-
9
- user_entity
10
- some_model
11
- end
12
-
13
- let(:manifest) { Foobara::Manifest::RootManifest.new(raw_manifest) }
14
- let(:raw_manifest) { Foobara.manifest }
15
- let(:user_entity) do
16
- stub_class "User", Foobara::Entity do
17
- attributes do
18
- id :integer
19
- first_name :string, :allow_nil
20
- end
21
- primary_key :id
22
- end
23
- end
24
- let(:model) { manifest.model_by_name("SomeModel") }
25
-
26
- describe "#has_associations?" do
27
- subject { model.has_associations? }
28
-
29
- context "when one of its attributes is an entity" do
30
- let(:some_model) do
31
- stub_class "SomeModel", Foobara::Model do
32
- attributes do
33
- user User
34
- end
35
- end
36
- end
37
-
38
- it { is_expected.to be(true) }
39
- end
40
-
41
- context "when one of its attributes is an array of entities" do
42
- let(:some_model) do
43
- stub_class "SomeModel", Foobara::Model do
44
- attributes do
45
- users [User]
46
- end
47
- end
48
- end
49
-
50
- it { is_expected.to be(true) }
51
- end
52
-
53
- context "when one of its attributes is a model that has entities in it" do
54
- let(:some_other_model) do
55
- stub_class "SomeOtherModel", Foobara::Model do
56
- attributes do
57
- users [User]
58
- end
59
- end
60
- end
61
- let(:some_model) do
62
- other_model_class = some_other_model
63
-
64
- stub_class "SomeModel", Foobara::Model do
65
- attributes do
66
- other other_model_class
67
- end
68
- end
69
- end
70
-
71
- it { is_expected.to be(true) }
72
- end
73
- end
74
-
75
- describe "#guaranteed_to_exist?" do
76
- subject { model.guaranteed_to_exist?(attribute_name) }
77
-
78
- let(:attribute_name) { :name }
79
-
80
- context "when the model has no delegates" do
81
- let(:some_model) do
82
- stub_class "SomeModel", Foobara::Model do
83
- attributes do
84
- name :string
85
- end
86
- end
87
- end
88
-
89
- it { is_expected.to be(false) }
90
- end
91
-
92
- context "when it's nested attributes" do
93
- let(:some_model) do
94
- stub_class "SomeModel", Foobara::Model do
95
- attributes do
96
- name do
97
- first :string
98
- last :string
99
- end
100
- end
101
-
102
- delegate_attribute :first, :name
103
- end
104
- end
105
-
106
- it { is_expected.to be(false) }
107
- end
108
-
109
- context "when required all the way down" do
110
- let(:some_model) do
111
- stub_class "SomeModel", Foobara::Model do
112
- attributes do
113
- name_parts :required do
114
- name :string, :required
115
- surname :string
116
- end
117
- end
118
-
119
- delegate_attribute :name, :name_parts
120
- end
121
- end
122
-
123
- it { is_expected.to be(true) }
124
- end
125
- end
126
- end
@@ -1,54 +0,0 @@
1
- ENV["FOOBARA_ENV"] = "test"
2
-
3
- require "bundler/setup"
4
-
5
- if ENV["RUBY_DEBUG"] == "true"
6
- require "debug"
7
- elsif ENV["SKIP_PRY"] != "true" && ENV["CI"] != "true"
8
- require "pry"
9
- require "pry-byebug" unless ENV["SKIP_BYEBUG"] == "true"
10
- end
11
-
12
- require "rspec/its"
13
- require "simplecov"
14
-
15
- SimpleCov.root "#{__dir__}/../../../"
16
- SimpleCov.command_name "manifest"
17
- SimpleCov.coverage_dir "coverage/manifest"
18
-
19
- SimpleCov.start do
20
- add_filter "spec/support/"
21
- # This avoids printing out info about coverage generated by HTTPFormatter
22
- formatter Class.new { def format(_result) = nil }
23
- end
24
-
25
- require "foobara/all"
26
- require "foobara/command_connectors"
27
-
28
- RSpec.configure do |config|
29
- # Need to do :all instead of :each because for specs that use .around,
30
- # .after(:each) do |example| here is called after example.run but before any threads created in
31
- # .around might have been cleaned up.
32
- config.after(:suite) do
33
- threads = Thread.list.reject { |t| t.name == "DEBUGGER__::SESSION@server" }
34
- expect(threads.size).to eq(1)
35
- end
36
- config.filter_run_when_matching :focus
37
-
38
- # Enable flags like --only-failures and --next-failure
39
- config.example_status_persistence_file_path = ".rspec_status"
40
-
41
- # Disable RSpec exposing methods globally on `Module` and `main`
42
- config.disable_monkey_patching!
43
-
44
- config.order = :defined
45
-
46
- config.expect_with :rspec do |c|
47
- c.syntax = :expect
48
- end
49
-
50
- # config.raise_errors_for_deprecations!
51
- end
52
-
53
- require "foobara/spec_helpers/all"
54
- Dir["#{__dir__}/support/**/*.rb"].each { |f| require f }
@@ -1,39 +0,0 @@
1
- RSpec.describe Foobara::Manifest do
2
- after do
3
- Foobara.reset_alls
4
- end
5
-
6
- let(:model_class) do
7
- stub_class("SomeModel", Foobara::Model) do
8
- attributes do
9
- foo :string
10
- end
11
- end
12
- end
13
-
14
- let(:command_class) do
15
- stub_class("SomeCommand", Foobara::Command) do
16
- inputs do
17
- some_model SomeModel, :allow_nil
18
- end
19
- end
20
- end
21
-
22
- let(:root_manifest) { Foobara::Manifest::RootManifest.new(raw_manifest) }
23
- let(:raw_manifest) do
24
- model_class
25
- command_class
26
- Foobara.manifest
27
- end
28
-
29
- describe "#to_model" do
30
- context "when an allow_nil type declaration of a model" do
31
- let(:type_declaration) { Foobara::Manifest::TypeDeclaration.new(root_manifest, path) }
32
- let(:path) { [:command, "SomeCommand", :inputs_type, :element_type_declarations, :some_model] }
33
-
34
- it "can still cast it to a model from a type_declaration" do
35
- expect(type_declaration.to_model).to be_a(Foobara::Manifest::Model)
36
- end
37
- end
38
- end
39
- end
@@ -1,30 +0,0 @@
1
- RSpec.describe Foobara::Manifest::Type do
2
- after { Foobara.reset_alls }
3
-
4
- context "when it's an associative array" do
5
- before do
6
- Foobara::GlobalDomain.foobara_register_type(:some_type,
7
- type: :associative_array,
8
- value_type_declaration: :string,
9
- key_type_declaration: :integer)
10
- end
11
-
12
- describe "#associative_array?" do
13
- it "is true" do
14
- root_manifest = Foobara::Manifest::RootManifest.new(Foobara.manifest)
15
- expect(root_manifest.type_by_name(:some_type)).to be_associative_array
16
- end
17
- end
18
-
19
- describe "#to_type_declaration_from_declaration_data" do
20
- it "gives an associative_array declaration" do
21
- root_manifest = Foobara::Manifest::RootManifest.new(Foobara.manifest)
22
- type = root_manifest.type_by_name(:some_type)
23
- declaration = type.to_type_declaration_from_declaration_data
24
-
25
- expect(declaration).to be_a(Foobara::Manifest::TypeDeclaration)
26
- expect(declaration).to be_associative_array
27
- end
28
- end
29
- end
30
- end