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
@@ -1,19 +0,0 @@
1
- require_relative 'base_helpers'
2
-
3
- module AcceptanceTests
4
- module FileHelpers
5
- include BaseHelpers
6
-
7
- def append_to_file(path, content, options = {})
8
- fs.append_to_file(path, content, options)
9
- end
10
-
11
- def remove_from_file(path, pattern)
12
- fs.remove_from_file(path, pattern)
13
- end
14
-
15
- def write_file(path, content)
16
- fs.write(path, content)
17
- end
18
- end
19
- end
@@ -1,31 +0,0 @@
1
- require_relative 'base_helpers'
2
- require_relative 'command_helpers'
3
- require_relative 'file_helpers'
4
-
5
- module AcceptanceTests
6
- module GemHelpers
7
- include BaseHelpers
8
- include CommandHelpers
9
- include FileHelpers
10
-
11
- def add_gem(gem, *args)
12
- bundle.add_gem(gem, *args)
13
- end
14
-
15
- def install_gems
16
- bundle.install_gems
17
- end
18
-
19
- def updating_bundle(&block)
20
- bundle.updating(&block)
21
- end
22
-
23
- def bundle_version_of(gem)
24
- bundle.version_of(gem)
25
- end
26
-
27
- def bundle_includes?(gem)
28
- bundle.includes?(gem)
29
- end
30
- end
31
- end
@@ -1,11 +0,0 @@
1
- require_relative 'gem_helpers'
2
-
3
- module AcceptanceTests
4
- module MinitestHelpers
5
- include GemHelpers
6
-
7
- def minitest_version
8
- bundle_version_of('minitest')
9
- end
10
- end
11
- end
@@ -1,25 +0,0 @@
1
- require_relative 'rails_version_helpers'
2
-
3
- module AcceptanceTests
4
- module NUnitHelpers
5
- include RailsVersionHelpers
6
-
7
- def n_unit_test_case_superclass
8
- case default_test_framework
9
- when :test_unit then 'Test::Unit::TestCase'
10
- when :minitest_4 then 'MiniTest::Unit::TestCase'
11
- else 'Minitest::Test'
12
- end
13
- end
14
-
15
- def default_test_framework
16
- if rails_version =~ '< 4'
17
- :test_unit
18
- elsif rails_version =~ '~> 4.0.0'
19
- :minitest_4
20
- else
21
- :minitest
22
- end
23
- end
24
- end
25
- end
@@ -1,13 +0,0 @@
1
- module AcceptanceTests
2
- module PluralizationHelpers
3
- def pluralize(count, singular_version, plural_version = nil)
4
- plural_version ||= singular_version + 's'
5
-
6
- if count == 1
7
- "#{count} #{singular_version}"
8
- else
9
- "#{count} #{plural_version}"
10
- end
11
- end
12
- end
13
- end
@@ -1,11 +0,0 @@
1
- require_relative 'gem_helpers'
2
-
3
- module AcceptanceTests
4
- module RailsVersionHelpers
5
- include GemHelpers
6
-
7
- def rails_version
8
- bundle_version_of('rails')
9
- end
10
- end
11
- end
@@ -1,24 +0,0 @@
1
- require_relative 'gem_helpers'
2
-
3
- module AcceptanceTests
4
- module RspecHelpers
5
- include GemHelpers
6
-
7
- def rspec_core_version
8
- bundle_version_of('rspec-core')
9
- end
10
-
11
- def rspec_expectations_version
12
- bundle_version_of('rspec-expectations')
13
- end
14
-
15
- def rspec_rails_version
16
- bundle_version_of('rspec-rails')
17
- end
18
-
19
- def add_rspec_file(path, content)
20
- content = "require 'rails_helper'\n#{content}"
21
- write_file path, content
22
- end
23
- end
24
- end
@@ -1,9 +0,0 @@
1
- require_relative '../../tests/version'
2
-
3
- module AcceptanceTests
4
- module RubyVersionHelpers
5
- def ruby_version
6
- Tests::Version.new(RUBY_VERSION)
7
- end
8
- end
9
- end
@@ -1,127 +0,0 @@
1
- require_relative 'file_helpers'
2
- require_relative 'gem_helpers'
3
- require_relative 'minitest_helpers'
4
-
5
- require 'yaml'
6
-
7
- module AcceptanceTests
8
- module StepHelpers
9
- include FileHelpers
10
- include GemHelpers
11
- include MinitestHelpers
12
-
13
- extend RSpec::Matchers::DSL
14
-
15
- def create_active_model_project
16
- create_generic_bundler_project
17
- add_gem 'activemodel', active_model_version
18
- end
19
-
20
- def create_generic_bundler_project
21
- fs.clean
22
- fs.create
23
- run_command! 'bundle init'
24
- end
25
-
26
- def add_shoulda_matchers_to_project(options = {})
27
- AddsShouldaMatchersToProject.call(options)
28
- end
29
-
30
- def add_minitest_to_project
31
- add_gem 'minitest-reporters'
32
-
33
- append_to_file 'test/test_helper.rb', <<-FILE
34
- require 'minitest/autorun'
35
- require 'minitest/reporters'
36
-
37
- Minitest::Reporters.use!(Minitest::Reporters::SpecReporter.new)
38
- FILE
39
- end
40
-
41
- def add_shoulda_context_to_project(options = {})
42
- add_gem 'shoulda-context'
43
-
44
- if options[:manually]
45
- append_to_file 'test/test_helper.rb', <<-FILE
46
- require 'shoulda/context'
47
- FILE
48
- end
49
- end
50
-
51
- def write_n_unit_test(path)
52
- contents = yield n_unit_test_case_superclass
53
- write_file(path, contents)
54
- end
55
-
56
- def run_n_unit_tests(*paths)
57
- run_command_within_bundle 'ruby -I lib -I test', *paths
58
- end
59
-
60
- def run_n_unit_test_suite
61
- run_rake_tasks('test', env: { TESTOPTS: '-v' })
62
- end
63
-
64
- def create_rails_application
65
- fs.clean
66
-
67
- command = "bundle exec rails new #{fs.project_directory} --skip-bundle --no-rc"
68
-
69
- run_command!(command) do |runner|
70
- runner.directory = nil
71
- end
72
-
73
- updating_bundle do |bundle|
74
- bundle.remove_gem 'turn'
75
- bundle.remove_gem 'coffee-rails'
76
- bundle.remove_gem 'uglifier'
77
- bundle.remove_gem 'debugger'
78
- bundle.remove_gem 'byebug'
79
- bundle.remove_gem 'web-console'
80
- bundle.add_gem 'pg'
81
- end
82
-
83
- fs.open('config/database.yml', 'w') do |file|
84
- YAML.dump(database.config.to_hash, file)
85
- end
86
- end
87
-
88
- def configure_routes_with_single_wildcard_route
89
- write_file 'config/routes.rb', <<-FILE
90
- Rails.application.routes.draw do
91
- get ':controller(/:action(/:id(.:format)))'
92
- end
93
- FILE
94
- end
95
-
96
- def add_rspec_to_project
97
- add_gem 'rspec-core', rspec_core_version
98
- add_gem 'rspec-expectations', rspec_expectations_version
99
- append_to_file 'spec/spec_helper.rb', <<-FILE
100
- require 'rspec/core'
101
- require 'rspec/expectations'
102
- FILE
103
- end
104
-
105
- def add_rspec_rails_to_project!
106
- add_gem 'rspec-rails', rspec_rails_version
107
- run_command_within_bundle!('rails g rspec:install')
108
- remove_from_file '.rspec', '--warnings'
109
- end
110
-
111
- def run_rspec_tests(*paths)
112
- run_command_within_bundle 'rspec --format documentation --backtrace', *paths
113
- end
114
-
115
- def run_rspec_suite
116
- run_rake_tasks('spec', env: { SPEC_OPTS: '-fd' })
117
- end
118
-
119
- def add_spring_to_project
120
- if rails_version < 4
121
- add_gem 'spring'
122
- end
123
-
124
- add_gem 'spring-commands-rspec'
125
- end
126
- end
127
- end
@@ -1,31 +0,0 @@
1
- require_relative 'helpers/active_model_helpers'
2
- require_relative 'helpers/base_helpers'
3
- require_relative 'helpers/command_helpers'
4
- require_relative 'helpers/gem_helpers'
5
- require_relative 'helpers/n_unit_helpers'
6
- require_relative 'helpers/rails_version_helpers'
7
- require_relative 'helpers/rspec_helpers'
8
- require_relative 'helpers/ruby_version_helpers'
9
- require_relative 'helpers/step_helpers'
10
-
11
- module AcceptanceTests
12
- module Helpers
13
- def self.configure_example_group(example_group)
14
- example_group.include(self)
15
-
16
- example_group.before do
17
- fs.clean
18
- end
19
- end
20
-
21
- include ActiveModelHelpers
22
- include BaseHelpers
23
- include CommandHelpers
24
- include GemHelpers
25
- include NUnitHelpers
26
- include RailsVersionHelpers
27
- include RspecHelpers
28
- include RubyVersionHelpers
29
- include StepHelpers
30
- end
31
- end
@@ -1,31 +0,0 @@
1
- module AcceptanceTests
2
- module Matchers
3
- def have_output(output)
4
- HaveOutputMatcher.new(output)
5
- end
6
-
7
- class HaveOutputMatcher
8
- def initialize(output)
9
- @output = output
10
- end
11
-
12
- def matches?(runner)
13
- @runner = runner
14
- runner.has_output?(output)
15
- end
16
-
17
- def failure_message
18
- "Expected command to have output, but did not.\n\n" +
19
- "Command: #{runner.formatted_command}\n\n" +
20
- "Expected output:\n" +
21
- output.inspect + "\n\n" +
22
- "Actual output:\n" +
23
- runner.output
24
- end
25
-
26
- protected
27
-
28
- attr_reader :output, :runner
29
- end
30
- end
31
- end
@@ -1,55 +0,0 @@
1
- require_relative '../helpers/pluralization_helpers'
2
- require_relative '../helpers/rails_version_helpers'
3
-
4
- module AcceptanceTests
5
- module Matchers
6
- def indicate_number_of_tests_was_run(expected_output)
7
- IndicateNumberOfTestsWasRunMatcher.new(expected_output)
8
- end
9
-
10
- class IndicateNumberOfTestsWasRunMatcher
11
- include PluralizationHelpers
12
- include RailsVersionHelpers
13
-
14
- def initialize(number)
15
- @number = number
16
- end
17
-
18
- def matches?(runner)
19
- @runner = runner
20
- expected_output === actual_output
21
- end
22
-
23
- def failure_message
24
- message = "Expected output to indicate that #{some_tests_were_run}.\n" +
25
- "Expected output: #{expected_output}\n"
26
-
27
- if actual_output.empty?
28
- message << 'Actual output: (empty)'
29
- else
30
- message << "Actual output:\n#{actual_output}"
31
- end
32
-
33
- message
34
- end
35
-
36
- protected
37
-
38
- attr_reader :number, :runner
39
-
40
- private
41
-
42
- def expected_output
43
- /#{number} (?:tests?|runs?|examples?)(?:, #{number} assertions)?, 0 failures(?:, 0 errors(?:, 0 skips)?)?/
44
- end
45
-
46
- def actual_output
47
- runner.output
48
- end
49
-
50
- def some_tests_were_run
51
- pluralize(number, 'test was', 'tests were') + ' run'
52
- end
53
- end
54
- end
55
- end
@@ -1,103 +0,0 @@
1
- require_relative '../helpers/array_helpers'
2
- require_relative '../helpers/pluralization_helpers'
3
- require_relative '../helpers/rails_version_helpers'
4
-
5
- module AcceptanceTests
6
- module Matchers
7
- def indicate_that_tests_were_run(series)
8
- IndicateThatTestsWereRunMatcher.new(series)
9
- end
10
-
11
- class IndicateThatTestsWereRunMatcher
12
- include ArrayHelpers
13
- include PluralizationHelpers
14
- include RailsVersionHelpers
15
-
16
- def initialize(args)
17
- @args = args
18
- @series = args.values
19
- end
20
-
21
- def matches?(runner)
22
- @runner = runner
23
- !matching_expected_output.nil?
24
- end
25
-
26
- def failure_message
27
- "Expected output to indicate that #{some_tests_were_run}.\n" +
28
- "#{formatted_expected_output}\n" +
29
- "#{formatted_actual_output}\n"
30
- end
31
-
32
- protected
33
-
34
- attr_reader :args, :series, :runner
35
-
36
- private
37
-
38
- def expected_outputs
39
- [
40
- expected_output_for_rails_3,
41
- expected_output_for_turn,
42
- expected_output_for_rails_4
43
- ]
44
- end
45
-
46
- def matching_expected_output
47
- @_matching_expected_output ||=
48
- expected_outputs.detect do |expected_output|
49
- actual_output =~ expected_output
50
- end
51
- end
52
-
53
- def expected_output_for_rails_3
54
- full_report = series.map do |number|
55
- "#{number} tests, #{number} assertions, 0 failures, 0 errors(, 0 skips)?"
56
- end.join('.+')
57
-
58
- Regexp.new(full_report, Regexp::MULTILINE)
59
- end
60
-
61
- def expected_output_for_turn
62
- full_report = series.map do |number|
63
- "pass: #{number}, fail: 0, error: 0"
64
- end.join('.+')
65
-
66
- Regexp.new(full_report, Regexp::MULTILINE)
67
- end
68
-
69
- def expected_output_for_rails_4
70
- total = series.inject(:+)
71
- /#{total} (tests|runs), #{total} assertions, 0 failures, 0 errors(, 0 skips)?/
72
- end
73
-
74
- def formatted_expected_output
75
- if matching_expected_output
76
- "Expected output:\n#{matching_actual_output}"
77
- else
78
- "Expected output: (n/a)"
79
- end
80
- end
81
-
82
- def actual_output
83
- runner.output
84
- end
85
-
86
- def formatted_actual_output
87
- if actual_output.empty?
88
- "Actual output: (empty)"
89
- else
90
- "Actual output:\n#{actual_output}"
91
- end
92
- end
93
-
94
- def some_tests_were_run
95
- clauses = args.map do |type, number|
96
- pluralize(number, "#{type} test was run", "#{type} tests were run")
97
- end
98
-
99
- to_sentence(clauses)
100
- end
101
- end
102
- end
103
- end
@@ -1,94 +0,0 @@
1
- require_relative 'filesystem'
2
- require_relative 'command_runner'
3
- require_relative 'version'
4
-
5
- module Tests
6
- class Bundle
7
- def initialize
8
- @already_updating = false
9
- @fs = Filesystem.new
10
- end
11
-
12
- def updating(&block)
13
- if already_updating?
14
- yield self
15
- return
16
- end
17
-
18
- @already_updating = true
19
-
20
- yield self
21
-
22
- @already_updating = false
23
-
24
- install_gems
25
- end
26
-
27
- def add_gem(gem, *args)
28
- updating do
29
- options = args.last.is_a?(Hash) ? args.pop : {}
30
- version = args.shift
31
- line = assemble_gem_line(gem, version, options)
32
- fs.append_to_file('Gemfile', line)
33
- end
34
- end
35
-
36
- def remove_gem(gem)
37
- updating do
38
- fs.comment_lines_matching('Gemfile', /^[ ]*gem ("|')#{gem}\1/)
39
- end
40
- end
41
-
42
- def install_gems
43
- CommandRunner.run!('bundle install --local') do |runner|
44
- runner.retries = 5
45
- end
46
- end
47
-
48
- def version_of(gem)
49
- Version.new(Bundler.definition.specs[gem][0].version)
50
- end
51
-
52
- def includes?(gem)
53
- Bundler.definition.dependencies.any? do |dependency|
54
- dependency.name == gem
55
- end
56
- end
57
-
58
- protected
59
-
60
- attr_reader :fs
61
-
62
- private
63
-
64
- def already_updating?
65
- @already_updating
66
- end
67
-
68
- def assemble_gem_line(gem, version, options)
69
- formatted_options = options.
70
- map { |key, value| "#{key}: #{formatted_value(value)}" }.
71
- join(', ')
72
-
73
- line = %(gem '#{gem}')
74
-
75
- if version
76
- line << %(, '#{version}')
77
- end
78
-
79
- if options.any?
80
- line << %(, #{formatted_options})
81
- end
82
-
83
- line << "\n"
84
- end
85
-
86
- def formatted_value(value)
87
- if value.is_a?(Pathname)
88
- value.to_s.inspect
89
- else
90
- value.inspect
91
- end
92
- end
93
- end
94
- end