shoulda-matchers 3.1.0 → 5.2.0

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 (288) hide show
  1. checksums.yaml +5 -5
  2. data/{MIT-LICENSE → LICENSE} +1 -1
  3. data/README.md +407 -232
  4. data/docs/errors/NonCaseSwappableValueError.md +2 -2
  5. data/lib/shoulda/matchers/action_controller/callback_matcher.rb +7 -80
  6. data/lib/shoulda/matchers/action_controller/filter_param_matcher.rb +4 -3
  7. data/lib/shoulda/matchers/action_controller/flash_store.rb +2 -4
  8. data/lib/shoulda/matchers/action_controller/permit_matcher.rb +36 -30
  9. data/lib/shoulda/matchers/action_controller/redirect_to_matcher.rb +8 -10
  10. data/lib/shoulda/matchers/action_controller/render_template_matcher.rb +7 -9
  11. data/lib/shoulda/matchers/action_controller/render_with_layout_matcher.rb +18 -15
  12. data/lib/shoulda/matchers/action_controller/rescue_from_matcher.rb +3 -2
  13. data/lib/shoulda/matchers/action_controller/respond_with_matcher.rb +3 -3
  14. data/lib/shoulda/matchers/action_controller/route_matcher.rb +88 -29
  15. data/lib/shoulda/matchers/action_controller/route_params.rb +2 -2
  16. data/lib/shoulda/matchers/action_controller/set_flash_matcher.rb +4 -4
  17. data/lib/shoulda/matchers/action_controller/set_session_matcher.rb +3 -3
  18. data/lib/shoulda/matchers/action_controller/set_session_or_flash_matcher.rb +19 -13
  19. data/lib/shoulda/matchers/action_controller.rb +2 -0
  20. data/lib/shoulda/matchers/active_model/allow_value_matcher/attribute_changed_value_error.rb +1 -1
  21. data/lib/shoulda/matchers/active_model/allow_value_matcher/attribute_setter.rb +5 -9
  22. data/lib/shoulda/matchers/active_model/allow_value_matcher/attribute_setter_and_validator.rb +2 -2
  23. data/lib/shoulda/matchers/active_model/allow_value_matcher/attribute_setters.rb +1 -1
  24. data/lib/shoulda/matchers/active_model/allow_value_matcher/attribute_setters_and_validators.rb +1 -1
  25. data/lib/shoulda/matchers/active_model/allow_value_matcher.rb +42 -39
  26. data/lib/shoulda/matchers/active_model/disallow_value_matcher.rb +1 -1
  27. data/lib/shoulda/matchers/active_model/have_secure_password_matcher.rb +52 -26
  28. data/lib/shoulda/matchers/active_model/helpers.rb +2 -2
  29. data/lib/shoulda/matchers/active_model/numericality_matchers/comparison_matcher.rb +32 -30
  30. data/lib/shoulda/matchers/active_model/numericality_matchers/numeric_type_matcher.rb +2 -1
  31. data/lib/shoulda/matchers/active_model/qualifiers/allow_blank.rb +26 -0
  32. data/lib/shoulda/matchers/active_model/qualifiers/allow_nil.rb +26 -0
  33. data/lib/shoulda/matchers/active_model/qualifiers/ignoring_interference_by_writer.rb +1 -1
  34. data/lib/shoulda/matchers/active_model/qualifiers.rb +2 -0
  35. data/lib/shoulda/matchers/active_model/validate_absence_of_matcher.rb +30 -6
  36. data/lib/shoulda/matchers/active_model/validate_acceptance_of_matcher.rb +8 -3
  37. data/lib/shoulda/matchers/active_model/validate_confirmation_of_matcher.rb +31 -16
  38. data/lib/shoulda/matchers/active_model/validate_exclusion_of_matcher.rb +52 -16
  39. data/lib/shoulda/matchers/active_model/validate_inclusion_of_matcher.rb +137 -84
  40. data/lib/shoulda/matchers/active_model/validate_length_of_matcher.rb +159 -46
  41. data/lib/shoulda/matchers/active_model/validate_numericality_of_matcher.rb +130 -66
  42. data/lib/shoulda/matchers/active_model/validate_presence_of_matcher.rb +251 -24
  43. data/lib/shoulda/matchers/active_model/validation_matcher/build_description.rb +12 -9
  44. data/lib/shoulda/matchers/active_model/validation_matcher.rb +38 -6
  45. data/lib/shoulda/matchers/active_model/validation_message_finder.rb +2 -4
  46. data/lib/shoulda/matchers/active_model/validator.rb +4 -9
  47. data/lib/shoulda/matchers/active_model.rb +3 -5
  48. data/lib/shoulda/matchers/active_record/accept_nested_attributes_for_matcher.rb +10 -7
  49. data/lib/shoulda/matchers/active_record/association_matcher.rb +386 -111
  50. data/lib/shoulda/matchers/active_record/association_matchers/counter_cache_matcher.rb +5 -2
  51. data/lib/shoulda/matchers/active_record/association_matchers/dependent_matcher.rb +4 -4
  52. data/lib/shoulda/matchers/active_record/association_matchers/inverse_of_matcher.rb +1 -1
  53. data/lib/shoulda/matchers/active_record/association_matchers/join_table_matcher.rb +11 -6
  54. data/lib/shoulda/matchers/active_record/association_matchers/model_reflection.rb +14 -15
  55. data/lib/shoulda/matchers/active_record/association_matchers/model_reflector.rb +30 -8
  56. data/lib/shoulda/matchers/active_record/association_matchers/option_verifier.rb +34 -11
  57. data/lib/shoulda/matchers/active_record/association_matchers/optional_matcher.rb +69 -0
  58. data/lib/shoulda/matchers/active_record/association_matchers/order_matcher.rb +1 -1
  59. data/lib/shoulda/matchers/active_record/association_matchers/required_matcher.rb +74 -0
  60. data/lib/shoulda/matchers/active_record/association_matchers/source_matcher.rb +3 -2
  61. data/lib/shoulda/matchers/active_record/association_matchers/through_matcher.rb +7 -5
  62. data/lib/shoulda/matchers/active_record/define_enum_for_matcher.rb +458 -42
  63. data/lib/shoulda/matchers/active_record/have_attached_matcher.rb +185 -0
  64. data/lib/shoulda/matchers/active_record/have_db_column_matcher.rb +63 -23
  65. data/lib/shoulda/matchers/active_record/have_db_index_matcher.rb +164 -48
  66. data/lib/shoulda/matchers/active_record/have_implicit_order_column.rb +106 -0
  67. data/lib/shoulda/matchers/active_record/have_readonly_attribute_matcher.rb +13 -11
  68. data/lib/shoulda/matchers/active_record/have_rich_text_matcher.rb +83 -0
  69. data/lib/shoulda/matchers/active_record/have_secure_token_matcher.rb +132 -0
  70. data/lib/shoulda/matchers/active_record/serialize_matcher.rb +18 -18
  71. data/lib/shoulda/matchers/active_record/uniqueness/test_model_creator.rb +1 -3
  72. data/lib/shoulda/matchers/active_record/uniqueness/test_models.rb +0 -2
  73. data/lib/shoulda/matchers/active_record/uniqueness.rb +1 -1
  74. data/lib/shoulda/matchers/active_record/validate_uniqueness_of_matcher.rb +430 -200
  75. data/lib/shoulda/matchers/active_record.rb +28 -20
  76. data/lib/shoulda/matchers/configuration.rb +12 -1
  77. data/lib/shoulda/matchers/doublespeak/double.rb +1 -1
  78. data/lib/shoulda/matchers/doublespeak/double_collection.rb +3 -3
  79. data/lib/shoulda/matchers/doublespeak/double_implementation_registry.rb +8 -5
  80. data/lib/shoulda/matchers/doublespeak/object_double.rb +6 -2
  81. data/lib/shoulda/matchers/doublespeak/stub_implementation.rb +1 -5
  82. data/lib/shoulda/matchers/doublespeak/world.rb +2 -2
  83. data/lib/shoulda/matchers/doublespeak.rb +2 -1
  84. data/lib/shoulda/matchers/error.rb +1 -1
  85. data/lib/shoulda/matchers/independent/delegate_method_matcher.rb +109 -29
  86. data/lib/shoulda/matchers/independent.rb +2 -2
  87. data/lib/shoulda/matchers/integrations/configuration.rb +8 -4
  88. data/lib/shoulda/matchers/integrations/libraries/action_controller.rb +1 -1
  89. data/lib/shoulda/matchers/integrations/libraries/rails.rb +2 -2
  90. data/lib/shoulda/matchers/integrations/test_frameworks/active_support_test_case.rb +1 -1
  91. data/lib/shoulda/matchers/integrations/test_frameworks/minitest_4.rb +1 -1
  92. data/lib/shoulda/matchers/integrations/test_frameworks/minitest_5.rb +1 -1
  93. data/lib/shoulda/matchers/integrations/test_frameworks/missing_test_framework.rb +1 -1
  94. data/lib/shoulda/matchers/integrations/test_frameworks/test_unit.rb +1 -1
  95. data/lib/shoulda/matchers/rails_shim.rb +172 -51
  96. data/lib/shoulda/matchers/routing.rb +2 -2
  97. data/lib/shoulda/matchers/util/word_wrap.rb +17 -12
  98. data/lib/shoulda/matchers/util.rb +39 -5
  99. data/lib/shoulda/matchers/version.rb +1 -1
  100. data/lib/shoulda/matchers/warn.rb +4 -3
  101. data/shoulda-matchers.gemspec +33 -15
  102. metadata +31 -338
  103. data/.gitignore +0 -12
  104. data/.hound.yml +0 -3
  105. data/.hound_config/ruby.yml +0 -12
  106. data/.travis.yml +0 -19
  107. data/.yardopts +0 -10
  108. data/Appraisals +0 -73
  109. data/CONTRIBUTING.md +0 -101
  110. data/Gemfile +0 -15
  111. data/Gemfile.lock +0 -70
  112. data/NEWS.md +0 -986
  113. data/Rakefile +0 -39
  114. data/custom_plan.rb +0 -88
  115. data/doc_config/gh-pages/index.html.erb +0 -9
  116. data/doc_config/yard/setup.rb +0 -22
  117. data/doc_config/yard/templates/default/fulldoc/html/css/bootstrap.css +0 -5967
  118. data/doc_config/yard/templates/default/fulldoc/html/css/full_list.css +0 -12
  119. data/doc_config/yard/templates/default/fulldoc/html/css/global.css +0 -62
  120. data/doc_config/yard/templates/default/fulldoc/html/css/solarized.css +0 -69
  121. data/doc_config/yard/templates/default/fulldoc/html/css/style.css +0 -312
  122. data/doc_config/yard/templates/default/fulldoc/html/full_list.erb +0 -32
  123. data/doc_config/yard/templates/default/fulldoc/html/full_list_class.erb +0 -1
  124. data/doc_config/yard/templates/default/fulldoc/html/full_list_method.erb +0 -8
  125. data/doc_config/yard/templates/default/fulldoc/html/js/app.js +0 -298
  126. data/doc_config/yard/templates/default/fulldoc/html/js/full_list.js +0 -1
  127. data/doc_config/yard/templates/default/fulldoc/html/js/jquery.stickyheaders.js +0 -289
  128. data/doc_config/yard/templates/default/fulldoc/html/js/underscore.min.js +0 -6
  129. data/doc_config/yard/templates/default/fulldoc/html/setup.rb +0 -8
  130. data/doc_config/yard/templates/default/layout/html/breadcrumb.erb +0 -14
  131. data/doc_config/yard/templates/default/layout/html/fonts.erb +0 -1
  132. data/doc_config/yard/templates/default/layout/html/footer.erb +0 -6
  133. data/doc_config/yard/templates/default/layout/html/layout.erb +0 -23
  134. data/doc_config/yard/templates/default/layout/html/search.erb +0 -13
  135. data/doc_config/yard/templates/default/layout/html/setup.rb +0 -40
  136. data/doc_config/yard/templates/default/method_details/html/source.erb +0 -10
  137. data/doc_config/yard/templates/default/module/html/box_info.erb +0 -31
  138. data/gemfiles/4.0.0.gemfile +0 -38
  139. data/gemfiles/4.0.0.gemfile.lock +0 -223
  140. data/gemfiles/4.0.1.gemfile +0 -38
  141. data/gemfiles/4.0.1.gemfile.lock +0 -225
  142. data/gemfiles/4.1.gemfile +0 -38
  143. data/gemfiles/4.1.gemfile.lock +0 -220
  144. data/gemfiles/4.2.gemfile +0 -38
  145. data/gemfiles/4.2.gemfile.lock +0 -243
  146. data/lib/shoulda/matchers/active_model/allow_mass_assignment_of_matcher.rb +0 -159
  147. data/lib/shoulda/matchers/independent/delegate_method_matcher/stubbed_target.rb +0 -37
  148. data/script/SUPPORTED_VERSIONS +0 -1
  149. data/script/install_gems_in_all_appraisals +0 -14
  150. data/script/run_all_tests +0 -14
  151. data/script/update_gem_in_all_appraisals +0 -15
  152. data/script/update_gems_in_all_appraisals +0 -14
  153. data/spec/acceptance/active_model_integration_spec.rb +0 -23
  154. data/spec/acceptance/independent_matchers_spec.rb +0 -125
  155. data/spec/acceptance/multiple_libraries_integration_spec.rb +0 -55
  156. data/spec/acceptance/rails_integration_spec.rb +0 -156
  157. data/spec/acceptance_spec_helper.rb +0 -23
  158. data/spec/doublespeak_spec_helper.rb +0 -2
  159. data/spec/report_warnings.rb +0 -7
  160. data/spec/spec_helper.rb +0 -21
  161. data/spec/support/acceptance/adds_shoulda_matchers_to_project.rb +0 -133
  162. data/spec/support/acceptance/helpers/active_model_helpers.rb +0 -11
  163. data/spec/support/acceptance/helpers/array_helpers.rb +0 -13
  164. data/spec/support/acceptance/helpers/base_helpers.rb +0 -19
  165. data/spec/support/acceptance/helpers/command_helpers.rb +0 -55
  166. data/spec/support/acceptance/helpers/file_helpers.rb +0 -19
  167. data/spec/support/acceptance/helpers/gem_helpers.rb +0 -31
  168. data/spec/support/acceptance/helpers/minitest_helpers.rb +0 -11
  169. data/spec/support/acceptance/helpers/n_unit_helpers.rb +0 -25
  170. data/spec/support/acceptance/helpers/pluralization_helpers.rb +0 -13
  171. data/spec/support/acceptance/helpers/rails_version_helpers.rb +0 -11
  172. data/spec/support/acceptance/helpers/rspec_helpers.rb +0 -24
  173. data/spec/support/acceptance/helpers/ruby_version_helpers.rb +0 -9
  174. data/spec/support/acceptance/helpers/step_helpers.rb +0 -127
  175. data/spec/support/acceptance/helpers.rb +0 -31
  176. data/spec/support/acceptance/matchers/have_output.rb +0 -31
  177. data/spec/support/acceptance/matchers/indicate_number_of_tests_was_run_matcher.rb +0 -55
  178. data/spec/support/acceptance/matchers/indicate_that_tests_were_run_matcher.rb +0 -103
  179. data/spec/support/tests/bundle.rb +0 -94
  180. data/spec/support/tests/command_runner.rb +0 -230
  181. data/spec/support/tests/current_bundle.rb +0 -61
  182. data/spec/support/tests/database.rb +0 -28
  183. data/spec/support/tests/database_adapters/postgresql.rb +0 -25
  184. data/spec/support/tests/database_adapters/sqlite3.rb +0 -26
  185. data/spec/support/tests/database_configuration.rb +0 -33
  186. data/spec/support/tests/database_configuration_registry.rb +0 -28
  187. data/spec/support/tests/filesystem.rb +0 -100
  188. data/spec/support/tests/version.rb +0 -45
  189. data/spec/support/unit/active_record/create_table.rb +0 -54
  190. data/spec/support/unit/attribute.rb +0 -47
  191. data/spec/support/unit/capture.rb +0 -40
  192. data/spec/support/unit/change_value.rb +0 -111
  193. data/spec/support/unit/create_model_arguments/basic.rb +0 -135
  194. data/spec/support/unit/create_model_arguments/has_many.rb +0 -15
  195. data/spec/support/unit/create_model_arguments/uniqueness_matcher.rb +0 -74
  196. data/spec/support/unit/helpers/active_model_helpers.rb +0 -27
  197. data/spec/support/unit/helpers/active_model_versions.rb +0 -28
  198. data/spec/support/unit/helpers/active_record_versions.rb +0 -24
  199. data/spec/support/unit/helpers/active_resource_builder.rb +0 -27
  200. data/spec/support/unit/helpers/allow_value_matcher_helpers.rb +0 -15
  201. data/spec/support/unit/helpers/class_builder.rb +0 -90
  202. data/spec/support/unit/helpers/column_type_helpers.rb +0 -26
  203. data/spec/support/unit/helpers/confirmation_matcher_helpers.rb +0 -17
  204. data/spec/support/unit/helpers/controller_builder.rb +0 -63
  205. data/spec/support/unit/helpers/database_helpers.rb +0 -20
  206. data/spec/support/unit/helpers/i18n_faker.rb +0 -15
  207. data/spec/support/unit/helpers/mailer_builder.rb +0 -12
  208. data/spec/support/unit/helpers/model_builder.rb +0 -114
  209. data/spec/support/unit/helpers/rails_versions.rb +0 -28
  210. data/spec/support/unit/helpers/validation_matcher_scenario_helpers.rb +0 -44
  211. data/spec/support/unit/i18n.rb +0 -7
  212. data/spec/support/unit/load_environment.rb +0 -12
  213. data/spec/support/unit/matchers/deprecate.rb +0 -60
  214. data/spec/support/unit/matchers/fail_with_message_including_matcher.rb +0 -51
  215. data/spec/support/unit/matchers/fail_with_message_matcher.rb +0 -62
  216. data/spec/support/unit/matchers/print_warning_including.rb +0 -59
  217. data/spec/support/unit/model_creation_strategies/active_model.rb +0 -111
  218. data/spec/support/unit/model_creation_strategies/active_record.rb +0 -77
  219. data/spec/support/unit/model_creators/active_model.rb +0 -39
  220. data/spec/support/unit/model_creators/active_record/has_and_belongs_to_many.rb +0 -95
  221. data/spec/support/unit/model_creators/active_record/has_many.rb +0 -67
  222. data/spec/support/unit/model_creators/active_record/uniqueness_matcher.rb +0 -42
  223. data/spec/support/unit/model_creators/active_record.rb +0 -43
  224. data/spec/support/unit/model_creators/basic.rb +0 -97
  225. data/spec/support/unit/model_creators.rb +0 -19
  226. data/spec/support/unit/rails_application.rb +0 -126
  227. data/spec/support/unit/record_builder_with_i18n_validation_message.rb +0 -69
  228. data/spec/support/unit/record_validating_confirmation_builder.rb +0 -51
  229. data/spec/support/unit/record_with_different_error_attribute_builder.rb +0 -92
  230. data/spec/support/unit/shared_examples/ignoring_interference_by_writer.rb +0 -79
  231. data/spec/support/unit/shared_examples/numerical_submatcher.rb +0 -17
  232. data/spec/support/unit/shared_examples/set_session_or_flash.rb +0 -360
  233. data/spec/support/unit/validation_matcher_scenario.rb +0 -62
  234. data/spec/unit/shoulda/matchers/action_controller/callback_matcher_spec.rb +0 -82
  235. data/spec/unit/shoulda/matchers/action_controller/filter_param_matcher_spec.rb +0 -28
  236. data/spec/unit/shoulda/matchers/action_controller/permit_matcher_spec.rb +0 -592
  237. data/spec/unit/shoulda/matchers/action_controller/redirect_to_matcher_spec.rb +0 -42
  238. data/spec/unit/shoulda/matchers/action_controller/render_template_matcher_spec.rb +0 -76
  239. data/spec/unit/shoulda/matchers/action_controller/render_with_layout_matcher_spec.rb +0 -62
  240. data/spec/unit/shoulda/matchers/action_controller/rescue_from_matcher_spec.rb +0 -90
  241. data/spec/unit/shoulda/matchers/action_controller/respond_with_matcher_spec.rb +0 -31
  242. data/spec/unit/shoulda/matchers/action_controller/route_matcher_spec.rb +0 -330
  243. data/spec/unit/shoulda/matchers/action_controller/route_params_spec.rb +0 -30
  244. data/spec/unit/shoulda/matchers/action_controller/set_flash_matcher_spec.rb +0 -67
  245. data/spec/unit/shoulda/matchers/action_controller/set_session_matcher_spec.rb +0 -17
  246. data/spec/unit/shoulda/matchers/action_controller/set_session_or_flash_matcher_spec.rb +0 -562
  247. data/spec/unit/shoulda/matchers/active_model/allow_mass_assignment_of_matcher_spec.rb +0 -115
  248. data/spec/unit/shoulda/matchers/active_model/allow_value_matcher_spec.rb +0 -823
  249. data/spec/unit/shoulda/matchers/active_model/disallow_value_matcher_spec.rb +0 -86
  250. data/spec/unit/shoulda/matchers/active_model/have_secure_password_matcher_spec.rb +0 -20
  251. data/spec/unit/shoulda/matchers/active_model/helpers_spec.rb +0 -162
  252. data/spec/unit/shoulda/matchers/active_model/validate_absence_of_matcher_spec.rb +0 -266
  253. data/spec/unit/shoulda/matchers/active_model/validate_acceptance_of_matcher_spec.rb +0 -91
  254. data/spec/unit/shoulda/matchers/active_model/validate_confirmation_of_matcher_spec.rb +0 -149
  255. data/spec/unit/shoulda/matchers/active_model/validate_exclusion_of_matcher_spec.rb +0 -207
  256. data/spec/unit/shoulda/matchers/active_model/validate_inclusion_of_matcher_spec.rb +0 -1015
  257. data/spec/unit/shoulda/matchers/active_model/validate_length_of_matcher_spec.rb +0 -288
  258. data/spec/unit/shoulda/matchers/active_model/validate_numericality_of_matcher_spec.rb +0 -1837
  259. data/spec/unit/shoulda/matchers/active_model/validate_presence_of_matcher_spec.rb +0 -380
  260. data/spec/unit/shoulda/matchers/active_record/accept_nested_attributes_for_matcher_spec.rb +0 -107
  261. data/spec/unit/shoulda/matchers/active_record/association_matcher_spec.rb +0 -1242
  262. data/spec/unit/shoulda/matchers/active_record/association_matchers/model_reflection_spec.rb +0 -251
  263. data/spec/unit/shoulda/matchers/active_record/define_enum_for_matcher_spec.rb +0 -168
  264. data/spec/unit/shoulda/matchers/active_record/have_db_column_matcher_spec.rb +0 -111
  265. data/spec/unit/shoulda/matchers/active_record/have_db_index_matcher_spec.rb +0 -85
  266. data/spec/unit/shoulda/matchers/active_record/have_readonly_attributes_matcher_spec.rb +0 -41
  267. data/spec/unit/shoulda/matchers/active_record/serialize_matcher_spec.rb +0 -86
  268. data/spec/unit/shoulda/matchers/active_record/validate_uniqueness_of_matcher_spec.rb +0 -1418
  269. data/spec/unit/shoulda/matchers/doublespeak/double_collection_spec.rb +0 -190
  270. data/spec/unit/shoulda/matchers/doublespeak/double_implementation_registry_spec.rb +0 -21
  271. data/spec/unit/shoulda/matchers/doublespeak/double_spec.rb +0 -271
  272. data/spec/unit/shoulda/matchers/doublespeak/object_double_spec.rb +0 -77
  273. data/spec/unit/shoulda/matchers/doublespeak/proxy_implementation_spec.rb +0 -72
  274. data/spec/unit/shoulda/matchers/doublespeak/stub_implementation_spec.rb +0 -101
  275. data/spec/unit/shoulda/matchers/doublespeak/world_spec.rb +0 -80
  276. data/spec/unit/shoulda/matchers/doublespeak_spec.rb +0 -27
  277. data/spec/unit/shoulda/matchers/independent/delegate_method_matcher/stubbed_target_spec.rb +0 -43
  278. data/spec/unit/shoulda/matchers/independent/delegate_method_matcher_spec.rb +0 -517
  279. data/spec/unit/shoulda/matchers/routing/route_matcher_spec.rb +0 -242
  280. data/spec/unit/shoulda/matchers/util/word_wrap_spec.rb +0 -252
  281. data/spec/unit_spec_helper.rb +0 -46
  282. data/spec/warnings_spy/filesystem.rb +0 -45
  283. data/spec/warnings_spy/partitioner.rb +0 -36
  284. data/spec/warnings_spy/reader.rb +0 -53
  285. data/spec/warnings_spy/reporter.rb +0 -88
  286. data/spec/warnings_spy.rb +0 -64
  287. data/tasks/documentation.rb +0 -199
  288. data/zeus.json +0 -11
data/script/run_all_tests DELETED
@@ -1,14 +0,0 @@
1
- #!/bin/bash
2
-
3
- SUPPORTED_VERSIONS=$(<script/SUPPORTED_VERSIONS)
4
-
5
- run-tests-for-version() {
6
- local version="$1"
7
- (export RBENV_VERSION=$version; bundle exec rake)
8
- }
9
-
10
- for version in $SUPPORTED_VERSIONS; do
11
- echo
12
- echo "*** Running tests for $version ***"
13
- run-tests-for-version $version
14
- done
@@ -1,15 +0,0 @@
1
- #!/bin/bash
2
-
3
- SUPPORTED_VERSIONS=$(<script/SUPPORTED_VERSIONS)
4
- gem="$1"
5
-
6
- update-gem-for-version() {
7
- local version="$1"
8
- (export RBENV_VERSION=$version; bundle update "$gem"; bundle exec appraisal update "$gem")
9
- }
10
-
11
- for version in $SUPPORTED_VERSIONS; do
12
- echo
13
- echo "*** Updating $gem for $version ***"
14
- update-gem-for-version $version
15
- done
@@ -1,14 +0,0 @@
1
- #!/bin/bash
2
-
3
- SUPPORTED_VERSIONS=$(<script/SUPPORTED_VERSIONS)
4
-
5
- update-gems-for-version() {
6
- local version="$1"
7
- (export RBENV_VERSION=$version; bundle update "${@:2}"; bundle exec appraisal update "${@:2}")
8
- }
9
-
10
- for version in $SUPPORTED_VERSIONS; do
11
- echo
12
- echo "*** Updating gems for $version ***"
13
- update-gems-for-version "$version" "$@"
14
- done
@@ -1,23 +0,0 @@
1
- require 'acceptance_spec_helper'
2
-
3
- describe 'shoulda-matchers integrates with an ActiveModel project' do
4
- specify 'and loads without errors' do
5
- create_active_model_project
6
-
7
- add_shoulda_matchers_to_project(
8
- test_frameworks: [:rspec],
9
- libraries: [:active_model]
10
- )
11
-
12
- write_file 'load_dependencies.rb', <<-FILE
13
- require 'active_model'
14
- require 'shoulda-matchers'
15
-
16
- puts ActiveModel::VERSION::STRING
17
- puts "Loaded all dependencies without errors"
18
- FILE
19
-
20
- result = run_command_within_bundle('ruby load_dependencies.rb')
21
- expect(result).to have_output('Loaded all dependencies without errors')
22
- end
23
- end
@@ -1,125 +0,0 @@
1
- require 'acceptance_spec_helper'
2
-
3
- describe 'shoulda-matchers has independent matchers, specifically delegate_method' do
4
- specify 'and integrates with a Ruby application that uses the default test framework' do
5
- create_generic_bundler_project
6
-
7
- updating_bundle do
8
- add_minitest_to_project
9
- add_shoulda_context_to_project(manually: true)
10
- add_shoulda_matchers_to_project(
11
- test_frameworks: [default_test_framework],
12
- manually: true
13
- )
14
- end
15
-
16
- write_file 'lib/post_office.rb', <<-FILE
17
- class PostOffice
18
- end
19
- FILE
20
-
21
- write_file 'lib/courier.rb', <<-FILE
22
- require 'forwardable'
23
-
24
- class Courier
25
- extend Forwardable
26
-
27
- def_delegators :post_office, :deliver
28
-
29
- attr_reader :post_office
30
-
31
- def initialize(post_office)
32
- @post_office = post_office
33
- end
34
- end
35
- FILE
36
-
37
- write_n_unit_test 'test/courier_test.rb' do |test_case_superclass|
38
- <<-FILE
39
- require 'test_helper'
40
- require 'courier'
41
- require 'post_office'
42
-
43
- class CourierTest < #{test_case_superclass}
44
- subject { Courier.new(post_office) }
45
-
46
- should delegate_method(:deliver).to(:post_office)
47
-
48
- def post_office
49
- PostOffice.new
50
- end
51
- end
52
- FILE
53
- end
54
-
55
- result = run_n_unit_tests('test/courier_test.rb')
56
-
57
- expect(result).to indicate_number_of_tests_was_run(1)
58
- expect(result).to have_output(
59
- 'Courier should delegate #deliver to #post_office object'
60
- )
61
- end
62
-
63
- specify 'and integrates with a Ruby application that uses RSpec' do
64
- create_generic_bundler_project
65
-
66
- updating_bundle do
67
- add_rspec_to_project
68
- add_shoulda_matchers_to_project(
69
- manually: true,
70
- with_configuration: false
71
- )
72
- write_file 'spec/spec_helper.rb', <<-FILE
73
- require 'shoulda/matchers/independent'
74
-
75
- RSpec.configure do |config|
76
- config.include(Shoulda::Matchers::Independent)
77
- end
78
- FILE
79
- end
80
-
81
- write_file 'lib/post_office.rb', <<-FILE
82
- class PostOffice
83
- end
84
- FILE
85
-
86
- write_file 'lib/courier.rb', <<-FILE
87
- require 'forwardable'
88
-
89
- class Courier
90
- extend Forwardable
91
-
92
- def_delegators :post_office, :deliver
93
-
94
- attr_reader :post_office
95
-
96
- def initialize(post_office)
97
- @post_office = post_office
98
- end
99
- end
100
- FILE
101
-
102
- write_file 'spec/courier_spec.rb', <<-FILE
103
- require 'spec_helper'
104
- require 'courier'
105
- require 'post_office'
106
-
107
- describe Courier do
108
- subject { Courier.new(post_office) }
109
-
110
- it { should delegate_method(:deliver).to(:post_office) }
111
-
112
- def post_office
113
- PostOffice.new
114
- end
115
- end
116
- FILE
117
-
118
- result = run_rspec_tests('spec/courier_spec.rb')
119
-
120
- expect(result).to indicate_number_of_tests_was_run(1)
121
- expect(result).to have_output(
122
- /Courier\s+should delegate #deliver to #post_office object/
123
- )
124
- end
125
- end
@@ -1,55 +0,0 @@
1
- require 'acceptance_spec_helper'
2
-
3
- describe 'shoulda-matchers integrates with multiple libraries' do
4
- before do
5
- create_rails_application
6
-
7
- write_file 'db/migrate/1_create_users.rb', <<-FILE
8
- class CreateUsers < ActiveRecord::Migration
9
- def self.up
10
- create_table :users do |t|
11
- t.string :name
12
- end
13
- end
14
- end
15
- FILE
16
-
17
- run_rake_tasks!(*%w(db:drop db:create db:migrate))
18
-
19
- write_file 'app/models/user.rb', <<-FILE
20
- class User < ActiveRecord::Base
21
- validates_presence_of :name
22
- validates_uniqueness_of :name
23
- end
24
- FILE
25
-
26
- add_rspec_file 'spec/models/user_spec.rb', <<-FILE
27
- describe User do
28
- subject { User.new(name: "John Smith") }
29
- it { should validate_presence_of(:name) }
30
- it { should validate_uniqueness_of(:name) }
31
- end
32
- FILE
33
-
34
- updating_bundle do
35
- add_rspec_rails_to_project!
36
- add_shoulda_matchers_to_project(
37
- test_frameworks: [:rspec],
38
- libraries: [:active_record, :active_model]
39
- )
40
- end
41
- end
42
-
43
- context 'when using both active_record and active_model libraries' do
44
- it 'allows the use of matchers from both libraries' do
45
- result = run_rspec_suite
46
- expect(result).to have_output('2 examples, 0 failures')
47
- expect(result).to have_output(
48
- 'should validate that :name cannot be empty/falsy'
49
- )
50
- expect(result).to have_output(
51
- 'should validate that :name is case-sensitively unique'
52
- )
53
- end
54
- end
55
- end
@@ -1,156 +0,0 @@
1
- require 'acceptance_spec_helper'
2
-
3
- describe 'shoulda-matchers integrates with Rails' do
4
- before do
5
- create_rails_application
6
-
7
- write_file 'db/migrate/1_create_users.rb', <<-FILE
8
- class CreateUsers < ActiveRecord::Migration
9
- def self.up
10
- create_table :users do |t|
11
- t.string :name
12
- end
13
- end
14
- end
15
- FILE
16
-
17
- run_rake_tasks!(*%w(db:drop db:create db:migrate))
18
-
19
- write_file 'app/models/user.rb', <<-FILE
20
- class User < ActiveRecord::Base
21
- validates_presence_of :name
22
- end
23
- FILE
24
-
25
- write_file 'app/controllers/examples_controller.rb', <<-FILE
26
- class ExamplesController < ApplicationController
27
- def show
28
- @example = 'hello'
29
- render nothing: true
30
- end
31
- end
32
- FILE
33
-
34
- configure_routes_with_single_wildcard_route
35
- end
36
-
37
- specify 'in a project that uses the default test framework' do
38
- updating_bundle do
39
- add_gems_for_n_unit
40
- add_shoulda_matchers_to_project(
41
- test_frameworks: [default_test_framework],
42
- libraries: [:rails]
43
- )
44
- end
45
-
46
- run_tests_for_n_unit
47
- end
48
-
49
- specify 'in a project that uses RSpec' do
50
- updating_bundle do
51
- add_gems_for_rspec
52
- add_shoulda_matchers_to_project(
53
- test_frameworks: [:rspec],
54
- libraries: [:rails]
55
- )
56
- end
57
-
58
- run_tests_for_rspec
59
- end
60
-
61
- specify 'in a project that uses Spring' do
62
- unless bundle_includes?('spring')
63
- skip "Spring isn't a dependency of this Appraisal"
64
- end
65
-
66
- updating_bundle do
67
- add_spring_to_project
68
- add_gems_for_rspec
69
- add_shoulda_matchers_to_project(
70
- test_frameworks: [:rspec],
71
- libraries: [:rails],
72
- manually: true
73
- )
74
- end
75
-
76
- run_command_within_bundle!('spring stop')
77
-
78
- run_tests_for_rspec
79
- end
80
-
81
- specify 'in a project that combines both RSpec and Test::Unit' do
82
- updating_bundle do
83
- add_gems_for_n_unit
84
- add_gems_for_rspec
85
- add_shoulda_matchers_to_project(
86
- test_frameworks: [:rspec, nil],
87
- libraries: [:rails]
88
- )
89
- end
90
-
91
- run_tests_for_n_unit
92
- run_tests_for_rspec
93
- end
94
-
95
- def add_gems_for_n_unit
96
- add_gem 'shoulda-context'
97
- end
98
-
99
- def add_gems_for_rspec
100
- add_rspec_rails_to_project!
101
- end
102
-
103
- def run_tests_for_n_unit
104
- write_file 'test/unit/user_test.rb', <<-FILE
105
- require 'test_helper'
106
-
107
- class UserTest < ActiveSupport::TestCase
108
- should validate_presence_of(:name)
109
- end
110
- FILE
111
-
112
- write_file 'test/functional/examples_controller_test.rb', <<-FILE
113
- require 'test_helper'
114
-
115
- class ExamplesControllerTest < ActionController::TestCase
116
- def setup
117
- get :show
118
- end
119
-
120
- should respond_with(:success)
121
- end
122
- FILE
123
-
124
- result = run_n_unit_test_suite
125
-
126
- expect(result).to indicate_that_tests_were_run(unit: 1, functional: 1)
127
- expect(result).to have_output(
128
- 'User should validate that :name cannot be empty/falsy'
129
- )
130
- expect(result).to have_output('should respond with 200')
131
- end
132
-
133
- def run_tests_for_rspec
134
- add_rspec_file 'spec/models/user_spec.rb', <<-FILE
135
- describe User do
136
- it { should validate_presence_of(:name) }
137
- end
138
- FILE
139
-
140
- add_rspec_file 'spec/controllers/examples_controller_spec.rb', <<-FILE
141
- describe ExamplesController, "show" do
142
- before { get :show }
143
-
144
- it { should respond_with(:success) }
145
- end
146
- FILE
147
-
148
- result = run_rspec_suite
149
-
150
- expect(result).to have_output('2 examples, 0 failures')
151
- expect(result).to have_output(
152
- 'should validate that :name cannot be empty/falsy'
153
- )
154
- expect(result).to have_output('should respond with 200')
155
- end
156
- end
@@ -1,23 +0,0 @@
1
- require_relative 'support/tests/current_bundle'
2
-
3
- Tests::CurrentBundle.instance.assert_appraisal!
4
-
5
- #---
6
-
7
- require 'rspec/core'
8
-
9
- require 'spec_helper'
10
-
11
- Dir[ File.join(File.expand_path('../support/acceptance/**/*.rb', __FILE__)) ].sort.each do |file|
12
- require file
13
- end
14
-
15
- RSpec.configure do |config|
16
- if config.respond_to?(:infer_spec_type_from_file_location!)
17
- config.infer_spec_type_from_file_location!
18
- end
19
-
20
- AcceptanceTests::Helpers.configure_example_group(config)
21
-
22
- config.include AcceptanceTests::Matchers
23
- end
@@ -1,2 +0,0 @@
1
- require 'shoulda/matchers/doublespeak'
2
- require 'spec_helper'
@@ -1,7 +0,0 @@
1
- require File.expand_path('../warnings_spy', __FILE__)
2
-
3
- # Adapted from <http://myronmars.to/n/dev-blog/2011/08/making-your-gem-warning-free>
4
-
5
- warnings_spy = WarningsSpy.new('shoulda-matchers')
6
- warnings_spy.capture_warnings
7
- warnings_spy.report_warnings_at_exit
data/spec/spec_helper.rb DELETED
@@ -1,21 +0,0 @@
1
- PROJECT_ROOT = File.expand_path('../..', __FILE__)
2
- $LOAD_PATH << File.join(PROJECT_ROOT, 'lib')
3
-
4
- require 'pry'
5
- require 'pry-byebug'
6
-
7
- require 'rspec'
8
-
9
- RSpec.configure do |config|
10
- config.order = :random
11
-
12
- config.expect_with :rspec do |c|
13
- c.syntax = :expect
14
- end
15
-
16
- config.default_formatter = 'doc'
17
-
18
- config.mock_with :rspec
19
- end
20
-
21
- $VERBOSE = true
@@ -1,133 +0,0 @@
1
- require_relative 'helpers/base_helpers'
2
- require_relative 'helpers/rspec_helpers'
3
-
4
- module AcceptanceTests
5
- class AddsShouldaMatchersToProject
6
- def self.call(options)
7
- new(options).call
8
- end
9
-
10
- include BaseHelpers
11
- include RspecHelpers
12
-
13
- def initialize(options)
14
- @options = options
15
- end
16
-
17
- def call
18
- add_gem 'shoulda-matchers', gem_options
19
-
20
- unless options[:with_configuration] === false
21
- configure_test_helper_files
22
- end
23
- end
24
-
25
- protected
26
-
27
- attr_reader :options
28
-
29
- private
30
-
31
- def gem_options
32
- gem_options = { path: fs.root_directory }
33
-
34
- if options[:manually]
35
- gem_options[:require] = false
36
- end
37
-
38
- gem_options
39
- end
40
-
41
- def configure_test_helper_files
42
- each_test_helper_file do |test_helper_file, test_framework, library|
43
- add_configuration_block_to(
44
- test_helper_file,
45
- test_framework,
46
- library
47
- )
48
- end
49
- end
50
-
51
- def each_test_helper_file
52
- options[:test_frameworks].each do |test_framework|
53
- libraries = options.fetch(:libraries, [])
54
-
55
- test_helper_files_for(test_framework, libraries).each do |test_helper_file|
56
- yield test_helper_file, test_framework, libraries
57
- end
58
- end
59
- end
60
-
61
- def add_configuration_block_to(test_helper_file, test_framework, libraries)
62
- test_framework_config = test_framework_config_for(test_framework)
63
- library_config = library_config_for(libraries)
64
-
65
- content = <<-EOT
66
- Shoulda::Matchers.configure do |config|
67
- config.integrate do |with|
68
- #{test_framework_config}
69
- #{library_config}
70
- end
71
- end
72
- EOT
73
-
74
- if options[:manually]
75
- content = "require 'shoulda-matchers'\n#{content}"
76
- end
77
-
78
- fs.append_to_file(test_helper_file, content)
79
- end
80
-
81
- def test_framework_config_for(test_framework)
82
- if test_framework
83
- "with.test_framework :#{test_framework}\n"
84
- else
85
- ''
86
- end
87
- end
88
-
89
- def library_config_for(libraries)
90
- libraries.map { |library| "with.library :#{library}" }.join("\n")
91
- end
92
-
93
- def test_helper_files_for(test_framework, libraries)
94
- files = []
95
-
96
- if integrates_with_nunit_and_rails?(test_framework, libraries) ||
97
- integrates_with_nunit_only?(test_framework)
98
- files << 'test/test_helper.rb'
99
- end
100
-
101
- if integrates_with_rspec?(test_framework)
102
- if bundle.includes?('rspec-rails')
103
- files << 'spec/rails_helper.rb'
104
- else
105
- files << 'spec/spec_helper.rb'
106
- end
107
- end
108
-
109
- files
110
- end
111
-
112
- def integrates_with_nunit_only?(test_framework)
113
- nunit_frameworks = [:test_unit, :minitest, :minitest_4, :minitest_5]
114
- nunit_frameworks.include?(test_framework)
115
- end
116
-
117
- def integrates_with_rspec?(test_framework)
118
- test_framework == :rspec
119
- end
120
-
121
- def integrates_with_rspec_rails_3_x?(test_framework, libraries)
122
- integrates_with_rails?(libraries) && rspec_rails_version >= 3
123
- end
124
-
125
- def integrates_with_nunit_and_rails?(test_framework, libraries)
126
- test_framework.nil? && libraries.include?(:rails)
127
- end
128
-
129
- def integrates_with_rails?(libraries)
130
- libraries.include?(:rails)
131
- end
132
- end
133
- end
@@ -1,11 +0,0 @@
1
- require_relative 'gem_helpers'
2
-
3
- module AcceptanceTests
4
- module ActiveModelHelpers
5
- include GemHelpers
6
-
7
- def active_model_version
8
- bundle_version_of('activemodel')
9
- end
10
- end
11
- end
@@ -1,13 +0,0 @@
1
- module AcceptanceTests
2
- module ArrayHelpers
3
- def to_sentence(array)
4
- if array.size == 1
5
- array[0]
6
- elsif array.size == 2
7
- array.join(' and ')
8
- else
9
- to_sentence(array[1..-2].join(', '), [array[-1]])
10
- end
11
- end
12
- end
13
- end
@@ -1,19 +0,0 @@
1
- require_relative '../../tests/bundle'
2
- require_relative '../../tests/database'
3
- require_relative '../../tests/filesystem'
4
-
5
- module AcceptanceTests
6
- module BaseHelpers
7
- def fs
8
- @_fs ||= Tests::Filesystem.new
9
- end
10
-
11
- def bundle
12
- @_bundle ||= Tests::Bundle.new
13
- end
14
-
15
- def database
16
- @_database ||= Tests::Database.instance
17
- end
18
- end
19
- end
@@ -1,55 +0,0 @@
1
- require_relative 'base_helpers'
2
- require_relative '../../tests/command_runner'
3
-
4
- module AcceptanceTests
5
- module CommandHelpers
6
- include BaseHelpers
7
- extend RSpec::Matchers::DSL
8
-
9
- def run_command(*args)
10
- Tests::CommandRunner.run(*args) do |runner|
11
- runner.directory = fs.project_directory
12
- yield runner if block_given?
13
- end
14
- end
15
-
16
- def run_command!(*args)
17
- run_command(*args) do |runner|
18
- runner.run_successfully = true
19
- yield runner if block_given?
20
- end
21
- end
22
-
23
- def run_command_within_bundle(*args)
24
- run_command(*args) do |runner|
25
- runner.command_prefix = 'bundle exec'
26
- runner.env['BUNDLE_GEMFILE'] = fs.find_in_project('Gemfile').to_s
27
-
28
- runner.around_command do |run_command|
29
- Bundler.with_clean_env(&run_command)
30
- end
31
-
32
- yield runner if block_given?
33
- end
34
- end
35
-
36
- def run_command_within_bundle!(*args)
37
- run_command_within_bundle(*args) do |runner|
38
- runner.run_successfully = true
39
- yield runner if block_given?
40
- end
41
- end
42
-
43
- def run_rake_tasks(*tasks)
44
- options = tasks.last.is_a?(Hash) ? tasks.pop : {}
45
- args = ['rake', *tasks, '--trace'] + [options]
46
- run_command_within_bundle(*args)
47
- end
48
-
49
- def run_rake_tasks!(*tasks)
50
- options = tasks.last.is_a?(Hash) ? tasks.pop : {}
51
- args = ['rake', *tasks, '--trace'] + [options]
52
- run_command_within_bundle!(*args)
53
- end
54
- end
55
- end