tdiary 5.1.1 → 5.1.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 (2127) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +16 -0
  3. data/Gemfile.lock +22 -22
  4. data/lib/tdiary/plugin/00default.rb +2 -0
  5. data/lib/tdiary/plugin/03purge_cache.rb +43 -0
  6. data/lib/tdiary/tasks/release.rake +1 -1
  7. data/lib/tdiary/version.rb +1 -1
  8. data/misc/paas/heroku/Gemfile.lock +42 -42
  9. data/misc/plugin/makerss.rb +1 -1
  10. data/tdiary.conf.beginner +0 -1
  11. data/vendor/bundle/ruby/2.7.0/build_info/nokogiri-1.10.9.info +1 -0
  12. data/vendor/bundle/ruby/2.7.0/cache/capybara-3.32.2.gem +0 -0
  13. data/vendor/bundle/ruby/2.7.0/cache/faraday-1.0.1.gem +0 -0
  14. data/vendor/bundle/ruby/2.7.0/cache/mime-types-data-3.2020.0512.gem +0 -0
  15. data/vendor/bundle/ruby/2.7.0/cache/nokogiri-1.10.9.gem +0 -0
  16. data/vendor/bundle/ruby/2.7.0/cache/octokit-4.18.0.gem +0 -0
  17. data/vendor/bundle/ruby/2.7.0/cache/power_assert-1.2.0.gem +0 -0
  18. data/vendor/bundle/ruby/2.7.0/cache/public_suffix-4.0.5.gem +0 -0
  19. data/vendor/bundle/ruby/2.7.0/cache/rspec-core-3.9.2.gem +0 -0
  20. data/vendor/bundle/ruby/2.7.0/cache/rspec-expectations-3.9.2.gem +0 -0
  21. data/vendor/bundle/ruby/2.7.0/cache/rspec-support-3.9.3.gem +0 -0
  22. data/vendor/bundle/ruby/2.7.0/cache/rubyzip-2.3.0.gem +0 -0
  23. data/vendor/bundle/ruby/2.7.0/cache/sequel-5.32.0.gem +0 -0
  24. data/vendor/bundle/ruby/2.7.0/cache/tins-1.25.0.gem +0 -0
  25. data/vendor/bundle/ruby/2.7.0/extensions/x86_64-linux/2.7.0/{nokogiri-1.10.8 → nokogiri-1.10.9}/gem.build_complete +0 -0
  26. data/vendor/bundle/ruby/2.7.0/extensions/x86_64-linux/2.7.0/nokogiri-1.10.9/gem_make.out +523 -0
  27. data/vendor/bundle/ruby/2.7.0/extensions/x86_64-linux/2.7.0/nokogiri-1.10.9/mkmf.log +605 -0
  28. data/vendor/bundle/ruby/2.7.0/extensions/x86_64-linux/2.7.0/nokogiri-1.10.9/nokogiri/nokogiri.so +0 -0
  29. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/History.md +1813 -0
  30. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/License.txt +0 -0
  31. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/README.md +1099 -0
  32. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara.rb +0 -0
  33. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/config.rb +0 -0
  34. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/cucumber.rb +0 -0
  35. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/driver/base.rb +0 -0
  36. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/driver/node.rb +0 -0
  37. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/dsl.rb +0 -0
  38. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/helpers.rb +0 -0
  39. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/minitest.rb +386 -0
  40. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/minitest/spec.rb +264 -0
  41. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/node/actions.rb +0 -0
  42. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/node/base.rb +0 -0
  43. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/node/document.rb +0 -0
  44. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/node/document_matchers.rb +0 -0
  45. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/node/element.rb +606 -0
  46. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/node/finders.rb +0 -0
  47. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/node/matchers.rb +0 -0
  48. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/node/simple.rb +0 -0
  49. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/queries/ancestor_query.rb +0 -0
  50. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/queries/base_query.rb +0 -0
  51. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/queries/current_path_query.rb +0 -0
  52. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/queries/match_query.rb +0 -0
  53. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/queries/selector_query.rb +0 -0
  54. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/queries/sibling_query.rb +0 -0
  55. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/queries/style_query.rb +0 -0
  56. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/queries/text_query.rb +0 -0
  57. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/queries/title_query.rb +0 -0
  58. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/rack_test/browser.rb +140 -0
  59. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rack_test/css_handlers.rb +0 -0
  60. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rack_test/driver.rb +0 -0
  61. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rack_test/errors.rb +0 -0
  62. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rack_test/form.rb +0 -0
  63. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rack_test/node.rb +0 -0
  64. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rails.rb +0 -0
  65. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/registrations/drivers.rb +0 -0
  66. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/registrations/patches/puma_ssl.rb +0 -0
  67. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/registrations/servers.rb +44 -0
  68. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/result.rb +190 -0
  69. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rspec.rb +0 -0
  70. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rspec/features.rb +0 -0
  71. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/rspec/matcher_proxies.rb +82 -0
  72. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rspec/matchers.rb +0 -0
  73. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rspec/matchers/base.rb +0 -0
  74. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rspec/matchers/become_closed.rb +0 -0
  75. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rspec/matchers/compound.rb +0 -0
  76. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rspec/matchers/count_sugar.rb +0 -0
  77. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rspec/matchers/have_ancestor.rb +0 -0
  78. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rspec/matchers/have_current_path.rb +0 -0
  79. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rspec/matchers/have_selector.rb +0 -0
  80. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rspec/matchers/have_sibling.rb +0 -0
  81. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/rspec/matchers/have_text.rb +33 -0
  82. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rspec/matchers/have_title.rb +0 -0
  83. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rspec/matchers/match_selector.rb +0 -0
  84. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rspec/matchers/match_style.rb +0 -0
  85. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/rspec/matchers/spatial_sugar.rb +0 -0
  86. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector.rb +0 -0
  87. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/builders/css_builder.rb +0 -0
  88. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/builders/xpath_builder.rb +0 -0
  89. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/css.rb +0 -0
  90. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition.rb +0 -0
  91. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/button.rb +0 -0
  92. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/checkbox.rb +0 -0
  93. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/css.rb +0 -0
  94. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/datalist_input.rb +0 -0
  95. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/datalist_option.rb +0 -0
  96. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/element.rb +0 -0
  97. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/field.rb +0 -0
  98. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/fieldset.rb +0 -0
  99. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/file_field.rb +0 -0
  100. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/fillable_field.rb +0 -0
  101. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/frame.rb +0 -0
  102. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/id.rb +0 -0
  103. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/label.rb +0 -0
  104. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/link.rb +0 -0
  105. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/link_or_button.rb +0 -0
  106. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/option.rb +0 -0
  107. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/radio_button.rb +0 -0
  108. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/select.rb +0 -0
  109. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/table.rb +0 -0
  110. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/table_row.rb +0 -0
  111. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/definition/xpath.rb +0 -0
  112. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/filter.rb +0 -0
  113. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/filter_set.rb +0 -0
  114. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/filters/base.rb +0 -0
  115. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/filters/expression_filter.rb +0 -0
  116. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/filters/locator_filter.rb +0 -0
  117. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/filters/node_filter.rb +0 -0
  118. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/regexp_disassembler.rb +0 -0
  119. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/selector.rb +0 -0
  120. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selector/xpath_extensions.rb +0 -0
  121. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/selenium/atoms/getAttribute.min.js +1 -0
  122. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/atoms/isDisplayed.min.js +0 -0
  123. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/selenium/atoms/src/getAttribute.js +161 -0
  124. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/atoms/src/isDisplayed.js +0 -0
  125. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/selenium/driver.rb +496 -0
  126. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/driver_specializations/chrome_driver.rb +0 -0
  127. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/driver_specializations/edge_driver.rb +0 -0
  128. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/selenium/driver_specializations/firefox_driver.rb +89 -0
  129. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb +0 -0
  130. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/driver_specializations/safari_driver.rb +0 -0
  131. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/extensions/file_input_click_emulation.rb +0 -0
  132. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/extensions/find.rb +0 -0
  133. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/extensions/html5_drag.rb +0 -0
  134. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/extensions/modifier_keys_stack.rb +0 -0
  135. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/extensions/scroll.rb +0 -0
  136. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/logger_suppressor.rb +0 -0
  137. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/selenium/node.rb +610 -0
  138. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/selenium/nodes/chrome_node.rb +119 -0
  139. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/nodes/edge_node.rb +0 -0
  140. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/selenium/nodes/firefox_node.rb +131 -0
  141. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/nodes/ie_node.rb +0 -0
  142. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/nodes/safari_node.rb +0 -0
  143. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/selenium/patches/action_pauser.rb +26 -0
  144. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/patches/atoms.rb +0 -0
  145. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/patches/is_displayed.rb +0 -0
  146. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/patches/logs.rb +0 -0
  147. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/patches/pause_duration_fix.rb +0 -0
  148. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/selenium/patches/persistent_client.rb +0 -0
  149. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/server.rb +0 -0
  150. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/server/animation_disabler.rb +0 -0
  151. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/server/checker.rb +0 -0
  152. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/server/middleware.rb +0 -0
  153. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/session.rb +0 -0
  154. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/session/config.rb +0 -0
  155. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/session/matchers.rb +0 -0
  156. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/fixtures/another_test_file.txt +0 -0
  157. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/fixtures/capybara.jpg +0 -0
  158. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/fixtures/no_extension +0 -0
  159. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/fixtures/test_file.txt +0 -0
  160. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/public/jquery-ui.js +0 -0
  161. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/public/jquery.js +0 -0
  162. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/public/offset.js +0 -0
  163. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/spec/public/test.js +268 -0
  164. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/accept_alert_spec.rb +0 -0
  165. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/accept_confirm_spec.rb +0 -0
  166. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/accept_prompt_spec.rb +0 -0
  167. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/all_spec.rb +0 -0
  168. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/ancestor_spec.rb +0 -0
  169. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +0 -0
  170. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/assert_current_path_spec.rb +0 -0
  171. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/assert_selector_spec.rb +0 -0
  172. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/assert_style_spec.rb +0 -0
  173. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/assert_text_spec.rb +0 -0
  174. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/assert_title_spec.rb +0 -0
  175. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/attach_file_spec.rb +0 -0
  176. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/body_spec.rb +0 -0
  177. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/check_spec.rb +0 -0
  178. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/choose_spec.rb +0 -0
  179. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/click_button_spec.rb +0 -0
  180. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/click_link_or_button_spec.rb +0 -0
  181. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/click_link_spec.rb +0 -0
  182. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/current_scope_spec.rb +0 -0
  183. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/current_url_spec.rb +0 -0
  184. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/dismiss_confirm_spec.rb +0 -0
  185. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/dismiss_prompt_spec.rb +0 -0
  186. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/element/assert_match_selector_spec.rb +0 -0
  187. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/element/match_css_spec.rb +0 -0
  188. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/element/match_xpath_spec.rb +0 -0
  189. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/element/matches_selector_spec.rb +0 -0
  190. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/evaluate_async_script_spec.rb +0 -0
  191. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/evaluate_script_spec.rb +0 -0
  192. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/execute_script_spec.rb +0 -0
  193. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/spec/session/fill_in_spec.rb +286 -0
  194. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/find_button_spec.rb +0 -0
  195. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/find_by_id_spec.rb +0 -0
  196. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/find_field_spec.rb +0 -0
  197. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/find_link_spec.rb +0 -0
  198. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/spec/session/find_spec.rb +531 -0
  199. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/first_spec.rb +0 -0
  200. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/frame/frame_title_spec.rb +0 -0
  201. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/frame/frame_url_spec.rb +0 -0
  202. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +0 -0
  203. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/frame/within_frame_spec.rb +0 -0
  204. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/go_back_spec.rb +0 -0
  205. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/go_forward_spec.rb +0 -0
  206. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/has_all_selectors_spec.rb +0 -0
  207. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/has_ancestor_spec.rb +0 -0
  208. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/has_any_selectors_spec.rb +0 -0
  209. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/has_button_spec.rb +0 -0
  210. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/spec/session/has_css_spec.rb +374 -0
  211. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/has_current_path_spec.rb +0 -0
  212. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/has_field_spec.rb +0 -0
  213. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/has_link_spec.rb +0 -0
  214. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/has_none_selectors_spec.rb +0 -0
  215. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/has_select_spec.rb +0 -0
  216. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/has_selector_spec.rb +0 -0
  217. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/has_sibling_spec.rb +0 -0
  218. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/has_table_spec.rb +0 -0
  219. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/has_text_spec.rb +0 -0
  220. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/has_title_spec.rb +0 -0
  221. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/has_xpath_spec.rb +0 -0
  222. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/headers_spec.rb +0 -0
  223. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/html_spec.rb +0 -0
  224. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/matches_style_spec.rb +0 -0
  225. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/spec/session/node_spec.rb +1292 -0
  226. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/node_wrapper_spec.rb +0 -0
  227. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/refresh_spec.rb +0 -0
  228. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/reset_session_spec.rb +0 -0
  229. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/response_code_spec.rb +0 -0
  230. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/save_and_open_page_spec.rb +0 -0
  231. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +0 -0
  232. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/save_page_spec.rb +0 -0
  233. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/save_screenshot_spec.rb +0 -0
  234. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/screenshot_spec.rb +0 -0
  235. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/scroll_spec.rb +0 -0
  236. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/select_spec.rb +0 -0
  237. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/selectors_spec.rb +0 -0
  238. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/sibling_spec.rb +0 -0
  239. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/source_spec.rb +0 -0
  240. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/text_spec.rb +0 -0
  241. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/title_spec.rb +0 -0
  242. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/uncheck_spec.rb +0 -0
  243. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/unselect_spec.rb +0 -0
  244. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/visit_spec.rb +0 -0
  245. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/window/become_closed_spec.rb +0 -0
  246. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/window/current_window_spec.rb +0 -0
  247. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/window/open_new_window_spec.rb +0 -0
  248. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/window/switch_to_window_spec.rb +0 -0
  249. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/window/window_opened_by_spec.rb +0 -0
  250. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/spec/session/window/window_spec.rb +203 -0
  251. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/window/windows_spec.rb +0 -0
  252. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/window/within_window_spec.rb +0 -0
  253. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/session/within_spec.rb +0 -0
  254. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/spec/spec_helper.rb +134 -0
  255. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/test_app.rb +0 -0
  256. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/animated.erb +0 -0
  257. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/buttons.erb +0 -0
  258. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/fieldsets.erb +0 -0
  259. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/spec/views/form.erb +685 -0
  260. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/frame_child.erb +0 -0
  261. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/frame_one.erb +0 -0
  262. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/frame_parent.erb +0 -0
  263. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/frame_two.erb +0 -0
  264. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/header_links.erb +0 -0
  265. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/host_links.erb +0 -0
  266. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/initial_alert.erb +0 -0
  267. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/obscured.erb +0 -0
  268. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/offset.erb +0 -0
  269. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/path.erb +0 -0
  270. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/popup_one.erb +0 -0
  271. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/popup_two.erb +0 -0
  272. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/postback.erb +0 -0
  273. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/react.erb +0 -0
  274. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/scroll.erb +0 -0
  275. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/spatial.erb +0 -0
  276. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/tables.erb +0 -0
  277. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_animation.erb +0 -0
  278. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_base_tag.erb +0 -0
  279. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_count.erb +0 -0
  280. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_dragula.erb +0 -0
  281. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_fixed_header_footer.erb +0 -0
  282. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_hover.erb +0 -0
  283. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_hover1.erb +0 -0
  284. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/spec/views/with_html.erb +208 -0
  285. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_html5_svg.erb +0 -0
  286. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_html_entities.erb +0 -0
  287. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_js.erb +0 -0
  288. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_jstree.erb +0 -0
  289. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_namespace.erb +0 -0
  290. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_scope.erb +0 -0
  291. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_scope_other.erb +0 -0
  292. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_simple_html.erb +0 -0
  293. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_slow_unload.erb +0 -0
  294. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_sortable_js.erb +0 -0
  295. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_title.erb +0 -0
  296. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_unload_alert.erb +0 -0
  297. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/with_windows.erb +0 -0
  298. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/spec/views/within_frames.erb +0 -0
  299. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/lib/capybara/version.rb +5 -0
  300. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/lib/capybara/window.rb +0 -0
  301. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/basic_node_spec.rb +0 -0
  302. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/capybara_spec.rb +0 -0
  303. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/css_builder_spec.rb +0 -0
  304. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/css_splitter_spec.rb +0 -0
  305. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/dsl_spec.rb +0 -0
  306. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/filter_set_spec.rb +0 -0
  307. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/fixtures/capybara.csv +0 -0
  308. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/fixtures/certificate.pem +0 -0
  309. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/fixtures/key.pem +0 -0
  310. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/fixtures/selenium_driver_rspec_failure.rb +0 -0
  311. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/fixtures/selenium_driver_rspec_success.rb +0 -0
  312. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/minitest_spec.rb +0 -0
  313. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/minitest_spec_spec.rb +0 -0
  314. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/per_session_config_spec.rb +0 -0
  315. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/spec/rack_test_spec.rb +268 -0
  316. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/spec/regexp_dissassembler_spec.rb +250 -0
  317. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/spec/result_spec.rb +196 -0
  318. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/rspec/features_spec.rb +0 -0
  319. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/rspec/scenarios_spec.rb +0 -0
  320. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/spec/rspec/shared_spec_matchers.rb +947 -0
  321. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/rspec/views_spec.rb +0 -0
  322. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/rspec_matchers_spec.rb +0 -0
  323. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/rspec_spec.rb +0 -0
  324. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/sauce_spec_chrome.rb +0 -0
  325. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/selector_spec.rb +0 -0
  326. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/spec/selenium_spec_chrome.rb +188 -0
  327. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/spec/selenium_spec_chrome_remote.rb +96 -0
  328. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/selenium_spec_edge.rb +0 -0
  329. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/selenium_spec_firefox.rb +0 -0
  330. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/selenium_spec_firefox_remote.rb +0 -0
  331. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/selenium_spec_ie.rb +0 -0
  332. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/selenium_spec_safari.rb +0 -0
  333. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/server_spec.rb +0 -0
  334. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/session_spec.rb +0 -0
  335. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/spec/shared_selenium_node.rb +83 -0
  336. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.32.2/spec/shared_selenium_session.rb +476 -0
  337. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/spec_helper.rb +0 -0
  338. data/vendor/bundle/ruby/2.7.0/gems/{capybara-3.31.0 → capybara-3.32.2}/spec/xpath_builder_spec.rb +0 -0
  339. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/CHANGELOG.md +0 -0
  340. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/LICENSE.md +0 -0
  341. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/README.md +55 -0
  342. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/Rakefile +0 -0
  343. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/examples/client_spec.rb +0 -0
  344. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/examples/client_test.rb +0 -0
  345. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/lib/faraday.rb +166 -0
  346. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/adapter.rb +0 -0
  347. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/lib/faraday/adapter/em_http.rb +286 -0
  348. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/adapter/em_http_ssl_patch.rb +0 -0
  349. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/adapter/em_synchrony.rb +0 -0
  350. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/adapter/em_synchrony/parallel_manager.rb +0 -0
  351. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/adapter/excon.rb +0 -0
  352. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/lib/faraday/adapter/httpclient.rb +152 -0
  353. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/lib/faraday/adapter/net_http.rb +219 -0
  354. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/adapter/net_http_persistent.rb +0 -0
  355. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/adapter/patron.rb +0 -0
  356. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/adapter/rack.rb +0 -0
  357. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/adapter/test.rb +0 -0
  358. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/lib/faraday/adapter/typhoeus.rb +15 -0
  359. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/lib/faraday/adapter_registry.rb +30 -0
  360. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/autoload.rb +0 -0
  361. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/connection.rb +0 -0
  362. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/dependency_loader.rb +0 -0
  363. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/encoders/flat_params_encoder.rb +0 -0
  364. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/encoders/nested_params_encoder.rb +0 -0
  365. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/error.rb +0 -0
  366. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/file_part.rb +0 -0
  367. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/logging/formatter.rb +0 -0
  368. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/middleware.rb +0 -0
  369. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/middleware_registry.rb +0 -0
  370. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/options.rb +0 -0
  371. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/options/connection_options.rb +0 -0
  372. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/options/env.rb +0 -0
  373. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/options/proxy_options.rb +0 -0
  374. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/options/request_options.rb +0 -0
  375. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/options/ssl_options.rb +0 -0
  376. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/param_part.rb +0 -0
  377. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/parameters.rb +0 -0
  378. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/rack_builder.rb +0 -0
  379. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/request.rb +0 -0
  380. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/lib/faraday/request/authorization.rb +55 -0
  381. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/request/basic_authentication.rb +0 -0
  382. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/request/instrumentation.rb +0 -0
  383. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/lib/faraday/request/multipart.rb +99 -0
  384. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/request/retry.rb +0 -0
  385. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/request/token_authentication.rb +0 -0
  386. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/lib/faraday/request/url_encoded.rb +56 -0
  387. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/lib/faraday/response.rb +107 -0
  388. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/response/logger.rb +0 -0
  389. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/response/raise_error.rb +0 -0
  390. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/lib/faraday/utils.rb +117 -0
  391. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/utils/headers.rb +0 -0
  392. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/lib/faraday/utils/params_hash.rb +0 -0
  393. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/external_adapters/faraday_specs_setup.rb +0 -0
  394. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/spec/faraday/adapter/em_http_spec.rb +47 -0
  395. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/spec/faraday/adapter/em_synchrony_spec.rb +16 -0
  396. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/adapter/excon_spec.rb +0 -0
  397. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/adapter/httpclient_spec.rb +0 -0
  398. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/adapter/net_http_persistent_spec.rb +0 -0
  399. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/adapter/net_http_spec.rb +0 -0
  400. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/spec/faraday/adapter/patron_spec.rb +18 -0
  401. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/adapter/rack_spec.rb +0 -0
  402. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/adapter/typhoeus_spec.rb +0 -0
  403. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/adapter_registry_spec.rb +0 -0
  404. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/adapter_spec.rb +0 -0
  405. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/composite_read_io_spec.rb +0 -0
  406. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/connection_spec.rb +0 -0
  407. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/error_spec.rb +0 -0
  408. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/middleware_spec.rb +0 -0
  409. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/options/env_spec.rb +0 -0
  410. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/options/options_spec.rb +0 -0
  411. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/options/proxy_options_spec.rb +0 -0
  412. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/options/request_options_spec.rb +0 -0
  413. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/params_encoders/flat_spec.rb +0 -0
  414. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/params_encoders/nested_spec.rb +0 -0
  415. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/spec/faraday/rack_builder_spec.rb +196 -0
  416. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/request/authorization_spec.rb +0 -0
  417. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/request/instrumentation_spec.rb +0 -0
  418. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/request/multipart_spec.rb +0 -0
  419. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/request/retry_spec.rb +0 -0
  420. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/spec/faraday/request/url_encoded_spec.rb +83 -0
  421. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/request_spec.rb +0 -0
  422. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/response/logger_spec.rb +0 -0
  423. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.1/spec/faraday/response/middleware_spec.rb +68 -0
  424. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/response/raise_error_spec.rb +0 -0
  425. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/response_spec.rb +0 -0
  426. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/utils/headers_spec.rb +0 -0
  427. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday/utils_spec.rb +0 -0
  428. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/faraday_spec.rb +0 -0
  429. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/spec_helper.rb +0 -0
  430. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/support/disabling_stub.rb +0 -0
  431. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/support/fake_safe_buffer.rb +0 -0
  432. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/support/helper_methods.rb +0 -0
  433. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/support/shared_examples/adapter.rb +0 -0
  434. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/support/shared_examples/params_encoder.rb +0 -0
  435. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/support/shared_examples/request_method.rb +0 -0
  436. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/support/streaming_response_checker.rb +0 -0
  437. data/vendor/bundle/ruby/2.7.0/gems/{faraday-1.0.0 → faraday-1.0.1}/spec/support/webmock_rack_app.rb +0 -0
  438. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/Code-of-Conduct.md +75 -0
  439. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/Contributing.md +163 -0
  440. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/History.md +436 -0
  441. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/Licence.md +25 -0
  442. data/vendor/bundle/ruby/2.7.0/gems/{mime-types-data-3.2019.1009 → mime-types-data-3.2020.0512}/Manifest.txt +0 -0
  443. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/README.md +63 -0
  444. data/vendor/bundle/ruby/2.7.0/gems/{mime-types-data-3.2019.1009 → mime-types-data-3.2020.0512}/Rakefile +0 -0
  445. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/data/mime-types.json +1 -0
  446. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/data/mime.content_type.column +2277 -0
  447. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/data/mime.docs.column +2277 -0
  448. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/data/mime.encoding.column +2277 -0
  449. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/data/mime.flags.column +2277 -0
  450. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/data/mime.friendly.column +2277 -0
  451. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/data/mime.pext.column +2277 -0
  452. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/data/mime.use_instead.column +2277 -0
  453. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/data/mime.xrefs.column +2277 -0
  454. data/vendor/bundle/ruby/2.7.0/gems/{mime-types-data-3.2019.1009 → mime-types-data-3.2020.0512}/lib/mime-types-data.rb +0 -0
  455. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/lib/mime/types/data.rb +21 -0
  456. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/types/application.yaml +16703 -0
  457. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/types/audio.yaml +1679 -0
  458. data/vendor/bundle/ruby/2.7.0/gems/{mime-types-data-3.2019.1009 → mime-types-data-3.2020.0512}/types/chemical.yaml +0 -0
  459. data/vendor/bundle/ruby/2.7.0/gems/{mime-types-data-3.2019.1009 → mime-types-data-3.2020.0512}/types/conference.yaml +0 -0
  460. data/vendor/bundle/ruby/2.7.0/gems/{mime-types-data-3.2019.1009 → mime-types-data-3.2020.0512}/types/drawing.yaml +0 -0
  461. data/vendor/bundle/ruby/2.7.0/gems/{mime-types-data-3.2019.1009 → mime-types-data-3.2020.0512}/types/font.yaml +0 -0
  462. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/types/image.yaml +1217 -0
  463. data/vendor/bundle/ruby/2.7.0/gems/{mime-types-data-3.2019.1009 → mime-types-data-3.2020.0512}/types/message.yaml +0 -0
  464. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/types/model.yaml +322 -0
  465. data/vendor/bundle/ruby/2.7.0/gems/{mime-types-data-3.2019.1009 → mime-types-data-3.2020.0512}/types/multipart.yaml +0 -0
  466. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2020.0512/types/text.yaml +1075 -0
  467. data/vendor/bundle/ruby/2.7.0/gems/{mime-types-data-3.2019.1009 → mime-types-data-3.2020.0512}/types/video.yaml +0 -0
  468. data/vendor/bundle/ruby/2.7.0/gems/{mime-types-data-3.2019.1009 → mime-types-data-3.2020.0512}/types/world.yaml +0 -0
  469. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/LICENSE-DEPENDENCIES.md +0 -0
  470. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/LICENSE.md +0 -0
  471. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/README.md +0 -0
  472. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/bin/nokogiri +0 -0
  473. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/dependencies.yml +0 -0
  474. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/Makefile +628 -0
  475. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/depend +0 -0
  476. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/extconf.rb +0 -0
  477. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/html_document.c +0 -0
  478. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/html_document.h +0 -0
  479. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/html_document.o +0 -0
  480. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/html_element_description.c +0 -0
  481. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/html_element_description.h +0 -0
  482. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/html_element_description.o +0 -0
  483. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/html_entity_lookup.c +0 -0
  484. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/html_entity_lookup.h +0 -0
  485. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/html_entity_lookup.o +0 -0
  486. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/html_sax_parser_context.c +0 -0
  487. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/html_sax_parser_context.h +0 -0
  488. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/html_sax_parser_context.o +0 -0
  489. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/html_sax_push_parser.c +0 -0
  490. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/html_sax_push_parser.h +0 -0
  491. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/html_sax_push_parser.o +0 -0
  492. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/nokogiri.c +0 -0
  493. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/nokogiri.h +0 -0
  494. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/nokogiri.o +0 -0
  495. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/nokogiri.so +0 -0
  496. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_attr.c +0 -0
  497. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_attr.h +0 -0
  498. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_attr.o +0 -0
  499. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_attribute_decl.c +0 -0
  500. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_attribute_decl.h +0 -0
  501. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_attribute_decl.o +0 -0
  502. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_cdata.c +0 -0
  503. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_cdata.h +0 -0
  504. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_cdata.o +0 -0
  505. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_comment.c +0 -0
  506. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_comment.h +0 -0
  507. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_comment.o +0 -0
  508. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_document.c +0 -0
  509. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_document.h +0 -0
  510. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_document.o +0 -0
  511. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_document_fragment.c +0 -0
  512. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_document_fragment.h +0 -0
  513. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_document_fragment.o +0 -0
  514. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_dtd.c +0 -0
  515. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_dtd.h +0 -0
  516. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_dtd.o +0 -0
  517. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_element_content.c +0 -0
  518. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_element_content.h +0 -0
  519. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_content.o +0 -0
  520. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_element_decl.c +0 -0
  521. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_element_decl.h +0 -0
  522. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_decl.o +0 -0
  523. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_encoding_handler.c +0 -0
  524. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_encoding_handler.h +0 -0
  525. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_encoding_handler.o +0 -0
  526. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_entity_decl.c +0 -0
  527. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_entity_decl.h +0 -0
  528. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_decl.o +0 -0
  529. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_entity_reference.c +0 -0
  530. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_entity_reference.h +0 -0
  531. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_reference.o +0 -0
  532. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_io.c +0 -0
  533. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_io.h +0 -0
  534. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_io.o +0 -0
  535. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_libxml2_hacks.c +0 -0
  536. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_libxml2_hacks.h +0 -0
  537. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_libxml2_hacks.o +0 -0
  538. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_namespace.c +0 -0
  539. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_namespace.h +0 -0
  540. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_namespace.o +0 -0
  541. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_node.c +0 -0
  542. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_node.h +0 -0
  543. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node.o +0 -0
  544. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_node_set.c +0 -0
  545. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_node_set.h +0 -0
  546. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node_set.o +0 -0
  547. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_processing_instruction.c +0 -0
  548. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_processing_instruction.h +0 -0
  549. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_processing_instruction.o +0 -0
  550. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_reader.c +0 -0
  551. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_reader.h +0 -0
  552. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_reader.o +0 -0
  553. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_relax_ng.c +0 -0
  554. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_relax_ng.h +0 -0
  555. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_relax_ng.o +0 -0
  556. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_sax_parser.c +0 -0
  557. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_sax_parser.h +0 -0
  558. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser.o +0 -0
  559. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_sax_parser_context.c +0 -0
  560. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_sax_parser_context.h +0 -0
  561. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser_context.o +0 -0
  562. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_sax_push_parser.c +0 -0
  563. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_sax_push_parser.h +0 -0
  564. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_push_parser.o +0 -0
  565. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_schema.c +234 -0
  566. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_schema.h +0 -0
  567. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_schema.o +0 -0
  568. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_syntax_error.c +0 -0
  569. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_syntax_error.h +0 -0
  570. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_syntax_error.o +0 -0
  571. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_text.c +0 -0
  572. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_text.h +0 -0
  573. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_text.o +0 -0
  574. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_xpath_context.c +0 -0
  575. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xml_xpath_context.h +0 -0
  576. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_xpath_context.o +0 -0
  577. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xslt_stylesheet.c +0 -0
  578. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/ext/nokogiri/xslt_stylesheet.h +0 -0
  579. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/xslt_stylesheet.o +0 -0
  580. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri.rb +0 -0
  581. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/css.rb +0 -0
  582. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/css/node.rb +0 -0
  583. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/css/parser.rb +0 -0
  584. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/css/parser.y +0 -0
  585. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/css/parser_extras.rb +0 -0
  586. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/css/syntax_error.rb +0 -0
  587. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/css/tokenizer.rb +0 -0
  588. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/css/tokenizer.rex +0 -0
  589. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/css/xpath_visitor.rb +0 -0
  590. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/decorators/slop.rb +0 -0
  591. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/html.rb +0 -0
  592. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/html/builder.rb +0 -0
  593. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/html/document.rb +0 -0
  594. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/html/document_fragment.rb +0 -0
  595. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/html/element_description.rb +0 -0
  596. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/html/element_description_defaults.rb +0 -0
  597. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/html/entity_lookup.rb +0 -0
  598. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/html/sax/parser.rb +0 -0
  599. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/html/sax/parser_context.rb +0 -0
  600. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/html/sax/push_parser.rb +0 -0
  601. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/lib/nokogiri/nokogiri.so +0 -0
  602. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/syntax_error.rb +0 -0
  603. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.9/lib/nokogiri/version.rb +109 -0
  604. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml.rb +0 -0
  605. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/attr.rb +0 -0
  606. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/attribute_decl.rb +0 -0
  607. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/builder.rb +0 -0
  608. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/cdata.rb +0 -0
  609. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/character_data.rb +0 -0
  610. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/document.rb +0 -0
  611. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/document_fragment.rb +0 -0
  612. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/dtd.rb +0 -0
  613. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/element_content.rb +0 -0
  614. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/element_decl.rb +0 -0
  615. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/entity_decl.rb +0 -0
  616. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/entity_reference.rb +0 -0
  617. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/namespace.rb +0 -0
  618. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/node.rb +0 -0
  619. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/node/save_options.rb +0 -0
  620. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/node_set.rb +0 -0
  621. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/notation.rb +0 -0
  622. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/parse_options.rb +0 -0
  623. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/pp.rb +0 -0
  624. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/pp/character_data.rb +0 -0
  625. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/pp/node.rb +0 -0
  626. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/processing_instruction.rb +0 -0
  627. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/reader.rb +0 -0
  628. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/relax_ng.rb +0 -0
  629. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/sax.rb +0 -0
  630. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/sax/document.rb +0 -0
  631. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/sax/parser.rb +0 -0
  632. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/sax/parser_context.rb +0 -0
  633. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/sax/push_parser.rb +0 -0
  634. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/schema.rb +0 -0
  635. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/searchable.rb +0 -0
  636. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/syntax_error.rb +0 -0
  637. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/text.rb +0 -0
  638. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/xpath.rb +0 -0
  639. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/xpath/syntax_error.rb +0 -0
  640. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xml/xpath_context.rb +0 -0
  641. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xslt.rb +0 -0
  642. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/nokogiri/xslt/stylesheet.rb +0 -0
  643. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/lib/xsd/xmlparser/nokogiri.rb +0 -0
  644. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes.patch +0 -0
  645. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/patches/libxml2/0002-Remove-script-macro-support.patch +0 -0
  646. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/patches/libxml2/0003-Update-entities-to-remove-handling-of-ssi.patch +0 -0
  647. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/patches/libxml2/0004-libxml2.la-is-in-top_builddir.patch +0 -0
  648. data/vendor/bundle/ruby/2.7.0/gems/{nokogiri-1.10.8 → nokogiri-1.10.9}/patches/libxml2/0005-Fix-infinite-loop-in-xmlStringLenDecodeEntities.patch +0 -0
  649. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/CONTRIBUTING.md +0 -0
  650. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/LICENSE.md +0 -0
  651. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/README.md +0 -0
  652. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/Rakefile +0 -0
  653. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/ext/sawyer/relation.rb +0 -0
  654. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit.rb +0 -0
  655. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/arguments.rb +0 -0
  656. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/authentication.rb +0 -0
  657. data/vendor/bundle/ruby/2.7.0/gems/octokit-4.18.0/lib/octokit/client.rb +248 -0
  658. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/apps.rb +0 -0
  659. data/vendor/bundle/ruby/2.7.0/gems/octokit-4.18.0/lib/octokit/client/authorizations.rb +182 -0
  660. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/checks.rb +0 -0
  661. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/commit_branches.rb +0 -0
  662. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/commit_comments.rb +0 -0
  663. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/commit_pulls.rb +0 -0
  664. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/commits.rb +0 -0
  665. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/community_profile.rb +0 -0
  666. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/contents.rb +0 -0
  667. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/deployments.rb +0 -0
  668. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/downloads.rb +0 -0
  669. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/emojis.rb +0 -0
  670. data/vendor/bundle/ruby/2.7.0/gems/octokit-4.18.0/lib/octokit/client/events.rb +152 -0
  671. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/feeds.rb +0 -0
  672. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/gists.rb +0 -0
  673. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/gitignore.rb +0 -0
  674. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/hooks.rb +0 -0
  675. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/issues.rb +0 -0
  676. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/labels.rb +0 -0
  677. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/legacy_search.rb +0 -0
  678. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/licenses.rb +0 -0
  679. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/markdown.rb +0 -0
  680. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/marketplace.rb +0 -0
  681. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/meta.rb +0 -0
  682. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/milestones.rb +0 -0
  683. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/notifications.rb +0 -0
  684. data/vendor/bundle/ruby/2.7.0/gems/octokit-4.18.0/lib/octokit/client/oauth_applications.rb +122 -0
  685. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/objects.rb +0 -0
  686. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/organizations.rb +0 -0
  687. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/pages.rb +0 -0
  688. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/projects.rb +0 -0
  689. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/pub_sub_hubbub.rb +0 -0
  690. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/pull_requests.rb +0 -0
  691. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/rate_limit.rb +0 -0
  692. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/reactions.rb +0 -0
  693. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/refs.rb +0 -0
  694. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/releases.rb +0 -0
  695. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/repositories.rb +0 -0
  696. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/repository_invitations.rb +0 -0
  697. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/reviews.rb +0 -0
  698. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/say.rb +0 -0
  699. data/vendor/bundle/ruby/2.7.0/gems/octokit-4.18.0/lib/octokit/client/search.rb +91 -0
  700. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/service_status.rb +0 -0
  701. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/source_import.rb +0 -0
  702. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/stats.rb +0 -0
  703. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/statuses.rb +0 -0
  704. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/traffic.rb +0 -0
  705. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/client/users.rb +0 -0
  706. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/configurable.rb +0 -0
  707. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/connection.rb +0 -0
  708. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/default.rb +0 -0
  709. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/enterprise_admin_client.rb +0 -0
  710. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/enterprise_admin_client/admin_stats.rb +0 -0
  711. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/enterprise_admin_client/license.rb +0 -0
  712. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/enterprise_admin_client/orgs.rb +0 -0
  713. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/enterprise_admin_client/search_indexing.rb +0 -0
  714. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/enterprise_admin_client/users.rb +0 -0
  715. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/enterprise_management_console_client.rb +0 -0
  716. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/enterprise_management_console_client/management_console.rb +0 -0
  717. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/error.rb +0 -0
  718. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/gist.rb +0 -0
  719. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/middleware/follow_redirects.rb +0 -0
  720. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/organization.rb +0 -0
  721. data/vendor/bundle/ruby/2.7.0/gems/octokit-4.18.0/lib/octokit/preview.rb +49 -0
  722. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/rate_limit.rb +0 -0
  723. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/repo_arguments.rb +0 -0
  724. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/repository.rb +0 -0
  725. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/response/feed_parser.rb +0 -0
  726. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/response/raise_error.rb +0 -0
  727. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/user.rb +0 -0
  728. data/vendor/bundle/ruby/2.7.0/gems/octokit-4.18.0/lib/octokit/version.rb +17 -0
  729. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/lib/octokit/warnable.rb +0 -0
  730. data/vendor/bundle/ruby/2.7.0/gems/{octokit-4.16.0 → octokit-4.18.0}/octokit.gemspec +0 -0
  731. data/vendor/bundle/ruby/2.7.0/gems/{power_assert-1.1.6 → power_assert-1.2.0}/BSDL +0 -0
  732. data/vendor/bundle/ruby/2.7.0/gems/{power_assert-1.1.6 → power_assert-1.2.0}/COPYING +0 -0
  733. data/vendor/bundle/ruby/2.7.0/gems/{power_assert-1.1.6 → power_assert-1.2.0}/Gemfile +0 -0
  734. data/vendor/bundle/ruby/2.7.0/gems/{power_assert-1.1.6 → power_assert-1.2.0}/LEGAL +0 -0
  735. data/vendor/bundle/ruby/2.7.0/gems/power_assert-1.2.0/README.rdoc +81 -0
  736. data/vendor/bundle/ruby/2.7.0/gems/{power_assert-1.1.6 → power_assert-1.2.0}/Rakefile +0 -0
  737. data/vendor/bundle/ruby/2.7.0/gems/{power_assert-1.1.6 → power_assert-1.2.0}/bin/console +0 -0
  738. data/vendor/bundle/ruby/2.7.0/gems/{power_assert-1.1.6 → power_assert-1.2.0}/bin/setup +0 -0
  739. data/vendor/bundle/ruby/2.7.0/gems/{power_assert-1.1.6 → power_assert-1.2.0}/lib/power_assert.rb +0 -0
  740. data/vendor/bundle/ruby/2.7.0/gems/{power_assert-1.1.6 → power_assert-1.2.0}/lib/power_assert/colorize.rb +0 -0
  741. data/vendor/bundle/ruby/2.7.0/gems/{power_assert-1.1.6 → power_assert-1.2.0}/lib/power_assert/configuration.rb +0 -0
  742. data/vendor/bundle/ruby/2.7.0/gems/{power_assert-1.1.6 → power_assert-1.2.0}/lib/power_assert/context.rb +0 -0
  743. data/vendor/bundle/ruby/2.7.0/gems/{power_assert-1.1.6 → power_assert-1.2.0}/lib/power_assert/enable_tracepoint_events.rb +0 -0
  744. data/vendor/bundle/ruby/2.7.0/gems/power_assert-1.2.0/lib/power_assert/inspector.rb +61 -0
  745. data/vendor/bundle/ruby/2.7.0/gems/{power_assert-1.1.6 → power_assert-1.2.0}/lib/power_assert/parser.rb +0 -0
  746. data/vendor/bundle/ruby/2.7.0/gems/power_assert-1.2.0/lib/power_assert/version.rb +3 -0
  747. data/vendor/bundle/ruby/2.7.0/gems/power_assert-1.2.0/power_assert.gemspec +31 -0
  748. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/2.0-Upgrade.md +0 -0
  749. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.5/CHANGELOG.md +399 -0
  750. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.5/Gemfile +15 -0
  751. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/LICENSE.txt +0 -0
  752. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.5/README.md +207 -0
  753. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/Rakefile +0 -0
  754. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.5/SECURITY.md +104 -0
  755. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/bin/console +0 -0
  756. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.5/codecov.yml +14 -0
  757. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.5/data/list.txt +13146 -0
  758. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/lib/public_suffix.rb +0 -0
  759. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/lib/public_suffix/domain.rb +0 -0
  760. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/lib/public_suffix/errors.rb +0 -0
  761. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.5/lib/public_suffix/list.rb +247 -0
  762. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.5/lib/public_suffix/rule.rb +350 -0
  763. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.5/lib/public_suffix/version.rb +13 -0
  764. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.5/public_suffix.gemspec +29 -0
  765. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.5/test/acceptance_test.rb +129 -0
  766. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/benchmarks/bm_find.rb +0 -0
  767. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/benchmarks/bm_find_all.rb +0 -0
  768. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/benchmarks/bm_names.rb +0 -0
  769. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/benchmarks/bm_select.rb +0 -0
  770. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/benchmarks/bm_select_incremental.rb +0 -0
  771. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/benchmarks/bm_valid.rb +0 -0
  772. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/profilers/domain_profiler.rb +0 -0
  773. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/profilers/find_profiler.rb +0 -0
  774. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/profilers/find_profiler_jp.rb +0 -0
  775. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/profilers/initialization_profiler.rb +0 -0
  776. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/profilers/list_profsize.rb +0 -0
  777. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/profilers/object_binsize.rb +0 -0
  778. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/psl_test.rb +0 -0
  779. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/test_helper.rb +0 -0
  780. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/tests.txt +0 -0
  781. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/unit/domain_test.rb +0 -0
  782. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/unit/errors_test.rb +0 -0
  783. data/vendor/bundle/ruby/2.7.0/gems/{public_suffix-4.0.3 → public_suffix-4.0.5}/test/unit/list_test.rb +0 -0
  784. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.5/test/unit/public_suffix_test.rb +188 -0
  785. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.5/test/unit/rule_test.rb +222 -0
  786. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/Changelog.md +2291 -0
  787. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/LICENSE.md +0 -0
  788. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/README.md +0 -0
  789. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/exe/rspec +0 -0
  790. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/autorun.rb +0 -0
  791. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core.rb +0 -0
  792. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/backtrace_formatter.rb +0 -0
  793. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/bisect/coordinator.rb +0 -0
  794. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/bisect/example_minimizer.rb +0 -0
  795. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/bisect/fork_runner.rb +0 -0
  796. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/bisect/server.rb +0 -0
  797. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/bisect/shell_command.rb +0 -0
  798. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/bisect/shell_runner.rb +0 -0
  799. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/bisect/utilities.rb +0 -0
  800. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/configuration.rb +2363 -0
  801. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/configuration_options.rb +0 -0
  802. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/did_you_mean.rb +0 -0
  803. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/drb.rb +0 -0
  804. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/dsl.rb +0 -0
  805. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/example.rb +0 -0
  806. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/example_group.rb +900 -0
  807. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/example_status_persister.rb +0 -0
  808. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/filter_manager.rb +0 -0
  809. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/flat_map.rb +0 -0
  810. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters.rb +273 -0
  811. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/base_bisect_formatter.rb +0 -0
  812. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/base_formatter.rb +0 -0
  813. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/base_text_formatter.rb +0 -0
  814. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/bisect_drb_formatter.rb +0 -0
  815. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/bisect_progress_formatter.rb +0 -0
  816. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/console_codes.rb +0 -0
  817. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/deprecation_formatter.rb +0 -0
  818. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/documentation_formatter.rb +0 -0
  819. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/exception_presenter.rb +511 -0
  820. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/failure_list_formatter.rb +0 -0
  821. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/fallback_message_formatter.rb +0 -0
  822. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/helpers.rb +0 -0
  823. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/html_formatter.rb +0 -0
  824. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/html_printer.rb +0 -0
  825. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/html_snippet_extractor.rb +0 -0
  826. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/json_formatter.rb +0 -0
  827. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/profile_formatter.rb +0 -0
  828. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/progress_formatter.rb +0 -0
  829. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/protocol.rb +0 -0
  830. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/snippet_extractor.rb +0 -0
  831. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/formatters/syntax_highlighter.rb +0 -0
  832. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/hooks.rb +641 -0
  833. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/invocations.rb +0 -0
  834. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/memoized_helpers.rb +0 -0
  835. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/metadata.rb +0 -0
  836. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/metadata_filter.rb +0 -0
  837. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/minitest_assertions_adapter.rb +0 -0
  838. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/mocking_adapters/flexmock.rb +0 -0
  839. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/mocking_adapters/mocha.rb +0 -0
  840. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/mocking_adapters/null.rb +0 -0
  841. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/mocking_adapters/rr.rb +0 -0
  842. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/mocking_adapters/rspec.rb +0 -0
  843. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/notifications.rb +0 -0
  844. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/option_parser.rb +0 -0
  845. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/ordering.rb +0 -0
  846. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/output_wrapper.rb +0 -0
  847. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/pending.rb +0 -0
  848. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/profiler.rb +0 -0
  849. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/project_initializer.rb +0 -0
  850. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/project_initializer/spec/spec_helper.rb +0 -0
  851. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/rake_task.rb +188 -0
  852. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/reporter.rb +0 -0
  853. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/ruby_project.rb +0 -0
  854. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/runner.rb +0 -0
  855. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/sandbox.rb +0 -0
  856. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/set.rb +0 -0
  857. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/shared_context.rb +0 -0
  858. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/shared_example_group.rb +271 -0
  859. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/shell_escape.rb +0 -0
  860. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/test_unit_assertions_adapter.rb +0 -0
  861. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/version.rb +9 -0
  862. data/vendor/bundle/ruby/2.7.0/gems/{rspec-core-3.9.1 → rspec-core-3.9.2}/lib/rspec/core/warnings.rb +0 -0
  863. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/world.rb +276 -0
  864. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/Changelog.md +1191 -0
  865. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/LICENSE.md +0 -0
  866. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/README.md +0 -0
  867. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/expectations.rb +0 -0
  868. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/expectations/block_snippet_extractor.rb +0 -0
  869. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/expectations/configuration.rb +0 -0
  870. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/expectations/expectation_target.rb +0 -0
  871. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/expectations/fail_with.rb +0 -0
  872. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/expectations/failure_aggregator.rb +0 -0
  873. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/expectations/handler.rb +0 -0
  874. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/expectations/minitest_integration.rb +0 -0
  875. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/expectations/syntax.rb +0 -0
  876. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/expectations/version.rb +8 -0
  877. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers.rb +0 -0
  878. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/aliased_matcher.rb +0 -0
  879. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in.rb +0 -0
  880. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/all.rb +0 -0
  881. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/base_matcher.rb +0 -0
  882. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/be.rb +0 -0
  883. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/be_between.rb +0 -0
  884. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/be_instance_of.rb +0 -0
  885. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/be_kind_of.rb +0 -0
  886. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/be_within.rb +0 -0
  887. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/change.rb +0 -0
  888. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/compound.rb +0 -0
  889. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/contain_exactly.rb +0 -0
  890. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/cover.rb +0 -0
  891. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/eq.rb +0 -0
  892. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/eql.rb +0 -0
  893. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/equal.rb +0 -0
  894. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/exist.rb +0 -0
  895. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/has.rb +0 -0
  896. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
  897. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/include.rb +0 -0
  898. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/match.rb +0 -0
  899. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/operators.rb +0 -0
  900. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/output.rb +0 -0
  901. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/raise_error.rb +0 -0
  902. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/respond_to.rb +199 -0
  903. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/satisfy.rb +0 -0
  904. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/start_or_end_with.rb +0 -0
  905. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/built_in/throw_symbol.rb +0 -0
  906. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/yield.rb +441 -0
  907. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/composable.rb +0 -0
  908. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/dsl.rb +540 -0
  909. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/english_phrasing.rb +0 -0
  910. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +0 -0
  911. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/fail_matchers.rb +0 -0
  912. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/generated_descriptions.rb +0 -0
  913. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/matcher_delegator.rb +0 -0
  914. data/vendor/bundle/ruby/2.7.0/gems/{rspec-expectations-3.9.0 → rspec-expectations-3.9.2}/lib/rspec/matchers/matcher_protocol.rb +0 -0
  915. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/Changelog.md +302 -0
  916. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/LICENSE.md +0 -0
  917. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/README.md +0 -0
  918. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support.rb +0 -0
  919. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/caller_filter.rb +0 -0
  920. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/comparable_version.rb +0 -0
  921. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/differ.rb +0 -0
  922. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/directory_maker.rb +0 -0
  923. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/encoded_string.rb +0 -0
  924. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/fuzzy_matcher.rb +0 -0
  925. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/hunk_generator.rb +0 -0
  926. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/matcher_definition.rb +0 -0
  927. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/method_signature_verifier.rb +0 -0
  928. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/mutex.rb +0 -0
  929. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/object_formatter.rb +0 -0
  930. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/recursive_const_methods.rb +0 -0
  931. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/reentrant_mutex.rb +61 -0
  932. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/ruby_features.rb +190 -0
  933. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/source.rb +0 -0
  934. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/source/location.rb +0 -0
  935. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/source/node.rb +0 -0
  936. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/source/token.rb +0 -0
  937. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/spec.rb +0 -0
  938. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/spec/deprecation_helpers.rb +0 -0
  939. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/spec/formatting_support.rb +0 -0
  940. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/spec/in_sub_process.rb +0 -0
  941. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/spec/library_wide_checks.rb +0 -0
  942. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/spec/shell_out.rb +0 -0
  943. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/spec/stderr_splitter.rb +75 -0
  944. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/spec/string_matcher.rb +0 -0
  945. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/spec/with_isolated_directory.rb +0 -0
  946. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/spec/with_isolated_stderr.rb +0 -0
  947. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/version.rb +7 -0
  948. data/vendor/bundle/ruby/2.7.0/gems/{rspec-support-3.9.2 → rspec-support-3.9.3}/lib/rspec/support/warnings.rb +0 -0
  949. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/with_keywords_when_needed.rb +33 -0
  950. data/vendor/bundle/ruby/2.7.0/gems/{rubyzip-2.2.0 → rubyzip-2.3.0}/README.md +0 -0
  951. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/Rakefile +21 -0
  952. data/vendor/bundle/ruby/2.7.0/gems/{rubyzip-2.2.0 → rubyzip-2.3.0}/TODO +0 -0
  953. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip.rb +72 -0
  954. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/central_directory.rb +212 -0
  955. data/vendor/bundle/ruby/2.7.0/gems/{rubyzip-2.2.0 → rubyzip-2.3.0}/lib/zip/compressor.rb +0 -0
  956. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/constants.rb +115 -0
  957. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/crypto/decrypted_io.rb +40 -0
  958. data/vendor/bundle/ruby/2.7.0/gems/{rubyzip-2.2.0 → rubyzip-2.3.0}/lib/zip/crypto/encryption.rb +0 -0
  959. data/vendor/bundle/ruby/2.7.0/gems/{rubyzip-2.2.0 → rubyzip-2.3.0}/lib/zip/crypto/null_encryption.rb +0 -0
  960. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/crypto/traditional_encryption.rb +99 -0
  961. data/vendor/bundle/ruby/2.7.0/gems/{rubyzip-2.2.0 → rubyzip-2.3.0}/lib/zip/decompressor.rb +0 -0
  962. data/vendor/bundle/ruby/2.7.0/gems/{rubyzip-2.2.0 → rubyzip-2.3.0}/lib/zip/deflater.rb +0 -0
  963. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/dos_time.rb +53 -0
  964. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/entry.rb +719 -0
  965. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/entry_set.rb +88 -0
  966. data/vendor/bundle/ruby/2.7.0/gems/{rubyzip-2.2.0 → rubyzip-2.3.0}/lib/zip/errors.rb +0 -0
  967. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/extra_field.rb +103 -0
  968. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/extra_field/generic.rb +44 -0
  969. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/extra_field/ntfs.rb +94 -0
  970. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/extra_field/old_unix.rb +46 -0
  971. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/extra_field/universal_time.rb +77 -0
  972. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/extra_field/unix.rb +39 -0
  973. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/extra_field/zip64.rb +70 -0
  974. data/vendor/bundle/ruby/2.7.0/gems/{rubyzip-2.2.0 → rubyzip-2.3.0}/lib/zip/extra_field/zip64_placeholder.rb +0 -0
  975. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/file.rb +468 -0
  976. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/filesystem.rb +643 -0
  977. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/inflater.rb +54 -0
  978. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/input_stream.rb +180 -0
  979. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/ioextras.rb +36 -0
  980. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/ioextras/abstract_input_stream.rb +122 -0
  981. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/ioextras/abstract_output_stream.rb +43 -0
  982. data/vendor/bundle/ruby/2.7.0/gems/{rubyzip-2.2.0 → rubyzip-2.3.0}/lib/zip/null_compressor.rb +0 -0
  983. data/vendor/bundle/ruby/2.7.0/gems/{rubyzip-2.2.0 → rubyzip-2.3.0}/lib/zip/null_decompressor.rb +0 -0
  984. data/vendor/bundle/ruby/2.7.0/gems/{rubyzip-2.2.0 → rubyzip-2.3.0}/lib/zip/null_input_stream.rb +0 -0
  985. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/output_stream.rb +198 -0
  986. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/pass_thru_compressor.rb +23 -0
  987. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/pass_thru_decompressor.rb +31 -0
  988. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/streamable_directory.rb +15 -0
  989. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/streamable_stream.rb +52 -0
  990. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/lib/zip/version.rb +3 -0
  991. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/samples/example.rb +81 -0
  992. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/samples/example_filesystem.rb +31 -0
  993. data/vendor/bundle/ruby/2.7.0/gems/{rubyzip-2.2.0 → rubyzip-2.3.0}/samples/example_recursive.rb +0 -0
  994. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/samples/gtk_ruby_zip.rb +84 -0
  995. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/samples/qtzip.rb +92 -0
  996. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/samples/write_simple.rb +10 -0
  997. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.3.0/samples/zipfind.rb +67 -0
  998. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/CHANGELOG +725 -0
  999. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/MIT-LICENSE +0 -0
  1000. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/README.rdoc +902 -0
  1001. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/bin/sequel +0 -0
  1002. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/doc/advanced_associations.rdoc +882 -0
  1003. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/doc/association_basics.rdoc +1759 -0
  1004. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/bin_sequel.rdoc +0 -0
  1005. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/cheat_sheet.rdoc +0 -0
  1006. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/doc/code_order.rdoc +114 -0
  1007. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/core_extensions.rdoc +0 -0
  1008. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/dataset_basics.rdoc +0 -0
  1009. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/dataset_filtering.rdoc +0 -0
  1010. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/extensions.rdoc +0 -0
  1011. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/mass_assignment.rdoc +0 -0
  1012. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/migration.rdoc +0 -0
  1013. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/doc/model_dataset_method_design.rdoc +129 -0
  1014. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/model_hooks.rdoc +0 -0
  1015. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/model_plugins.rdoc +0 -0
  1016. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/mssql_stored_procedures.rdoc +0 -0
  1017. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/object_model.rdoc +0 -0
  1018. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/opening_databases.rdoc +0 -0
  1019. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/doc/postgresql.rdoc +603 -0
  1020. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/prepared_statements.rdoc +0 -0
  1021. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/querying.rdoc +0 -0
  1022. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/reflection.rdoc +0 -0
  1023. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.0.0.txt +0 -0
  1024. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.1.0.txt +0 -0
  1025. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.10.0.txt +0 -0
  1026. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.11.0.txt +0 -0
  1027. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.12.0.txt +0 -0
  1028. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.13.0.txt +0 -0
  1029. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.14.0.txt +0 -0
  1030. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.15.0.txt +0 -0
  1031. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.16.0.txt +0 -0
  1032. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.17.0.txt +0 -0
  1033. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.18.0.txt +0 -0
  1034. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.19.0.txt +0 -0
  1035. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.2.0.txt +0 -0
  1036. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.20.0.txt +0 -0
  1037. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.21.0.txt +0 -0
  1038. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.22.0.txt +0 -0
  1039. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.23.0.txt +0 -0
  1040. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.24.0.txt +0 -0
  1041. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.25.0.txt +0 -0
  1042. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.26.0.txt +0 -0
  1043. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.27.0.txt +0 -0
  1044. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.28.0.txt +0 -0
  1045. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.29.0.txt +0 -0
  1046. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.3.0.txt +0 -0
  1047. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/doc/release_notes/5.30.0.txt +20 -0
  1048. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/doc/release_notes/5.31.0.txt +148 -0
  1049. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/doc/release_notes/5.32.0.txt +46 -0
  1050. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.4.0.txt +0 -0
  1051. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.5.0.txt +0 -0
  1052. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.6.0.txt +0 -0
  1053. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.7.0.txt +0 -0
  1054. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.8.0.txt +0 -0
  1055. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/release_notes/5.9.0.txt +0 -0
  1056. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/schema_modification.rdoc +0 -0
  1057. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/security.rdoc +0 -0
  1058. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/sharding.rdoc +0 -0
  1059. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/sql.rdoc +0 -0
  1060. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/doc/testing.rdoc +177 -0
  1061. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/thread_safety.rdoc +0 -0
  1062. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/transactions.rdoc +0 -0
  1063. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/validations.rdoc +0 -0
  1064. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/doc/virtual_rows.rdoc +0 -0
  1065. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel.rb +0 -0
  1066. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/ado.rb +0 -0
  1067. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/ado/access.rb +0 -0
  1068. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/ado/mssql.rb +0 -0
  1069. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/amalgalite.rb +0 -0
  1070. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/ibmdb.rb +0 -0
  1071. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/jdbc.rb +0 -0
  1072. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/jdbc/db2.rb +0 -0
  1073. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/jdbc/derby.rb +0 -0
  1074. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/jdbc/h2.rb +0 -0
  1075. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/jdbc/hsqldb.rb +0 -0
  1076. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/jdbc/jtds.rb +0 -0
  1077. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/jdbc/mssql.rb +0 -0
  1078. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/jdbc/mysql.rb +0 -0
  1079. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/jdbc/oracle.rb +0 -0
  1080. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/jdbc/postgresql.rb +0 -0
  1081. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/jdbc/sqlanywhere.rb +0 -0
  1082. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/jdbc/sqlite.rb +0 -0
  1083. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/jdbc/sqlserver.rb +0 -0
  1084. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/jdbc/transactions.rb +0 -0
  1085. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/mock.rb +0 -0
  1086. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/mysql.rb +0 -0
  1087. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/mysql2.rb +0 -0
  1088. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/odbc.rb +0 -0
  1089. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/odbc/db2.rb +0 -0
  1090. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/odbc/mssql.rb +0 -0
  1091. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/odbc/oracle.rb +0 -0
  1092. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/oracle.rb +0 -0
  1093. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/postgres.rb +0 -0
  1094. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/postgresql.rb +0 -0
  1095. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/adapters/shared/access.rb +290 -0
  1096. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/shared/db2.rb +0 -0
  1097. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/adapters/shared/mssql.rb +1086 -0
  1098. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/adapters/shared/mysql.rb +1061 -0
  1099. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/adapters/shared/oracle.rb +646 -0
  1100. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/adapters/shared/postgres.rb +2151 -0
  1101. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/adapters/shared/sqlanywhere.rb +454 -0
  1102. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/adapters/shared/sqlite.rb +939 -0
  1103. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/sqlanywhere.rb +0 -0
  1104. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/sqlite.rb +0 -0
  1105. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/tinytds.rb +0 -0
  1106. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +0 -0
  1107. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +0 -0
  1108. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/utils/mysql_mysql2.rb +0 -0
  1109. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/utils/mysql_prepared_statements.rb +0 -0
  1110. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/utils/replace.rb +0 -0
  1111. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/utils/split_alter_table.rb +0 -0
  1112. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/utils/stored_procedures.rb +0 -0
  1113. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/adapters/utils/unmodified_identifiers.rb +0 -0
  1114. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/ast_transformer.rb +0 -0
  1115. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/connection_pool.rb +0 -0
  1116. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/connection_pool/sharded_single.rb +0 -0
  1117. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/connection_pool/sharded_threaded.rb +371 -0
  1118. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/connection_pool/single.rb +0 -0
  1119. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/connection_pool/threaded.rb +285 -0
  1120. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/core.rb +438 -0
  1121. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/database.rb +0 -0
  1122. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/database/connecting.rb +0 -0
  1123. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/database/dataset.rb +0 -0
  1124. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/database/dataset_defaults.rb +0 -0
  1125. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/database/features.rb +0 -0
  1126. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/database/logging.rb +0 -0
  1127. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/database/misc.rb +0 -0
  1128. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/database/query.rb +363 -0
  1129. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/database/schema_generator.rb +0 -0
  1130. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/database/schema_methods.rb +0 -0
  1131. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/database/transactions.rb +543 -0
  1132. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/dataset.rb +0 -0
  1133. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/dataset/actions.rb +0 -0
  1134. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/dataset/dataset_module.rb +0 -0
  1135. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/dataset/features.rb +0 -0
  1136. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/dataset/graph.rb +0 -0
  1137. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/dataset/misc.rb +0 -0
  1138. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/dataset/placeholder_literalizer.rb +0 -0
  1139. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/dataset/prepared_statements.rb +0 -0
  1140. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/dataset/query.rb +0 -0
  1141. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/dataset/sql.rb +0 -0
  1142. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/deprecated.rb +0 -0
  1143. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/exceptions.rb +0 -0
  1144. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/_model_constraint_validations.rb +0 -0
  1145. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/_model_pg_row.rb +0 -0
  1146. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/_pretty_table.rb +0 -0
  1147. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/any_not_empty.rb +0 -0
  1148. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/arbitrary_servers.rb +0 -0
  1149. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/auto_literal_strings.rb +0 -0
  1150. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/blank.rb +0 -0
  1151. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/caller_logging.rb +0 -0
  1152. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/columns_introspection.rb +0 -0
  1153. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/extensions/connection_expiration.rb +99 -0
  1154. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/extensions/connection_validator.rb +123 -0
  1155. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/constant_sql_override.rb +0 -0
  1156. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/constraint_validations.rb +0 -0
  1157. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/core_extensions.rb +0 -0
  1158. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/core_refinements.rb +0 -0
  1159. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/current_datetime_timestamp.rb +0 -0
  1160. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/dataset_source_alias.rb +0 -0
  1161. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/date_arithmetic.rb +0 -0
  1162. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/datetime_parse_to_time.rb +0 -0
  1163. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/duplicate_columns_handler.rb +0 -0
  1164. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/empty_array_consider_nulls.rb +0 -0
  1165. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/error_sql.rb +0 -0
  1166. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/escaped_like.rb +0 -0
  1167. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/eval_inspect.rb +0 -0
  1168. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/exclude_or_null.rb +0 -0
  1169. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/extensions/fiber_concurrency.rb +24 -0
  1170. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/freeze_datasets.rb +0 -0
  1171. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/from_block.rb +0 -0
  1172. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/graph_each.rb +0 -0
  1173. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/identifier_mangling.rb +0 -0
  1174. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/implicit_subquery.rb +0 -0
  1175. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/extensions/index_caching.rb +109 -0
  1176. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/inflector.rb +0 -0
  1177. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/extensions/integer64.rb +32 -0
  1178. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/looser_typecasting.rb +0 -0
  1179. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/extensions/migration.rb +786 -0
  1180. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/mssql_emulate_lateral_with_apply.rb +0 -0
  1181. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/named_timezones.rb +0 -0
  1182. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/no_auto_literal_strings.rb +0 -0
  1183. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/null_dataset.rb +0 -0
  1184. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/pagination.rb +0 -0
  1185. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/pg_array.rb +0 -0
  1186. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/pg_array_ops.rb +0 -0
  1187. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/extensions/pg_enum.rb +198 -0
  1188. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/pg_extended_date_support.rb +0 -0
  1189. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/extensions/pg_hstore.rb +348 -0
  1190. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/pg_hstore_ops.rb +0 -0
  1191. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/extensions/pg_inet.rb +135 -0
  1192. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/pg_inet_ops.rb +0 -0
  1193. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/extensions/pg_interval.rb +198 -0
  1194. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/pg_json.rb +0 -0
  1195. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/pg_json_ops.rb +0 -0
  1196. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/pg_loose_count.rb +0 -0
  1197. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/extensions/pg_range.rb +577 -0
  1198. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/pg_range_ops.rb +0 -0
  1199. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/pg_row.rb +0 -0
  1200. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/pg_row_ops.rb +0 -0
  1201. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/pg_static_cache_updater.rb +0 -0
  1202. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/extensions/pg_timestamptz.rb +28 -0
  1203. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/pretty_table.rb +0 -0
  1204. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/query.rb +0 -0
  1205. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/round_timestamps.rb +0 -0
  1206. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
  1207. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/s.rb +0 -0
  1208. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/schema_caching.rb +0 -0
  1209. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/extensions/schema_dumper.rb +504 -0
  1210. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/select_remove.rb +0 -0
  1211. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/sequel_4_dataset_methods.rb +0 -0
  1212. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/extensions/server_block.rb +182 -0
  1213. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/server_logging.rb +0 -0
  1214. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/split_array_nil.rb +0 -0
  1215. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/sql_comments.rb +0 -0
  1216. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/sql_expr.rb +0 -0
  1217. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/string_agg.rb +0 -0
  1218. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/string_date_time.rb +0 -0
  1219. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/symbol_aref.rb +0 -0
  1220. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/symbol_aref_refinement.rb +0 -0
  1221. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/symbol_as.rb +0 -0
  1222. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/symbol_as_refinement.rb +0 -0
  1223. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/synchronize_sql.rb +0 -0
  1224. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/thread_local_timezones.rb +0 -0
  1225. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/to_dot.rb +0 -0
  1226. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/extensions/virtual_row_method_block.rb +0 -0
  1227. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/model.rb +0 -0
  1228. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/model/associations.rb +0 -0
  1229. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/model/base.rb +2239 -0
  1230. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/model/dataset_module.rb +0 -0
  1231. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/model/default_inflections.rb +0 -0
  1232. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/model/errors.rb +0 -0
  1233. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/model/exceptions.rb +0 -0
  1234. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/model/inflections.rb +0 -0
  1235. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/model/plugins.rb +160 -0
  1236. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/accessed_columns.rb +0 -0
  1237. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/active_model.rb +0 -0
  1238. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/after_initialize.rb +0 -0
  1239. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/association_dependencies.rb +0 -0
  1240. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
  1241. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/plugins/association_multi_add_remove.rb +85 -0
  1242. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/association_pks.rb +0 -0
  1243. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/plugins/association_proxies.rb +128 -0
  1244. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/auto_validations.rb +0 -0
  1245. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/before_after_save.rb +0 -0
  1246. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/blacklist_security.rb +0 -0
  1247. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/boolean_readers.rb +0 -0
  1248. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/plugins/boolean_subsets.rb +64 -0
  1249. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/caching.rb +0 -0
  1250. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/plugins/class_table_inheritance.rb +444 -0
  1251. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/column_conflicts.rb +0 -0
  1252. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/column_select.rb +0 -0
  1253. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/columns_updated.rb +0 -0
  1254. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/composition.rb +0 -0
  1255. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/constraint_validations.rb +0 -0
  1256. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/csv_serializer.rb +0 -0
  1257. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/dataset_associations.rb +0 -0
  1258. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/def_dataset_method.rb +0 -0
  1259. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/defaults_setter.rb +0 -0
  1260. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/delay_add_association.rb +0 -0
  1261. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/plugins/dirty.rb +232 -0
  1262. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/eager_each.rb +0 -0
  1263. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/eager_graph_eager.rb +0 -0
  1264. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/empty_failure_backtraces.rb +0 -0
  1265. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/error_splitter.rb +0 -0
  1266. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/finder.rb +0 -0
  1267. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/plugins/forbid_lazy_load.rb +214 -0
  1268. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/force_encoding.rb +0 -0
  1269. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/hook_class_methods.rb +0 -0
  1270. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/input_transformer.rb +0 -0
  1271. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/insert_conflict.rb +0 -0
  1272. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/insert_returning_select.rb +0 -0
  1273. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/instance_filters.rb +0 -0
  1274. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/instance_hooks.rb +0 -0
  1275. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/inverted_subsets.rb +0 -0
  1276. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/plugins/json_serializer.rb +436 -0
  1277. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/lazy_attributes.rb +0 -0
  1278. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/list.rb +0 -0
  1279. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/many_through_many.rb +0 -0
  1280. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/modification_detection.rb +0 -0
  1281. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/mssql_optimistic_locking.rb +0 -0
  1282. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/nested_attributes.rb +0 -0
  1283. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/optimistic_locking.rb +0 -0
  1284. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/pg_array_associations.rb +0 -0
  1285. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/pg_auto_constraint_validations.rb +0 -0
  1286. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/pg_row.rb +0 -0
  1287. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/prepared_statements.rb +0 -0
  1288. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/prepared_statements_safe.rb +0 -0
  1289. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/rcte_tree.rb +0 -0
  1290. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/serialization.rb +0 -0
  1291. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/serialization_modification_detection.rb +0 -0
  1292. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/sharding.rb +0 -0
  1293. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/plugins/single_table_inheritance.rb +256 -0
  1294. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/singular_table_names.rb +0 -0
  1295. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/skip_create_refresh.rb +0 -0
  1296. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/plugins/skip_saving_columns.rb +108 -0
  1297. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/split_values.rb +0 -0
  1298. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/static_cache.rb +0 -0
  1299. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/static_cache_cache.rb +0 -0
  1300. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/string_stripper.rb +0 -0
  1301. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/plugins/subclasses.rb +79 -0
  1302. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/subset_conditions.rb +0 -0
  1303. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/table_select.rb +0 -0
  1304. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/tactical_eager_loading.rb +0 -0
  1305. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/throw_failures.rb +0 -0
  1306. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/timestamps.rb +0 -0
  1307. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/touch.rb +0 -0
  1308. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/tree.rb +0 -0
  1309. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/typecast_on_load.rb +0 -0
  1310. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/unlimited_update.rb +0 -0
  1311. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/update_or_create.rb +0 -0
  1312. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/update_primary_key.rb +0 -0
  1313. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/update_refresh.rb +0 -0
  1314. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/uuid.rb +0 -0
  1315. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/validate_associated.rb +0 -0
  1316. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/validation_class_methods.rb +0 -0
  1317. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/validation_contexts.rb +0 -0
  1318. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/validation_helpers.rb +0 -0
  1319. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/whitelist_security.rb +0 -0
  1320. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/plugins/xml_serializer.rb +0 -0
  1321. data/vendor/bundle/ruby/2.7.0/gems/{sequel-5.29.0 → sequel-5.32.0}/lib/sequel/sql.rb +0 -0
  1322. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/timezones.rb +251 -0
  1323. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.32.0/lib/sequel/version.rb +25 -0
  1324. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/COPYING +0 -0
  1325. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/Gemfile +0 -0
  1326. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/README.md +0 -0
  1327. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/Rakefile +0 -0
  1328. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/TODO +0 -0
  1329. data/vendor/bundle/ruby/2.7.0/gems/tins-1.25.0/VERSION +1 -0
  1330. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/add_one.png +0 -0
  1331. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/add_one.stm +0 -0
  1332. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/bb3.png +0 -0
  1333. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/bb3.stm +0 -0
  1334. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/concatenate_compare.mtm +0 -0
  1335. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/concatenate_compare.png +0 -0
  1336. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/length_difference.mtm +0 -0
  1337. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/length_difference.png +0 -0
  1338. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/let.rb +0 -0
  1339. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/mail.rb +0 -0
  1340. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/minsky.rb +0 -0
  1341. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/multiply.reg +0 -0
  1342. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/null_pattern.rb +0 -0
  1343. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/ones_difference-mtm.png +0 -0
  1344. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/ones_difference-stm.png +0 -0
  1345. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/ones_difference.mtm +0 -0
  1346. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/ones_difference.stm +0 -0
  1347. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/prefix-equals-suffix-reversed-with-infix.png +0 -0
  1348. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/prefix-equals-suffix-reversed-with-infix.stm +0 -0
  1349. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/recipe.rb +0 -0
  1350. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/recipe2.rb +0 -0
  1351. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/recipe_common.rb +0 -0
  1352. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/subtract.reg +0 -0
  1353. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/turing-graph.rb +0 -0
  1354. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/examples/turing.rb +0 -0
  1355. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/dslkit.rb +0 -0
  1356. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/dslkit/polite.rb +0 -0
  1357. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/dslkit/rude.rb +0 -0
  1358. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/spruz.rb +0 -0
  1359. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins.rb +0 -0
  1360. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/alias.rb +0 -0
  1361. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/annotate.rb +0 -0
  1362. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/ask_and_send.rb +0 -0
  1363. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/attempt.rb +0 -0
  1364. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/bijection.rb +0 -0
  1365. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/case_predicate.rb +0 -0
  1366. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/complete.rb +0 -0
  1367. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/concern.rb +0 -0
  1368. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/count_by.rb +0 -0
  1369. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/date_dummy.rb +0 -0
  1370. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/date_time_dummy.rb +0 -0
  1371. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/deep_const_get.rb +0 -0
  1372. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/deep_dup.rb +0 -0
  1373. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/dslkit.rb +0 -0
  1374. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/duration.rb +0 -0
  1375. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/expose.rb +0 -0
  1376. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/extract_last_argument_options.rb +0 -0
  1377. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/file_binary.rb +0 -0
  1378. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/find.rb +0 -0
  1379. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/generator.rb +0 -0
  1380. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/go.rb +0 -0
  1381. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/hash_symbolize_keys_recursive.rb +0 -0
  1382. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/hash_union.rb +0 -0
  1383. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/if_predicate.rb +0 -0
  1384. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/implement.rb +0 -0
  1385. data/vendor/bundle/ruby/2.7.0/gems/tins-1.25.0/lib/tins/limited.rb +44 -0
  1386. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/lines_file.rb +0 -0
  1387. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/memoize.rb +0 -0
  1388. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/method_description.rb +0 -0
  1389. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/minimize.rb +0 -0
  1390. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/module_group.rb +0 -0
  1391. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/named_set.rb +0 -0
  1392. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/null.rb +0 -0
  1393. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/once.rb +0 -0
  1394. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/p.rb +0 -0
  1395. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/partial_application.rb +0 -0
  1396. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/proc_compose.rb +0 -0
  1397. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/proc_prelude.rb +0 -0
  1398. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/range_plus.rb +0 -0
  1399. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/require_maybe.rb +0 -0
  1400. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/responding.rb +0 -0
  1401. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/secure_write.rb +0 -0
  1402. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/sexy_singleton.rb +0 -0
  1403. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/string_byte_order_mark.rb +0 -0
  1404. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/string_camelize.rb +0 -0
  1405. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/string_underscore.rb +0 -0
  1406. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/string_version.rb +0 -0
  1407. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/subhash.rb +0 -0
  1408. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/temp_io.rb +0 -0
  1409. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/temp_io_enum.rb +0 -0
  1410. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/terminal.rb +0 -0
  1411. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/thread_local.rb +0 -0
  1412. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/time_dummy.rb +0 -0
  1413. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/to.rb +0 -0
  1414. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/to_proc.rb +0 -0
  1415. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/token.rb +0 -0
  1416. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/uniq_by.rb +0 -0
  1417. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/unit.rb +0 -0
  1418. data/vendor/bundle/ruby/2.7.0/gems/tins-1.25.0/lib/tins/version.rb +8 -0
  1419. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/write.rb +0 -0
  1420. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt.rb +0 -0
  1421. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/annotate.rb +0 -0
  1422. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/ask_and_send.rb +0 -0
  1423. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/attempt.rb +0 -0
  1424. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/blank.rb +0 -0
  1425. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/case_predicate.rb +0 -0
  1426. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/complete.rb +0 -0
  1427. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/concern.rb +0 -0
  1428. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/count_by.rb +0 -0
  1429. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/date_dummy.rb +0 -0
  1430. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/date_time_dummy.rb +0 -0
  1431. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/deep_const_get.rb +0 -0
  1432. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/deep_dup.rb +0 -0
  1433. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/dslkit.rb +0 -0
  1434. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/expose.rb +0 -0
  1435. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/extract_last_argument_options.rb +0 -0
  1436. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/file_binary.rb +0 -0
  1437. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/full.rb +0 -0
  1438. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/hash_symbolize_keys_recursive.rb +0 -0
  1439. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/hash_union.rb +0 -0
  1440. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/if_predicate.rb +0 -0
  1441. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/implement.rb +0 -0
  1442. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/irb.rb +0 -0
  1443. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/method_description.rb +0 -0
  1444. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/named.rb +0 -0
  1445. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/null.rb +0 -0
  1446. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/p.rb +0 -0
  1447. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/partial_application.rb +0 -0
  1448. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/proc_compose.rb +0 -0
  1449. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/proc_prelude.rb +0 -0
  1450. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/range_plus.rb +0 -0
  1451. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/require_maybe.rb +0 -0
  1452. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/responding.rb +0 -0
  1453. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/secure_write.rb +0 -0
  1454. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/sexy_singleton.rb +0 -0
  1455. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/string.rb +0 -0
  1456. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/string_byte_order_mark.rb +0 -0
  1457. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/string_camelize.rb +0 -0
  1458. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/string_underscore.rb +0 -0
  1459. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/string_version.rb +0 -0
  1460. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/subhash.rb +0 -0
  1461. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/temp_io.rb +0 -0
  1462. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/time_dummy.rb +0 -0
  1463. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/time_freezer.rb +0 -0
  1464. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/to.rb +0 -0
  1465. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/uniq_by.rb +0 -0
  1466. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/lib/tins/xt/write.rb +0 -0
  1467. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/annotate_test.rb +0 -0
  1468. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/ask_and_send_test.rb +0 -0
  1469. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/attempt_test.rb +0 -0
  1470. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/bijection_test.rb +0 -0
  1471. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/blank_full_test.rb +0 -0
  1472. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/case_predicate_test.rb +0 -0
  1473. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/concern_test.rb +0 -0
  1474. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/count_by_test.rb +0 -0
  1475. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/date_dummy_test.rb +0 -0
  1476. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/date_time_dummy_test.rb +0 -0
  1477. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/deep_const_get_test.rb +0 -0
  1478. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/deep_dup_test.rb +0 -0
  1479. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/delegate_test.rb +0 -0
  1480. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/dslkit_test.rb +0 -0
  1481. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/duration_test.rb +0 -0
  1482. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/dynamic_scope_test.rb +0 -0
  1483. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/expose_test.rb +0 -0
  1484. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/extract_last_argument_options_test.rb +0 -0
  1485. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/file_binary_test.rb +0 -0
  1486. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/find_test.rb +0 -0
  1487. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/from_module_test.rb +0 -0
  1488. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/generator_test.rb +0 -0
  1489. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/go_test.rb +0 -0
  1490. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/hash_symbolize_keys_recursive_test.rb +0 -0
  1491. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/hash_union_test.rb +0 -0
  1492. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/if_predicate_test.rb +0 -0
  1493. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/implement_test.rb +0 -0
  1494. data/vendor/bundle/ruby/2.7.0/gems/tins-1.25.0/tests/limited_test.rb +22 -0
  1495. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/lines_file_test.rb +0 -0
  1496. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/memoize_test.rb +0 -0
  1497. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/method_description_test.rb +0 -0
  1498. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/minimize_test.rb +0 -0
  1499. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/module_group_test.rb +0 -0
  1500. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/named_set_test.rb +0 -0
  1501. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/named_test.rb +0 -0
  1502. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/null_test.rb +0 -0
  1503. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/p_test.rb +0 -0
  1504. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/partial_application_test.rb +0 -0
  1505. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/proc_compose_test.rb +0 -0
  1506. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/proc_prelude_test.rb +0 -0
  1507. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/range_plus_test.rb +0 -0
  1508. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/require_maybe_test.rb +0 -0
  1509. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/responding_test.rb +0 -0
  1510. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/rotate_test.rb +0 -0
  1511. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/scope_test.rb +0 -0
  1512. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/secure_write_test.rb +0 -0
  1513. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/sexy_singleton_test.rb +0 -0
  1514. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/string_byte_order_mark_test.rb +0 -0
  1515. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/string_camelize_test.rb +0 -0
  1516. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/string_underscore_test.rb +0 -0
  1517. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/string_version_test.rb +0 -0
  1518. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/subhash_test.rb +0 -0
  1519. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/temp_io_test.rb +0 -0
  1520. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/test_helper.rb +0 -0
  1521. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/time_dummy_test.rb +0 -0
  1522. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/time_freezer_test.rb +0 -0
  1523. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/to_test.rb +0 -0
  1524. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/token_test.rb +0 -0
  1525. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/uniq_by_test.rb +0 -0
  1526. data/vendor/bundle/ruby/2.7.0/gems/{tins-1.24.1 → tins-1.25.0}/tests/unit_test.rb +0 -0
  1527. data/vendor/bundle/ruby/2.7.0/gems/tins-1.25.0/tins.gemspec +39 -0
  1528. data/vendor/bundle/ruby/2.7.0/specifications/capybara-3.32.2.gemspec +87 -0
  1529. data/vendor/bundle/ruby/2.7.0/specifications/faraday-1.0.1.gemspec +0 -0
  1530. data/vendor/bundle/ruby/2.7.0/specifications/mime-types-data-3.2020.0512.gemspec +50 -0
  1531. data/vendor/bundle/ruby/2.7.0/specifications/nokogiri-1.10.9.gemspec +68 -0
  1532. data/vendor/bundle/ruby/2.7.0/specifications/octokit-4.18.0.gemspec +35 -0
  1533. data/vendor/bundle/ruby/2.7.0/specifications/power_assert-1.2.0.gemspec +46 -0
  1534. data/vendor/bundle/ruby/2.7.0/specifications/public_suffix-4.0.5.gemspec +24 -0
  1535. data/vendor/bundle/ruby/2.7.0/specifications/rspec-core-3.9.2.gemspec +53 -0
  1536. data/vendor/bundle/ruby/2.7.0/specifications/rspec-expectations-3.9.2.gemspec +44 -0
  1537. data/vendor/bundle/ruby/2.7.0/specifications/rspec-support-3.9.3.gemspec +36 -0
  1538. data/vendor/bundle/ruby/2.7.0/specifications/rubyzip-2.3.0.gemspec +39 -0
  1539. data/vendor/bundle/ruby/2.7.0/specifications/sequel-5.32.0.gemspec +48 -0
  1540. data/vendor/bundle/ruby/2.7.0/specifications/tins-1.25.0.gemspec +40 -0
  1541. metadata +1533 -1836
  1542. data/vendor/bundle/ruby/2.7.0/cache/capybara-3.31.0.gem +0 -0
  1543. data/vendor/bundle/ruby/2.7.0/cache/faraday-1.0.0.gem +0 -0
  1544. data/vendor/bundle/ruby/2.7.0/cache/mime-types-data-3.2019.1009.gem +0 -0
  1545. data/vendor/bundle/ruby/2.7.0/cache/nokogiri-1.10.8.gem +0 -0
  1546. data/vendor/bundle/ruby/2.7.0/cache/octokit-4.16.0.gem +0 -0
  1547. data/vendor/bundle/ruby/2.7.0/cache/power_assert-1.1.6.gem +0 -0
  1548. data/vendor/bundle/ruby/2.7.0/cache/public_suffix-4.0.3.gem +0 -0
  1549. data/vendor/bundle/ruby/2.7.0/cache/rspec-core-3.9.1.gem +0 -0
  1550. data/vendor/bundle/ruby/2.7.0/cache/rspec-expectations-3.9.0.gem +0 -0
  1551. data/vendor/bundle/ruby/2.7.0/cache/rspec-support-3.9.2.gem +0 -0
  1552. data/vendor/bundle/ruby/2.7.0/cache/rubyzip-2.2.0.gem +0 -0
  1553. data/vendor/bundle/ruby/2.7.0/cache/sequel-5.29.0.gem +0 -0
  1554. data/vendor/bundle/ruby/2.7.0/cache/tins-1.24.1.gem +0 -0
  1555. data/vendor/bundle/ruby/2.7.0/extensions/x86_64-linux/2.7.0/nokogiri-1.10.8/gem_make.out +0 -523
  1556. data/vendor/bundle/ruby/2.7.0/extensions/x86_64-linux/2.7.0/nokogiri-1.10.8/mkmf.log +0 -605
  1557. data/vendor/bundle/ruby/2.7.0/extensions/x86_64-linux/2.7.0/nokogiri-1.10.8/nokogiri/nokogiri.so +0 -0
  1558. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/History.md +0 -1782
  1559. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/README.md +0 -1099
  1560. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/minitest.rb +0 -311
  1561. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/minitest/spec.rb +0 -208
  1562. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/node/element.rb +0 -604
  1563. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/rack_test/browser.rb +0 -138
  1564. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/registrations/servers.rb +0 -44
  1565. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/result.rb +0 -186
  1566. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/rspec/matcher_proxies.rb +0 -82
  1567. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/rspec/matchers/have_text.rb +0 -33
  1568. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/selenium/atoms/getAttribute.min.js +0 -1
  1569. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/selenium/atoms/src/getAttribute.js +0 -161
  1570. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/selenium/driver.rb +0 -495
  1571. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/selenium/driver_specializations/firefox_driver.rb +0 -89
  1572. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/selenium/node.rb +0 -551
  1573. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/selenium/nodes/chrome_node.rb +0 -128
  1574. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/selenium/nodes/firefox_node.rb +0 -131
  1575. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/spec/public/test.js +0 -257
  1576. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/spec/session/fill_in_spec.rb +0 -277
  1577. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/spec/session/find_spec.rb +0 -528
  1578. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/spec/session/has_css_spec.rb +0 -371
  1579. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/spec/session/node_spec.rb +0 -1265
  1580. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/spec/session/window/window_spec.rb +0 -203
  1581. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/spec/spec_helper.rb +0 -135
  1582. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/spec/views/form.erb +0 -680
  1583. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/spec/views/with_html.erb +0 -208
  1584. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/lib/capybara/version.rb +0 -5
  1585. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/spec/rack_test_spec.rb +0 -256
  1586. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/spec/regexp_dissassembler_spec.rb +0 -254
  1587. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/spec/result_spec.rb +0 -189
  1588. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/spec/rspec/shared_spec_matchers.rb +0 -947
  1589. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/spec/selenium_spec_chrome.rb +0 -184
  1590. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/spec/selenium_spec_chrome_remote.rb +0 -94
  1591. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/spec/shared_selenium_node.rb +0 -65
  1592. data/vendor/bundle/ruby/2.7.0/gems/capybara-3.31.0/spec/shared_selenium_session.rb +0 -467
  1593. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/README.md +0 -55
  1594. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/UPGRADING.md +0 -55
  1595. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/lib/faraday.rb +0 -166
  1596. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/lib/faraday/adapter/em_http.rb +0 -285
  1597. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/lib/faraday/adapter/httpclient.rb +0 -151
  1598. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/lib/faraday/adapter/net_http.rb +0 -209
  1599. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/lib/faraday/adapter/typhoeus.rb +0 -15
  1600. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/lib/faraday/adapter_registry.rb +0 -28
  1601. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/lib/faraday/request/authorization.rb +0 -53
  1602. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/lib/faraday/request/multipart.rb +0 -99
  1603. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/lib/faraday/request/url_encoded.rb +0 -54
  1604. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/lib/faraday/response.rb +0 -104
  1605. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/lib/faraday/utils.rb +0 -109
  1606. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/spec/faraday/adapter/em_http_spec.rb +0 -47
  1607. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/spec/faraday/adapter/em_synchrony_spec.rb +0 -16
  1608. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/spec/faraday/adapter/patron_spec.rb +0 -18
  1609. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/spec/faraday/rack_builder_spec.rb +0 -196
  1610. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/spec/faraday/request/url_encoded_spec.rb +0 -70
  1611. data/vendor/bundle/ruby/2.7.0/gems/faraday-1.0.0/spec/faraday/response/middleware_spec.rb +0 -52
  1612. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/Code-of-Conduct.md +0 -75
  1613. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/Contributing.md +0 -162
  1614. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/History.md +0 -406
  1615. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/Licence.md +0 -25
  1616. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/README.md +0 -63
  1617. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/data/mime-types.json +0 -1
  1618. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/data/mime.content_type.column +0 -2215
  1619. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/data/mime.docs.column +0 -2215
  1620. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/data/mime.encoding.column +0 -2215
  1621. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/data/mime.flags.column +0 -2215
  1622. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/data/mime.friendly.column +0 -2215
  1623. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/data/mime.pext.column +0 -2215
  1624. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/data/mime.use_instead.column +0 -2215
  1625. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/data/mime.xrefs.column +0 -2215
  1626. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/lib/mime/types/data.rb +0 -21
  1627. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/types/application.yaml +0 -16361
  1628. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/types/audio.yaml +0 -1644
  1629. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/types/image.yaml +0 -1069
  1630. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/types/model.yaml +0 -302
  1631. data/vendor/bundle/ruby/2.7.0/gems/mime-types-data-3.2019.1009/types/text.yaml +0 -1055
  1632. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/Makefile +0 -628
  1633. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/html_document.o +0 -0
  1634. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/html_element_description.o +0 -0
  1635. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/html_entity_lookup.o +0 -0
  1636. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/html_sax_parser_context.o +0 -0
  1637. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/html_sax_push_parser.o +0 -0
  1638. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/nokogiri.o +0 -0
  1639. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/nokogiri.so +0 -0
  1640. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_attr.o +0 -0
  1641. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_attribute_decl.o +0 -0
  1642. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_cdata.o +0 -0
  1643. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_comment.o +0 -0
  1644. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_document.o +0 -0
  1645. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_document_fragment.o +0 -0
  1646. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_dtd.o +0 -0
  1647. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_element_content.o +0 -0
  1648. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_element_decl.o +0 -0
  1649. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_encoding_handler.o +0 -0
  1650. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_entity_decl.o +0 -0
  1651. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_entity_reference.o +0 -0
  1652. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_io.o +0 -0
  1653. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_libxml2_hacks.o +0 -0
  1654. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_namespace.o +0 -0
  1655. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_node.o +0 -0
  1656. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_node_set.o +0 -0
  1657. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_processing_instruction.o +0 -0
  1658. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_reader.o +0 -0
  1659. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_relax_ng.o +0 -0
  1660. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_sax_parser.o +0 -0
  1661. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_sax_parser_context.o +0 -0
  1662. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_sax_push_parser.o +0 -0
  1663. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_schema.c +0 -205
  1664. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_schema.o +0 -0
  1665. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_syntax_error.o +0 -0
  1666. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_text.o +0 -0
  1667. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xml_xpath_context.o +0 -0
  1668. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/ext/nokogiri/xslt_stylesheet.o +0 -0
  1669. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/lib/nokogiri/nokogiri.so +0 -0
  1670. data/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.10.8/lib/nokogiri/version.rb +0 -109
  1671. data/vendor/bundle/ruby/2.7.0/gems/octokit-4.16.0/lib/octokit/client.rb +0 -246
  1672. data/vendor/bundle/ruby/2.7.0/gems/octokit-4.16.0/lib/octokit/client/authorizations.rb +0 -250
  1673. data/vendor/bundle/ruby/2.7.0/gems/octokit-4.16.0/lib/octokit/client/events.rb +0 -151
  1674. data/vendor/bundle/ruby/2.7.0/gems/octokit-4.16.0/lib/octokit/client/search.rb +0 -91
  1675. data/vendor/bundle/ruby/2.7.0/gems/octokit-4.16.0/lib/octokit/preview.rb +0 -47
  1676. data/vendor/bundle/ruby/2.7.0/gems/octokit-4.16.0/lib/octokit/version.rb +0 -17
  1677. data/vendor/bundle/ruby/2.7.0/gems/power_assert-1.1.6/README.rdoc +0 -81
  1678. data/vendor/bundle/ruby/2.7.0/gems/power_assert-1.1.6/lib/power_assert/inspector.rb +0 -61
  1679. data/vendor/bundle/ruby/2.7.0/gems/power_assert-1.1.6/lib/power_assert/version.rb +0 -3
  1680. data/vendor/bundle/ruby/2.7.0/gems/power_assert-1.1.6/power_assert.gemspec +0 -31
  1681. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.3/CHANGELOG.md +0 -385
  1682. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.3/Gemfile +0 -12
  1683. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.3/README.md +0 -207
  1684. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.3/SECURITY.md +0 -101
  1685. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.3/data/list.txt +0 -13059
  1686. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.3/lib/public_suffix/list.rb +0 -247
  1687. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.3/lib/public_suffix/rule.rb +0 -350
  1688. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.3/lib/public_suffix/version.rb +0 -13
  1689. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.3/public_suffix.gemspec +0 -25
  1690. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.3/test/acceptance_test.rb +0 -129
  1691. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.3/test/unit/public_suffix_test.rb +0 -188
  1692. data/vendor/bundle/ruby/2.7.0/gems/public_suffix-4.0.3/test/unit/rule_test.rb +0 -222
  1693. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/Changelog.md +0 -2274
  1694. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/configuration.rb +0 -2336
  1695. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/example_group.rb +0 -889
  1696. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters.rb +0 -272
  1697. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/exception_presenter.rb +0 -508
  1698. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/hooks.rb +0 -632
  1699. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/rake_task.rb +0 -188
  1700. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/shared_example_group.rb +0 -269
  1701. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/version.rb +0 -9
  1702. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.1/lib/rspec/core/world.rb +0 -275
  1703. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/Changelog.md +0 -1170
  1704. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/version.rb +0 -8
  1705. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/have_attributes.rb +0 -114
  1706. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/respond_to.rb +0 -174
  1707. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/yield.rb +0 -432
  1708. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/dsl.rb +0 -534
  1709. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/Changelog.md +0 -292
  1710. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/reentrant_mutex.rb +0 -53
  1711. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/ruby_features.rb +0 -185
  1712. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/stderr_splitter.rb +0 -67
  1713. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.2/lib/rspec/support/version.rb +0 -7
  1714. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/Rakefile +0 -18
  1715. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip.rb +0 -71
  1716. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/central_directory.rb +0 -208
  1717. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/constants.rb +0 -115
  1718. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/crypto/decrypted_io.rb +0 -39
  1719. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/crypto/traditional_encryption.rb +0 -99
  1720. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/dos_time.rb +0 -53
  1721. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/entry.rb +0 -712
  1722. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/entry_set.rb +0 -86
  1723. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/extra_field.rb +0 -101
  1724. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/extra_field/generic.rb +0 -43
  1725. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/extra_field/ntfs.rb +0 -90
  1726. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/extra_field/old_unix.rb +0 -44
  1727. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/extra_field/universal_time.rb +0 -74
  1728. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/extra_field/unix.rb +0 -37
  1729. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/extra_field/zip64.rb +0 -68
  1730. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/file.rb +0 -457
  1731. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/filesystem.rb +0 -627
  1732. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/inflater.rb +0 -52
  1733. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/input_stream.rb +0 -177
  1734. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/ioextras.rb +0 -36
  1735. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/ioextras/abstract_input_stream.rb +0 -117
  1736. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/ioextras/abstract_output_stream.rb +0 -43
  1737. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/output_stream.rb +0 -189
  1738. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/pass_thru_compressor.rb +0 -23
  1739. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/pass_thru_decompressor.rb +0 -31
  1740. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/streamable_directory.rb +0 -15
  1741. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/streamable_stream.rb +0 -51
  1742. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/lib/zip/version.rb +0 -3
  1743. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/samples/example.rb +0 -81
  1744. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/samples/example_filesystem.rb +0 -31
  1745. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/samples/gtk_ruby_zip.rb +0 -84
  1746. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/samples/qtzip.rb +0 -92
  1747. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/samples/write_simple.rb +0 -12
  1748. data/vendor/bundle/ruby/2.7.0/gems/rubyzip-2.2.0/samples/zipfind.rb +0 -66
  1749. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/CHANGELOG +0 -2603
  1750. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/README.rdoc +0 -902
  1751. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/Rakefile +0 -151
  1752. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/advanced_associations.rdoc +0 -882
  1753. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/association_basics.rdoc +0 -1759
  1754. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/code_order.rdoc +0 -104
  1755. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/model_dataset_method_design.rdoc +0 -129
  1756. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/postgresql.rdoc +0 -532
  1757. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.0.0.txt +0 -262
  1758. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.1.0.txt +0 -85
  1759. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.10.0.txt +0 -226
  1760. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.11.0.txt +0 -147
  1761. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.12.0.txt +0 -105
  1762. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.13.0.txt +0 -169
  1763. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.14.0.txt +0 -68
  1764. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.15.0.txt +0 -56
  1765. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.16.0.txt +0 -36
  1766. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.17.0.txt +0 -38
  1767. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.18.0.txt +0 -36
  1768. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.19.0.txt +0 -45
  1769. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.2.0.txt +0 -129
  1770. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.20.0.txt +0 -79
  1771. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.21.0.txt +0 -94
  1772. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.22.0.txt +0 -72
  1773. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.23.0.txt +0 -65
  1774. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.24.0.txt +0 -99
  1775. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.25.0.txt +0 -181
  1776. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.26.0.txt +0 -44
  1777. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.27.0.txt +0 -78
  1778. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.28.0.txt +0 -57
  1779. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.29.0.txt +0 -41
  1780. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.3.0.txt +0 -40
  1781. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.30.0.txt +0 -37
  1782. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.31.0.txt +0 -57
  1783. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.32.0.txt +0 -132
  1784. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.33.0.txt +0 -88
  1785. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.34.0.txt +0 -86
  1786. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.35.0.txt +0 -130
  1787. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.36.0.txt +0 -116
  1788. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.37.0.txt +0 -50
  1789. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.38.0.txt +0 -67
  1790. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.39.0.txt +0 -127
  1791. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.4.0.txt +0 -92
  1792. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.40.0.txt +0 -179
  1793. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.41.0.txt +0 -77
  1794. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.42.0.txt +0 -221
  1795. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.43.0.txt +0 -87
  1796. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.44.0.txt +0 -125
  1797. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.45.0.txt +0 -370
  1798. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.46.0.txt +0 -404
  1799. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.47.0.txt +0 -56
  1800. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.48.0.txt +0 -293
  1801. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.49.0.txt +0 -222
  1802. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.5.0.txt +0 -34
  1803. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.6.0.txt +0 -30
  1804. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.7.0.txt +0 -103
  1805. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.8.0.txt +0 -175
  1806. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/release_notes/4.9.0.txt +0 -190
  1807. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/doc/testing.rdoc +0 -177
  1808. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/adapters/shared/access.rb +0 -290
  1809. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/adapters/shared/mssql.rb +0 -1086
  1810. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/adapters/shared/mysql.rb +0 -1061
  1811. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/adapters/shared/oracle.rb +0 -646
  1812. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/adapters/shared/postgres.rb +0 -1996
  1813. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/adapters/shared/sqlanywhere.rb +0 -454
  1814. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/adapters/shared/sqlite.rb +0 -916
  1815. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/connection_pool/sharded_threaded.rb +0 -371
  1816. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/connection_pool/threaded.rb +0 -285
  1817. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/core.rb +0 -434
  1818. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/database/query.rb +0 -363
  1819. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/database/transactions.rb +0 -547
  1820. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/extensions/connection_expiration.rb +0 -99
  1821. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/extensions/connection_validator.rb +0 -123
  1822. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/extensions/index_caching.rb +0 -107
  1823. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/extensions/integer64.rb +0 -30
  1824. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/extensions/migration.rb +0 -786
  1825. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/extensions/pg_enum.rb +0 -195
  1826. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/extensions/pg_hstore.rb +0 -342
  1827. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/extensions/pg_inet.rb +0 -127
  1828. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/extensions/pg_interval.rb +0 -196
  1829. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/extensions/pg_range.rb +0 -575
  1830. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/extensions/pg_timestamptz.rb +0 -26
  1831. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/extensions/schema_dumper.rb +0 -498
  1832. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/extensions/server_block.rb +0 -182
  1833. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/model/base.rb +0 -2232
  1834. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/model/plugins.rb +0 -159
  1835. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/plugins/association_multi_add_remove.rb +0 -83
  1836. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/plugins/association_proxies.rb +0 -126
  1837. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/plugins/boolean_subsets.rb +0 -61
  1838. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/plugins/class_table_inheritance.rb +0 -444
  1839. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/plugins/dirty.rb +0 -232
  1840. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/plugins/json_serializer.rb +0 -440
  1841. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/plugins/single_table_inheritance.rb +0 -256
  1842. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/plugins/subclasses.rb +0 -77
  1843. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/timezones.rb +0 -249
  1844. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/lib/sequel/version.rb +0 -25
  1845. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/adapter_spec.rb +0 -4
  1846. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/adapters/db2_spec.rb +0 -170
  1847. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/adapters/mssql_spec.rb +0 -828
  1848. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/adapters/mysql_spec.rb +0 -1060
  1849. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/adapters/oracle_spec.rb +0 -371
  1850. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/adapters/postgres_spec.rb +0 -4476
  1851. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/adapters/spec_helper.rb +0 -44
  1852. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/adapters/sqlanywhere_spec.rb +0 -97
  1853. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/adapters/sqlite_spec.rb +0 -652
  1854. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/bin_spec.rb +0 -278
  1855. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/core/connection_pool_spec.rb +0 -1250
  1856. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/core/database_spec.rb +0 -2915
  1857. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/core/dataset_spec.rb +0 -5544
  1858. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/core/deprecated_spec.rb +0 -70
  1859. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/core/expression_filters_spec.rb +0 -1498
  1860. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/core/mock_adapter_spec.rb +0 -722
  1861. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/core/object_graph_spec.rb +0 -336
  1862. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/core/placeholder_literalizer_spec.rb +0 -166
  1863. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/core/schema_generator_spec.rb +0 -214
  1864. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/core/schema_spec.rb +0 -1844
  1865. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/core/spec_helper.rb +0 -24
  1866. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/core/version_spec.rb +0 -14
  1867. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/core_extensions_spec.rb +0 -763
  1868. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/core_model_spec.rb +0 -2
  1869. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/core_spec.rb +0 -1
  1870. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/deprecation_helper.rb +0 -30
  1871. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/accessed_columns_spec.rb +0 -51
  1872. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/active_model_spec.rb +0 -99
  1873. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/after_initialize_spec.rb +0 -28
  1874. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/any_not_empty_spec.rb +0 -23
  1875. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/arbitrary_servers_spec.rb +0 -109
  1876. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/association_dependencies_spec.rb +0 -125
  1877. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/association_multi_add_remove_spec.rb +0 -1041
  1878. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/association_pks_spec.rb +0 -423
  1879. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/association_proxies_spec.rb +0 -100
  1880. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/auto_literal_strings_spec.rb +0 -205
  1881. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/auto_validations_spec.rb +0 -229
  1882. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/blacklist_security_spec.rb +0 -95
  1883. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/blank_spec.rb +0 -69
  1884. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/boolean_readers_spec.rb +0 -93
  1885. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/boolean_subsets_spec.rb +0 -47
  1886. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/caching_spec.rb +0 -273
  1887. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/caller_logging_spec.rb +0 -52
  1888. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/class_table_inheritance_spec.rb +0 -750
  1889. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/column_conflicts_spec.rb +0 -75
  1890. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/column_select_spec.rb +0 -129
  1891. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/columns_introspection_spec.rb +0 -90
  1892. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/columns_updated_spec.rb +0 -35
  1893. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/composition_spec.rb +0 -248
  1894. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/connection_expiration_spec.rb +0 -151
  1895. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/connection_validator_spec.rb +0 -144
  1896. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/constant_sql_override_spec.rb +0 -24
  1897. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/constraint_validations_plugin_spec.rb +0 -300
  1898. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/constraint_validations_spec.rb +0 -439
  1899. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/core_refinements_spec.rb +0 -528
  1900. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/csv_serializer_spec.rb +0 -183
  1901. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
  1902. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/dataset_associations_spec.rb +0 -365
  1903. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/dataset_source_alias_spec.rb +0 -51
  1904. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/date_arithmetic_spec.rb +0 -181
  1905. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/datetime_parse_to_time_spec.rb +0 -169
  1906. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/def_dataset_method_spec.rb +0 -100
  1907. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/defaults_setter_spec.rb +0 -150
  1908. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/delay_add_association_spec.rb +0 -73
  1909. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/dirty_spec.rb +0 -222
  1910. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/duplicate_columns_handler_spec.rb +0 -104
  1911. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/eager_each_spec.rb +0 -62
  1912. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/eager_graph_eager_spec.rb +0 -100
  1913. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
  1914. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/empty_failure_backtraces_spec.rb +0 -60
  1915. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/error_splitter_spec.rb +0 -18
  1916. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/error_sql_spec.rb +0 -20
  1917. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/escaped_like_spec.rb +0 -40
  1918. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/eval_inspect_spec.rb +0 -81
  1919. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/exclude_or_null_spec.rb +0 -15
  1920. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/finder_spec.rb +0 -260
  1921. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/force_encoding_spec.rb +0 -126
  1922. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/freeze_datasets_spec.rb +0 -31
  1923. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/graph_each_spec.rb +0 -113
  1924. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/hook_class_methods_spec.rb +0 -402
  1925. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/identifier_mangling_spec.rb +0 -201
  1926. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/implicit_subquery_spec.rb +0 -58
  1927. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/index_caching_spec.rb +0 -66
  1928. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/inflector_spec.rb +0 -183
  1929. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/input_transformer_spec.rb +0 -69
  1930. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/insert_conflict_spec.rb +0 -103
  1931. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/insert_returning_select_spec.rb +0 -72
  1932. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/instance_filters_spec.rb +0 -79
  1933. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/instance_hooks_spec.rb +0 -246
  1934. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/integer64_spec.rb +0 -22
  1935. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/inverted_subsets_spec.rb +0 -33
  1936. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/json_serializer_spec.rb +0 -346
  1937. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/lazy_attributes_spec.rb +0 -183
  1938. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/list_spec.rb +0 -291
  1939. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/looser_typecasting_spec.rb +0 -43
  1940. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/many_through_many_spec.rb +0 -2177
  1941. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/migration_spec.rb +0 -864
  1942. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/modification_detection_spec.rb +0 -93
  1943. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/mssql_optimistic_locking_spec.rb +0 -92
  1944. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/named_timezones_spec.rb +0 -218
  1945. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/nested_attributes_spec.rb +0 -815
  1946. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/null_dataset_spec.rb +0 -85
  1947. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/optimistic_locking_spec.rb +0 -127
  1948. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pagination_spec.rb +0 -116
  1949. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_array_associations_spec.rb +0 -802
  1950. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_array_ops_spec.rb +0 -144
  1951. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_array_spec.rb +0 -398
  1952. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_auto_constraint_validations_spec.rb +0 -209
  1953. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_enum_spec.rb +0 -118
  1954. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_extended_date_support_spec.rb +0 -126
  1955. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_hstore_ops_spec.rb +0 -238
  1956. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_hstore_spec.rb +0 -219
  1957. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_inet_ops_spec.rb +0 -102
  1958. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_inet_spec.rb +0 -72
  1959. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_interval_spec.rb +0 -103
  1960. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_json_ops_spec.rb +0 -356
  1961. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_json_spec.rb +0 -451
  1962. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_loose_count_spec.rb +0 -23
  1963. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_range_ops_spec.rb +0 -60
  1964. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_range_spec.rb +0 -600
  1965. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_row_ops_spec.rb +0 -61
  1966. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_row_plugin_spec.rb +0 -60
  1967. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_row_spec.rb +0 -363
  1968. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_static_cache_updater_spec.rb +0 -93
  1969. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pg_timestamptz_spec.rb +0 -17
  1970. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/prepared_statements_safe_spec.rb +0 -66
  1971. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/prepared_statements_spec.rb +0 -177
  1972. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/pretty_table_spec.rb +0 -123
  1973. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/query_spec.rb +0 -94
  1974. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/rcte_tree_spec.rb +0 -387
  1975. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/round_timestamps_spec.rb +0 -39
  1976. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/s_spec.rb +0 -60
  1977. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/schema_caching_spec.rb +0 -64
  1978. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/schema_dumper_spec.rb +0 -870
  1979. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/select_remove_spec.rb +0 -38
  1980. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/sequel_4_dataset_methods_spec.rb +0 -121
  1981. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/serialization_modification_detection_spec.rb +0 -98
  1982. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/serialization_spec.rb +0 -365
  1983. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/server_block_spec.rb +0 -135
  1984. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/server_logging_spec.rb +0 -45
  1985. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/sharding_spec.rb +0 -197
  1986. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/shared_caching_spec.rb +0 -151
  1987. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/single_table_inheritance_spec.rb +0 -347
  1988. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/singular_table_names_spec.rb +0 -22
  1989. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/skip_create_refresh_spec.rb +0 -18
  1990. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/spec_helper.rb +0 -70
  1991. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/split_array_nil_spec.rb +0 -24
  1992. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/split_values_spec.rb +0 -57
  1993. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/sql_comments_spec.rb +0 -33
  1994. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/sql_expr_spec.rb +0 -59
  1995. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/static_cache_cache_spec.rb +0 -35
  1996. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/static_cache_spec.rb +0 -471
  1997. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/string_agg_spec.rb +0 -90
  1998. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/string_date_time_spec.rb +0 -95
  1999. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/string_stripper_spec.rb +0 -68
  2000. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/subclasses_spec.rb +0 -79
  2001. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/subset_conditions_spec.rb +0 -38
  2002. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/symbol_aref_refinement_spec.rb +0 -28
  2003. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/symbol_as_refinement_spec.rb +0 -21
  2004. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/synchronize_sql_spec.rb +0 -124
  2005. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/table_select_spec.rb +0 -83
  2006. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/tactical_eager_loading_spec.rb +0 -402
  2007. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/thread_local_timezones_spec.rb +0 -67
  2008. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/throw_failures_spec.rb +0 -74
  2009. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/timestamps_spec.rb +0 -209
  2010. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/to_dot_spec.rb +0 -153
  2011. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/touch_spec.rb +0 -226
  2012. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/tree_spec.rb +0 -334
  2013. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/typecast_on_load_spec.rb +0 -86
  2014. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/unlimited_update_spec.rb +0 -21
  2015. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/update_or_create_spec.rb +0 -83
  2016. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/update_primary_key_spec.rb +0 -105
  2017. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/update_refresh_spec.rb +0 -59
  2018. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/uuid_spec.rb +0 -101
  2019. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/validate_associated_spec.rb +0 -52
  2020. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/validation_class_methods_spec.rb +0 -1040
  2021. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/validation_contexts_spec.rb +0 -31
  2022. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/validation_helpers_spec.rb +0 -525
  2023. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/whitelist_security_spec.rb +0 -157
  2024. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/extensions/xml_serializer_spec.rb +0 -213
  2025. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
  2026. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
  2027. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  2028. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  2029. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
  2030. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
  2031. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
  2032. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
  2033. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
  2034. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
  2035. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
  2036. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
  2037. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/double_migration/001_create_sessions.rb +0 -9
  2038. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/double_migration/002_create_nodes.rb +0 -19
  2039. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/double_migration/003_3_create_users.rb +0 -4
  2040. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
  2041. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
  2042. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  2043. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
  2044. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
  2045. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/empty_migration/001_create_sessions.rb +0 -9
  2046. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/empty_migration/002_create_nodes.rb +0 -0
  2047. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/empty_migration/003_3_create_users.rb +0 -4
  2048. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/integer_migrations/001_create_sessions.rb +0 -9
  2049. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/integer_migrations/002_create_nodes.rb +0 -9
  2050. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/integer_migrations/003_3_create_users.rb +0 -4
  2051. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  2052. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
  2053. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  2054. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
  2055. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  2056. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
  2057. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
  2058. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  2059. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  2060. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/reversible_migrations/001_reversible.rb +0 -5
  2061. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/reversible_migrations/002_reversible.rb +0 -5
  2062. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/reversible_migrations/003_reversible.rb +0 -5
  2063. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/reversible_migrations/004_reversible.rb +0 -5
  2064. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/reversible_migrations/005_reversible.rb +0 -10
  2065. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/reversible_migrations/006_reversible.rb +0 -10
  2066. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/reversible_migrations/007_reversible.rb +0 -10
  2067. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
  2068. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
  2069. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
  2070. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
  2071. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
  2072. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
  2073. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
  2074. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
  2075. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
  2076. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
  2077. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/guards_helper.rb +0 -59
  2078. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/integration/associations_test.rb +0 -2597
  2079. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/integration/database_test.rb +0 -113
  2080. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/integration/dataset_test.rb +0 -2037
  2081. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/integration/eager_loader_test.rb +0 -687
  2082. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/integration/migrator_test.rb +0 -262
  2083. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/integration/model_test.rb +0 -203
  2084. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/integration/plugin_test.rb +0 -2423
  2085. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/integration/prepared_statement_test.rb +0 -405
  2086. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/integration/schema_test.rb +0 -903
  2087. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/integration/spec_helper.rb +0 -71
  2088. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/integration/timezone_test.rb +0 -86
  2089. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/integration/transaction_test.rb +0 -603
  2090. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/integration/type_test.rb +0 -127
  2091. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/model/association_reflection_spec.rb +0 -803
  2092. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/model/associations_spec.rb +0 -4738
  2093. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/model/base_spec.rb +0 -875
  2094. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/model/class_dataset_methods_spec.rb +0 -146
  2095. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/model/dataset_methods_spec.rb +0 -198
  2096. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/model/eager_loading_spec.rb +0 -2377
  2097. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/model/hooks_spec.rb +0 -370
  2098. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/model/inflector_spec.rb +0 -26
  2099. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/model/model_spec.rb +0 -956
  2100. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/model/plugins_spec.rb +0 -429
  2101. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/model/record_spec.rb +0 -2118
  2102. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/model/spec_helper.rb +0 -46
  2103. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/model/validations_spec.rb +0 -220
  2104. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/model_no_assoc_spec.rb +0 -1
  2105. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/model_spec.rb +0 -1
  2106. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/plugin_spec.rb +0 -1
  2107. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/sequel_coverage.rb +0 -15
  2108. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/sequel_warning.rb +0 -5
  2109. data/vendor/bundle/ruby/2.7.0/gems/sequel-5.29.0/spec/spec_config.rb +0 -12
  2110. data/vendor/bundle/ruby/2.7.0/gems/tins-1.24.1/VERSION +0 -1
  2111. data/vendor/bundle/ruby/2.7.0/gems/tins-1.24.1/lib/tins/limited.rb +0 -38
  2112. data/vendor/bundle/ruby/2.7.0/gems/tins-1.24.1/lib/tins/version.rb +0 -8
  2113. data/vendor/bundle/ruby/2.7.0/gems/tins-1.24.1/tests/limited_test.rb +0 -21
  2114. data/vendor/bundle/ruby/2.7.0/gems/tins-1.24.1/tins.gemspec +0 -39
  2115. data/vendor/bundle/ruby/2.7.0/specifications/capybara-3.31.0.gemspec +0 -87
  2116. data/vendor/bundle/ruby/2.7.0/specifications/faraday-1.0.0.gemspec +0 -31
  2117. data/vendor/bundle/ruby/2.7.0/specifications/mime-types-data-3.2019.1009.gemspec +0 -50
  2118. data/vendor/bundle/ruby/2.7.0/specifications/nokogiri-1.10.8.gemspec +0 -68
  2119. data/vendor/bundle/ruby/2.7.0/specifications/octokit-4.16.0.gemspec +0 -35
  2120. data/vendor/bundle/ruby/2.7.0/specifications/power_assert-1.1.6.gemspec +0 -46
  2121. data/vendor/bundle/ruby/2.7.0/specifications/public_suffix-4.0.3.gemspec +0 -37
  2122. data/vendor/bundle/ruby/2.7.0/specifications/rspec-core-3.9.1.gemspec +0 -53
  2123. data/vendor/bundle/ruby/2.7.0/specifications/rspec-expectations-3.9.0.gemspec +0 -44
  2124. data/vendor/bundle/ruby/2.7.0/specifications/rspec-support-3.9.2.gemspec +0 -36
  2125. data/vendor/bundle/ruby/2.7.0/specifications/rubyzip-2.2.0.gemspec +0 -39
  2126. data/vendor/bundle/ruby/2.7.0/specifications/sequel-5.29.0.gemspec +0 -48
  2127. data/vendor/bundle/ruby/2.7.0/specifications/tins-1.24.1.gemspec +0 -40
@@ -1,291 +0,0 @@
1
- require_relative "spec_helper"
2
-
3
- describe "List plugin" do
4
- def klass(opts={})
5
- @db = DB
6
- c = Class.new(Sequel::Model(@db[:items]))
7
- c.class_eval do
8
- columns :id, :position, :scope_id, :pos
9
- plugin :list, opts
10
- self.use_transactions = false
11
- end
12
- c
13
- end
14
-
15
- before do
16
- @c = klass
17
- @o = @c.load(:id=>7, :position=>3)
18
- @sc = klass(:scope=>:scope_id)
19
- @so = @sc.load(:id=>7, :position=>3, :scope_id=>5)
20
- @tc = klass(:top=>0)
21
- @to = @tc.load(:id=>7, :position=>3)
22
- @db.reset
23
- end
24
-
25
- it "should default to using :position as the position field" do
26
- @c.position_field.must_equal :position
27
- @c.new.list_dataset.sql.must_equal 'SELECT * FROM items ORDER BY position'
28
- end
29
-
30
- it "should accept a :field option to modify the position field" do
31
- klass(:field=>:pos).position_field.must_equal :pos
32
- end
33
-
34
- it "should accept a :scope option with a symbol for a single scope column" do
35
- @sc.new(:scope_id=>4).list_dataset.sql.must_equal 'SELECT * FROM items WHERE (scope_id = 4) ORDER BY scope_id, position'
36
- end
37
-
38
- it "should accept a :scope option with an array of symbols for multiple scope columns" do
39
- ['SELECT * FROM items WHERE ((scope_id = 4) AND (pos = 3)) ORDER BY scope_id, pos, position',
40
- 'SELECT * FROM items WHERE ((pos = 3) AND (scope_id = 4)) ORDER BY scope_id, pos, position'].
41
- must_include(klass(:scope=>[:scope_id, :pos]).new(:scope_id=>4, :pos=>3).list_dataset.sql)
42
- end
43
-
44
- it "should accept a :scope option with a proc for a custom list scope" do
45
- klass(:scope=>proc{|o| o.model.dataset.filter(:active).filter(:scope_id=>o.scope_id)}).new(:scope_id=>4).list_dataset.sql.must_equal 'SELECT * FROM items WHERE (active AND (scope_id = 4)) ORDER BY position'
46
- end
47
-
48
- it "should default top of the list to 1" do
49
- @c.top_of_list.must_equal 1
50
- end
51
-
52
- it "should accept a :top option to set top of the list" do
53
- @tc.top_of_list.must_equal 0
54
- end
55
-
56
- it "should modify the order when using the plugin" do
57
- c = Class.new(Sequel::Model(:items))
58
- c.dataset.sql.must_equal 'SELECT * FROM items'
59
- c.plugin :list
60
- c.dataset.sql.must_equal 'SELECT * FROM items ORDER BY position'
61
- end
62
-
63
- it "should be able to access the position field as a class attribute" do
64
- @c.position_field.must_equal :position
65
- klass(:field=>:pos).position_field.must_equal :pos
66
- end
67
-
68
- it "should be able to access the scope proc as a class attribute" do
69
- @c.scope_proc.must_be_nil
70
- @sc.scope_proc[@sc.new(:scope_id=>4)].sql.must_equal 'SELECT * FROM items WHERE (scope_id = 4) ORDER BY scope_id, position'
71
- end
72
-
73
- it "should work correctly in subclasses" do
74
- c = Class.new(klass(:scope=>:scope_id))
75
- c.position_field.must_equal :position
76
- c.scope_proc[c.new(:scope_id=>4)].sql.must_equal 'SELECT * FROM items WHERE (scope_id = 4) ORDER BY scope_id, position'
77
- end
78
-
79
- it "should have at_position return the model object at the given position" do
80
- @c.dataset = @c.dataset.with_fetch(:id=>1, :position=>1)
81
- @o.at_position(10).must_equal @c.load(:id=>1, :position=>1)
82
- @sc.dataset = @sc.dataset.with_fetch(:id=>2, :position=>2, :scope_id=>5)
83
- @so.at_position(20).must_equal @sc.load(:id=>2, :position=>2, :scope_id=>5)
84
- @db.sqls.must_equal ["SELECT * FROM items WHERE (position = 10) ORDER BY position LIMIT 1",
85
- "SELECT * FROM items WHERE ((scope_id = 5) AND (position = 20)) ORDER BY scope_id, position LIMIT 1"]
86
- end
87
-
88
- it "should have position field set to max+1 when creating if not already set" do
89
- @c.dataset = @c.dataset.with_autoid(1).with_fetch([[{:pos=>nil}], [{:id=>1, :position=>1}], [{:pos=>1}], [{:id=>2, :position=>2}]])
90
- @c.create.values.must_equal(:id=>1, :position=>1)
91
- @c.create.values.must_equal(:id=>2, :position=>2)
92
- @db.sqls.must_equal ["SELECT max(position) AS max FROM items LIMIT 1",
93
- "INSERT INTO items (position) VALUES (1)",
94
- "SELECT * FROM items WHERE (id = 1) ORDER BY position LIMIT 1",
95
- "SELECT max(position) AS max FROM items LIMIT 1",
96
- "INSERT INTO items (position) VALUES (2)",
97
- "SELECT * FROM items WHERE (id = 2) ORDER BY position LIMIT 1"]
98
- end
99
-
100
- it "should have position field set to max+1 in scope when creating if not already set" do
101
- @sc.dataset = @sc.dataset.with_autoid(1).with_fetch([[{:pos=>nil}], [{:id=>1, :scope_id=>1, :position=>1}], [{:pos=>1}], [{:id=>2, :scope_id=>1, :position=>2}], [{:pos=>nil}], [{:id=>3, :scope_id=>2, :position=>1}]])
102
- @sc.create(:scope_id=>1).values.must_equal(:id=>1, :scope_id=>1, :position=>1)
103
- @sc.create(:scope_id=>1).values.must_equal(:id=>2, :scope_id=>1, :position=>2)
104
- @sc.create(:scope_id=>2).values.must_equal(:id=>3, :scope_id=>2, :position=>1)
105
- @db.sqls.must_equal ["SELECT max(position) AS max FROM items WHERE (scope_id = 1) LIMIT 1",
106
- 'INSERT INTO items (scope_id, position) VALUES (1, 1)',
107
- "SELECT * FROM items WHERE (id = 1) ORDER BY scope_id, position LIMIT 1",
108
- "SELECT max(position) AS max FROM items WHERE (scope_id = 1) LIMIT 1",
109
- 'INSERT INTO items (scope_id, position) VALUES (1, 2)',
110
- "SELECT * FROM items WHERE (id = 2) ORDER BY scope_id, position LIMIT 1",
111
- "SELECT max(position) AS max FROM items WHERE (scope_id = 2) LIMIT 1",
112
- 'INSERT INTO items (scope_id, position) VALUES (2, 1)',
113
- "SELECT * FROM items WHERE (id = 3) ORDER BY scope_id, position LIMIT 1"]
114
- end
115
-
116
- it "should update positions automatically on deletion" do
117
- @o.destroy
118
- @db.sqls.must_equal ["DELETE FROM items WHERE (id = 7)", "UPDATE items SET position = (position - 1) WHERE (position > 3)"]
119
- end
120
-
121
- it "should have last_position return the last position in the list" do
122
- @c.dataset = @c.dataset.with_fetch(:max=>10)
123
- @o.last_position.must_equal 10
124
- @sc.dataset = @sc.dataset.with_fetch(:max=>20)
125
- @so.last_position.must_equal 20
126
- @db.sqls.must_equal ["SELECT max(position) AS max FROM items LIMIT 1",
127
- "SELECT max(position) AS max FROM items WHERE (scope_id = 5) LIMIT 1"]
128
- end
129
-
130
- it "should have list_dataset return the model's dataset for non scoped lists" do
131
- @o.list_dataset.sql.must_equal 'SELECT * FROM items ORDER BY position'
132
- end
133
-
134
- it "should have list dataset return a scoped dataset for scoped lists" do
135
- @so.list_dataset.sql.must_equal 'SELECT * FROM items WHERE (scope_id = 5) ORDER BY scope_id, position'
136
- end
137
-
138
- it "should have move_down without an argument move down a single position" do
139
- @c.dataset = @c.dataset.with_fetch(:max=>10)
140
- @o.move_down.must_equal @o
141
- @o.position.must_equal 4
142
- @db.sqls.must_equal ["SELECT max(position) AS max FROM items LIMIT 1",
143
- "UPDATE items SET position = (position - 1) WHERE ((position >= 4) AND (position <= 4))",
144
- "UPDATE items SET position = 4 WHERE (id = 7)"]
145
- end
146
-
147
- it "should have move_down with an argument move down the given number of positions" do
148
- @c.dataset = @c.dataset.with_fetch(:max=>10)
149
- @o.move_down(3).must_equal @o
150
- @o.position.must_equal 6
151
- @db.sqls.must_equal ["SELECT max(position) AS max FROM items LIMIT 1",
152
- "UPDATE items SET position = (position - 1) WHERE ((position >= 4) AND (position <= 6))",
153
- "UPDATE items SET position = 6 WHERE (id = 7)"]
154
- end
155
-
156
- it "should have move_down with a negative argument move up the given number of positions" do
157
- @o.move_down(-1).must_equal @o
158
- @o.position.must_equal 2
159
- @db.sqls.must_equal ["UPDATE items SET position = (position + 1) WHERE ((position >= 2) AND (position < 3))",
160
- "UPDATE items SET position = 2 WHERE (id = 7)"]
161
- end
162
-
163
- it "should have move_to handle out of range targets" do
164
- @o.move_to(0)
165
- @o.position.must_equal 1
166
- @c.dataset = @c.dataset.with_fetch(:max=>10)
167
- @o.move_to(11)
168
- @o.position.must_equal 10
169
- end
170
-
171
- it "should have move_to use a transaction if the instance is configured to use transactions" do
172
- @o.use_transactions = true
173
- @o.move_to(2)
174
- @db.sqls.must_equal ["BEGIN",
175
- "UPDATE items SET position = (position + 1) WHERE ((position >= 2) AND (position < 3))",
176
- "UPDATE items SET position = 2 WHERE (id = 7)",
177
- "COMMIT"]
178
- end
179
-
180
- it "should have move_to do nothing if the target position is the same as the current position" do
181
- @o.use_transactions = true
182
- @o.move_to(@o.position).must_equal @o
183
- @o.position.must_equal 3
184
- @db.sqls.must_equal []
185
- end
186
-
187
- it "should have move to shift entries correctly between current and target if moving up" do
188
- @o.move_to(2)
189
- @db.sqls.first.must_equal "UPDATE items SET position = (position + 1) WHERE ((position >= 2) AND (position < 3))"
190
- end
191
-
192
- it "should have move to shift entries correctly between current and target if moving down" do
193
- @c.dataset = @c.dataset.with_fetch(:max=>10)
194
- @o.move_to(4)
195
- @db.sqls[1].must_equal "UPDATE items SET position = (position - 1) WHERE ((position >= 4) AND (position <= 4))"
196
- end
197
-
198
- it "should have move_to_bottom move the item to the last position" do
199
- @c.dataset = @c.dataset.with_fetch(:max=>10)
200
- @o.move_to_bottom
201
- @db.sqls.must_equal ["SELECT max(position) AS max FROM items LIMIT 1",
202
- "UPDATE items SET position = (position - 1) WHERE ((position >= 4) AND (position <= 10))",
203
- "UPDATE items SET position = 10 WHERE (id = 7)"]
204
- end
205
-
206
- it "should have move_to_top move the item to the first position" do
207
- @o.move_to_top
208
- @db.sqls.must_equal ["UPDATE items SET position = (position + 1) WHERE ((position >= 1) AND (position < 3))",
209
- "UPDATE items SET position = 1 WHERE (id = 7)"]
210
- end
211
-
212
- it "should have move_to_top use position 0 when :top_of_list is 0" do
213
- @to.move_to_top
214
- @db.sqls.must_equal ["UPDATE items SET position = (position + 1) WHERE ((position >= 0) AND (position < 3))",
215
- "UPDATE items SET position = 0 WHERE (id = 7)"]
216
- end
217
-
218
- it "should have move_up without an argument move up a single position" do
219
- @o.move_up.must_equal @o
220
- @o.position.must_equal 2
221
- @db.sqls.must_equal ["UPDATE items SET position = (position + 1) WHERE ((position >= 2) AND (position < 3))",
222
- "UPDATE items SET position = 2 WHERE (id = 7)"]
223
- end
224
-
225
- it "should have move_up with an argument move up the given number of positions" do
226
- @o.move_up(2).must_equal @o
227
- @o.position.must_equal 1
228
- @db.sqls.must_equal ["UPDATE items SET position = (position + 1) WHERE ((position >= 1) AND (position < 3))",
229
- "UPDATE items SET position = 1 WHERE (id = 7)"]
230
- end
231
-
232
- it "should have move_up with a negative argument move down the given number of positions" do
233
- @c.dataset = @c.dataset.with_fetch(:max=>10)
234
- @o.move_up(-1).must_equal @o
235
- @o.position.must_equal 4
236
- @db.sqls.must_equal ["SELECT max(position) AS max FROM items LIMIT 1",
237
- "UPDATE items SET position = (position - 1) WHERE ((position >= 4) AND (position <= 4))",
238
- "UPDATE items SET position = 4 WHERE (id = 7)"]
239
- end
240
-
241
- it "should have next return the next entry in the list if not given an argument" do
242
- @c.dataset = @c.dataset.with_fetch(:id=>9, :position=>4)
243
- @o.next.must_equal @c.load(:id=>9, :position=>4)
244
- @db.sqls.must_equal ["SELECT * FROM items WHERE (position = 4) ORDER BY position LIMIT 1"]
245
- end
246
-
247
- it "should have next return the entry the given number of positions below the instance if given an argument" do
248
- @c.dataset = @c.dataset.with_fetch(:id=>9, :position=>5)
249
- @o.next(2).must_equal @c.load(:id=>9, :position=>5)
250
- @db.sqls.must_equal ["SELECT * FROM items WHERE (position = 5) ORDER BY position LIMIT 1"]
251
- end
252
-
253
- it "should have next return a previous entry if given a negative argument" do
254
- @c.dataset = @c.dataset.with_fetch(:id=>9, :position=>2)
255
- @o.next(-1).must_equal @c.load(:id=>9, :position=>2)
256
- @db.sqls.must_equal ["SELECT * FROM items WHERE (position = 2) ORDER BY position LIMIT 1"]
257
- end
258
-
259
- it "should have position_value return the value of the position field" do
260
- @o.position_value.must_equal 3
261
- end
262
-
263
- it "should have prev return the previous entry in the list if not given an argument" do
264
- @c.dataset = @c.dataset.with_fetch(:id=>9, :position=>2)
265
- @o.prev.must_equal @c.load(:id=>9, :position=>2)
266
- @db.sqls.must_equal ["SELECT * FROM items WHERE (position = 2) ORDER BY position LIMIT 1"]
267
- end
268
-
269
- it "should have prev return the entry the given number of positions above the instance if given an argument" do
270
- @c.dataset = @c.dataset.with_fetch(:id=>9, :position=>1)
271
- @o.prev(2).must_equal @c.load(:id=>9, :position=>1)
272
- @db.sqls.must_equal ["SELECT * FROM items WHERE (position = 1) ORDER BY position LIMIT 1"]
273
- end
274
-
275
- it "should have prev return a following entry if given a negative argument" do
276
- @c.dataset = @c.dataset.with_fetch(:id=>9, :position=>4)
277
- @o.prev(-1).must_equal @c.load(:id=>9, :position=>4)
278
- @db.sqls.must_equal ["SELECT * FROM items WHERE (position = 4) ORDER BY position LIMIT 1"]
279
- end
280
-
281
- it "should work correctly with validation on position" do
282
- @c.class_eval do
283
- def validate
284
- super
285
- errors.add(:position, "not set") unless position
286
- end
287
- end
288
- @c.create
289
- @db.sqls.must_equal ["SELECT max(position) AS max FROM items LIMIT 1", "INSERT INTO items (position) VALUES (2)", "SELECT * FROM items WHERE (id = 10) ORDER BY position LIMIT 1"]
290
- end
291
- end
@@ -1,43 +0,0 @@
1
- require_relative "spec_helper"
2
-
3
- describe "LooserTypecasting Extension" do
4
- before do
5
- @db = Sequel.mock
6
- def @db.supports_schema_parsing?() true end
7
- def @db.schema(*args)
8
- [[:id, {}], [:z, {:type=>:float}], [:b, {:type=>:integer}], [:d, {:type=>:decimal}], [:s, {:type=>:string}]]
9
- end
10
- @c = Class.new(Sequel::Model(@db[:items]))
11
- @db.extension(:looser_typecasting)
12
- @c.instance_eval do
13
- @columns = [:id, :b, :z, :d, :s]
14
- def columns; @columns; end
15
- end
16
- end
17
-
18
- it "should not raise errors for invalid strings in integer columns" do
19
- @c.new(:b=>'a').b.must_equal 0
20
- @c.new(:b=>'a').b.must_be_kind_of(Integer)
21
- end
22
-
23
- it "should not raise errors for invalid strings in float columns" do
24
- @c.new(:z=>'a').z.must_equal 0.0
25
- @c.new(:z=>'a').z.must_be_kind_of(Float)
26
- end
27
-
28
- it "should not raise errors for hash or array input to string columns" do
29
- @c.new(:s=>'a').s.must_equal 'a'
30
- @c.new(:s=>[]).s.must_be_kind_of(String)
31
- @c.new(:s=>{}).s.must_be_kind_of(String)
32
- end
33
-
34
- it "should not raise errors for invalid strings in decimal columns" do
35
- @c.new(:d=>'a').d.must_equal 0.0
36
- @c.new(:d=>'a').d.must_be_kind_of(BigDecimal)
37
- end
38
-
39
- it "should not affect conversions of other types in decimal columns" do
40
- @c.new(:d=>1).d.must_equal 1
41
- @c.new(:d=>1).d.must_be_kind_of(BigDecimal)
42
- end
43
- end
@@ -1,2177 +0,0 @@
1
- require_relative "spec_helper"
2
-
3
- describe Sequel::Model, "many_through_many" do
4
- before do
5
- class ::Artist < Sequel::Model
6
- attr_accessor :yyy
7
- columns :id
8
- plugin :many_through_many
9
- end
10
- class ::Tag < Sequel::Model
11
- columns :id, :h1, :h2
12
- end
13
- @c1 = Artist
14
- @c2 = Tag
15
- @dataset = @c2.dataset = @c2.dataset.with_fetch(:id=>1)
16
- DB.reset
17
- end
18
- after do
19
- Object.send(:remove_const, :Artist)
20
- Object.send(:remove_const, :Tag)
21
- end
22
-
23
- it "should raise an error if current class does not have a primary key, and :left_primary_key is not specified" do
24
- @c1.no_primary_key
25
- proc{@c1.many_through_many :tags, :through=>[[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]}.must_raise(Sequel::Error)
26
- DB.sqls.must_equal []
27
- end
28
-
29
- it "should raise an error if associated class does not have a primary key, and :right_primary_key is not specified" do
30
- @c2.no_primary_key
31
- @c1.many_through_many :tags, :through=>[[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
32
- n = @c1.load(:id => 1234)
33
- proc{n.tags}.must_raise(Sequel::Error)
34
- DB.sqls.must_equal []
35
- end
36
-
37
- it "should populate :key_hash and :id_map option correctly for custom eager loaders" do
38
- khs = []
39
- pr = proc{|h| khs << [h[:key_hash], h[:id_map]]}
40
- @c1.many_through_many :tags, :through=>[[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :eager_loader=>pr
41
- @c1.eager(:tags).all
42
- khs.must_equal [[{:id=>{1=>[Artist.load(:x=>1, :id=>1)]}}, {1=>[Artist.load(:x=>1, :id=>1)]}]]
43
-
44
- khs.clear
45
- @c1.many_through_many :tags, :through=>[[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :left_primary_key=>:id, :left_primary_key_column=>:i, :eager_loader=>pr
46
- @c1.eager(:tags).all
47
- khs.must_equal [[{:id=>{1=>[Artist.load(:x=>1, :id=>1)]}}, {1=>[Artist.load(:x=>1, :id=>1)]}]]
48
- end
49
-
50
- it "should support using a custom :left_primary_key option when eager loading many_to_many associations" do
51
- @c1.send(:define_method, :id3){id*3}
52
- @c1.dataset = @c1.dataset.with_fetch(:id=>1)
53
- @c2.dataset = @c2.dataset.with_fetch(:id=>4, :x_foreign_key_x=>3)
54
- @c1.many_through_many :tags, :through=>[[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :left_primary_key=>:id3
55
- a = @c1.eager(:tags).all
56
- a.must_equal [@c1.load(:id => 1)]
57
- DB.sqls.must_equal ['SELECT * FROM artists', "SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (3))"]
58
- a.first.tags.must_equal [@c2.load(:id=>4)]
59
- DB.sqls.must_equal []
60
- end
61
-
62
- it "should handle a :predicate_key option to change the SQL used in the lookup" do
63
- @c1.dataset = @c1.dataset.with_fetch(:id=>1)
64
- @c2.dataset = @c2.dataset.with_fetch(:id=>4, :x_foreign_key_x=>1)
65
- @c1.many_through_many :tags, :through=>[[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :predicate_key=>(Sequel[:albums_artists][:artist_id] / 3)
66
- a = @c1.eager(:tags).all
67
- a.must_equal [@c1.load(:id => 1)]
68
- DB.sqls.must_equal ['SELECT * FROM artists', "SELECT tags.*, (albums_artists.artist_id / 3) AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((albums_artists.artist_id / 3) IN (1))"]
69
- a.first.tags.must_equal [@c2.load(:id=>4)]
70
- end
71
-
72
- it "should handle schema qualified tables" do
73
- @c1.many_through_many :tags, :through=>[[Sequel[:myschema][:albums_artists], :artist_id, :album_id], [Sequel[:myschema][:albums], :id, :id], [Sequel[:myschema][:albums_tags], :album_id, :tag_id]]
74
- @c1.load(:id=>1).tags_dataset.sql.must_equal "SELECT tags.* FROM tags INNER JOIN myschema.albums_tags ON (myschema.albums_tags.tag_id = tags.id) INNER JOIN myschema.albums ON (myschema.albums.id = myschema.albums_tags.album_id) INNER JOIN myschema.albums_artists ON (myschema.albums_artists.album_id = myschema.albums.id) WHERE (myschema.albums_artists.artist_id = 1)"
75
-
76
- @c1.dataset = @c1.dataset.with_fetch(:id=>1)
77
- @c2.dataset = @c2.dataset.with_fetch(:id=>4, :x_foreign_key_x=>1)
78
- a = @c1.eager(:tags).all
79
- a.must_equal [@c1.load(:id => 1)]
80
- DB.sqls.must_equal ['SELECT * FROM artists', "SELECT tags.*, myschema.albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN myschema.albums_tags ON (myschema.albums_tags.tag_id = tags.id) INNER JOIN myschema.albums ON (myschema.albums.id = myschema.albums_tags.album_id) INNER JOIN myschema.albums_artists ON (myschema.albums_artists.album_id = myschema.albums.id) WHERE (myschema.albums_artists.artist_id IN (1))"]
81
-
82
- Tag.dataset.columns(:id, :h1, :h2)
83
- @c1.eager_graph(:tags).sql.must_equal 'SELECT artists.id, tags.id AS tags_id, tags.h1, tags.h2 FROM artists LEFT OUTER JOIN myschema.albums_artists AS albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN myschema.albums AS albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN myschema.albums_tags AS albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id)'
84
- end
85
-
86
- with_symbol_splitting "should handle schema qualified table symbols" do
87
- @c1.many_through_many :tags, :through=>[[:myschema__albums_artists, :artist_id, :album_id], [:myschema__albums, :id, :id], [:myschema__albums_tags, :album_id, :tag_id]]
88
- @c1.load(:id=>1).tags_dataset.sql.must_equal "SELECT tags.* FROM tags INNER JOIN myschema.albums_tags ON (myschema.albums_tags.tag_id = tags.id) INNER JOIN myschema.albums ON (myschema.albums.id = myschema.albums_tags.album_id) INNER JOIN myschema.albums_artists ON (myschema.albums_artists.album_id = myschema.albums.id) WHERE (myschema.albums_artists.artist_id = 1)"
89
-
90
- @c1.dataset = @c1.dataset.with_fetch(:id=>1)
91
- @c2.dataset = @c2.dataset.with_fetch(:id=>4, :x_foreign_key_x=>1)
92
- a = @c1.eager(:tags).all
93
- a.must_equal [@c1.load(:id => 1)]
94
- DB.sqls.must_equal ['SELECT * FROM artists', "SELECT tags.*, myschema.albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN myschema.albums_tags ON (myschema.albums_tags.tag_id = tags.id) INNER JOIN myschema.albums ON (myschema.albums.id = myschema.albums_tags.album_id) INNER JOIN myschema.albums_artists ON (myschema.albums_artists.album_id = myschema.albums.id) WHERE (myschema.albums_artists.artist_id IN (1))"]
95
-
96
- Tag.dataset.columns(:id, :h1, :h2)
97
- @c1.eager_graph(:tags).sql.must_equal 'SELECT artists.id, tags.id AS tags_id, tags.h1, tags.h2 FROM artists LEFT OUTER JOIN myschema.albums_artists AS albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN myschema.albums AS albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN myschema.albums_tags AS albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id)'
98
- end
99
-
100
- it "should default to associating to other models in the same scope" do
101
- begin
102
- class ::AssociationModuleTest
103
- class Artist < Sequel::Model
104
- plugin :many_through_many
105
- many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
106
- end
107
- class Tag < Sequel::Model
108
- end
109
- end
110
-
111
- ::AssociationModuleTest::Artist.association_reflection(:tags).associated_class.must_equal ::AssociationModuleTest::Tag
112
- ensure
113
- Object.send(:remove_const, :AssociationModuleTest)
114
- end
115
- end
116
-
117
- it "should raise an error if in invalid form of through is used" do
118
- proc{@c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id]]}.must_raise(Sequel::Error)
119
- proc{@c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], {:table=>:album_tags, :left=>:album_id}]}.must_raise(Sequel::Error)
120
- proc{@c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], :album_tags]}.must_raise(Sequel::Error)
121
- end
122
-
123
- it "should allow only two arguments with the :through option" do
124
- @c1.many_through_many :tags, :through=>[[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
125
- n = @c1.load(:id => 1234)
126
- n.tags_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234)'
127
- n.tags.must_equal [@c2.load(:id=>1)]
128
- end
129
-
130
- it "should be clonable" do
131
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
132
- @c1.many_through_many :other_tags, :clone=>:tags
133
- n = @c1.load(:id => 1234)
134
- n.other_tags_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234)'
135
- n.tags.must_equal [@c2.load(:id=>1)]
136
- end
137
-
138
- it "should use join tables given" do
139
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
140
- n = @c1.load(:id => 1234)
141
- n.tags_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234)'
142
- n.tags.must_equal [@c2.load(:id=>1)]
143
- end
144
-
145
- it "should handle multiple aliasing of tables" do
146
- begin
147
- class ::Album < Sequel::Model
148
- end
149
- @c1.many_through_many :albums, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_artists, :album_id, :artist_id], [:artists, :id, :id], [:albums_artists, :artist_id, :album_id]]
150
- n = @c1.load(:id => 1234)
151
- n.albums_dataset.sql.must_equal 'SELECT albums.* FROM albums INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) INNER JOIN artists ON (artists.id = albums_artists.artist_id) INNER JOIN albums_artists AS albums_artists_0 ON (albums_artists_0.artist_id = artists.id) INNER JOIN albums AS albums_0 ON (albums_0.id = albums_artists_0.album_id) INNER JOIN albums_artists AS albums_artists_1 ON (albums_artists_1.album_id = albums_0.id) WHERE (albums_artists_1.artist_id = 1234)'
152
- n.albums.must_equal [Album.load(:id=>1, :x=>1)]
153
- ensure
154
- Object.send(:remove_const, :Album)
155
- end
156
- end
157
-
158
- it "should use explicit class if given" do
159
- @c1.many_through_many :albums_tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag
160
- n = @c1.load(:id => 1234)
161
- n.albums_tags_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234)'
162
- n.albums_tags.must_equal [@c2.load(:id=>1)]
163
- end
164
-
165
- it "should accept :left_primary_key and :right_primary_key option for primary keys to use in current and associated table" do
166
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :right_primary_key=>:tag_id, :left_primary_key=>:yyy
167
- n = @c1.load(:id => 1234)
168
- n.yyy = 85
169
- n.tags_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.tag_id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 85)'
170
- n.tags.must_equal [@c2.load(:id=>1)]
171
- end
172
-
173
- it "should handle composite keys" do
174
- @c1.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
175
- n = @c1.load(:id => 1234)
176
- n.yyy = 85
177
- n.tags_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((albums_artists.b1 = 1234) AND (albums_artists.b2 = 85))'
178
- n.tags.must_equal [@c2.load(:id=>1)]
179
- end
180
-
181
- it "should allowing filtering by many_through_many associations" do
182
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
183
- @c1.filter(:tags=>@c2.load(:id=>1234)).sql.must_equal 'SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM albums_artists INNER JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE ((albums_tags.tag_id = 1234) AND (albums_artists.artist_id IS NOT NULL))))'
184
- end
185
-
186
- it "should allowing filtering by many_through_many associations with a single through table" do
187
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id]]
188
- @c1.filter(:tags=>@c2.load(:id=>1234)).sql.must_equal 'SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM albums_artists WHERE ((albums_artists.album_id = 1234) AND (albums_artists.artist_id IS NOT NULL))))'
189
- end
190
-
191
- it "should allowing filtering by many_through_many associations with aliased tables" do
192
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums_artists, :id, :id], [:albums_artists, :album_id, :tag_id]]
193
- @c1.filter(:tags=>@c2.load(:id=>1234)).sql.must_equal 'SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM albums_artists INNER JOIN albums_artists AS albums_artists_0 ON (albums_artists_0.id = albums_artists.album_id) INNER JOIN albums_artists AS albums_artists_1 ON (albums_artists_1.album_id = albums_artists_0.id) WHERE ((albums_artists_1.tag_id = 1234) AND (albums_artists.artist_id IS NOT NULL))))'
194
- end
195
-
196
- it "should allowing filtering by many_through_many associations with composite keys" do
197
- @c1.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
198
- @c1.filter(:tags=>@c2.load(:h1=>1234, :h2=>85)).sql.must_equal 'SELECT * FROM artists WHERE ((artists.id, artists.yyy) IN (SELECT albums_artists.b1, albums_artists.b2 FROM albums_artists INNER JOIN albums ON ((albums.d1 = albums_artists.c1) AND (albums.d2 = albums_artists.c2)) INNER JOIN albums_tags ON ((albums_tags.f1 = albums.e1) AND (albums_tags.f2 = albums.e2)) WHERE ((albums_tags.g1 = 1234) AND (albums_tags.g2 = 85) AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL))))'
199
- end
200
-
201
- it "should allowing filtering by many_through_many associations with :conditions" do
202
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:name=>'A'}
203
- @c1.filter(:tags=>@c2.load(:id=>1234)).sql.must_equal "SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((name = 'A') AND (albums_artists.artist_id IS NOT NULL) AND (tags.id = 1234))))"
204
- end
205
-
206
- it "should allowing filtering by many_through_many associations with :conditions with a single through table" do
207
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id]], :conditions=>{:name=>'A'}
208
- @c1.filter(:tags=>@c2.load(:id=>1234)).sql.must_equal "SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_artists ON (albums_artists.album_id = tags.id) WHERE ((name = 'A') AND (albums_artists.artist_id IS NOT NULL) AND (tags.id = 1234))))"
209
- end
210
-
211
- it "should allowing filtering by many_through_many associations with :conditions and composite keys" do
212
- @c1.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy], :conditions=>{:name=>'A'}
213
- @c1.filter(:tags=>@c2.load(:id=>1, :h1=>1234, :h2=>85)).sql.must_equal "SELECT * FROM artists WHERE ((artists.id, artists.yyy) IN (SELECT albums_artists.b1, albums_artists.b2 FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((name = 'A') AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL) AND (tags.id = 1))))"
214
- end
215
-
216
- it "should allowing filtering by many_through_many associations with :limit" do
217
- @c2.dataset = @c2.dataset.with_extend{def supports_window_functions?; true end}
218
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :limit=>10
219
- @c1.filter(:tags=>@c2.load(:id=>1234)).sql.must_equal 'SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((albums_artists.artist_id IS NOT NULL) AND ((albums_artists.artist_id, tags.id) IN (SELECT b, c FROM (SELECT albums_artists.artist_id AS b, tags.id AS c, row_number() OVER (PARTITION BY albums_artists.artist_id) AS x_sequel_row_number_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id)) AS t1 WHERE (x_sequel_row_number_x <= 10))) AND (tags.id = 1234))))'
220
- end
221
-
222
- it "should allowing filtering by many_through_many associations with :limit and composite keys" do
223
- @c2.dataset = @c2.dataset.with_extend{def supports_window_functions?; true end}
224
- @c1.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy], :limit=>10
225
- @c1.filter(:tags=>@c2.load(:id=>1, :h1=>1234, :h2=>85)).sql.must_equal 'SELECT * FROM artists WHERE ((artists.id, artists.yyy) IN (SELECT albums_artists.b1, albums_artists.b2 FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL) AND ((albums_artists.b1, albums_artists.b2, tags.id) IN (SELECT b, c, d FROM (SELECT albums_artists.b1 AS b, albums_artists.b2 AS c, tags.id AS d, row_number() OVER (PARTITION BY albums_artists.b1, albums_artists.b2) AS x_sequel_row_number_x FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2))) AS t1 WHERE (x_sequel_row_number_x <= 10))) AND (tags.id = 1))))'
226
- end
227
-
228
- it "should allowing filtering by many_through_many associations with :limit and :conditions" do
229
- @c2.dataset = @c2.dataset.with_extend{def supports_window_functions?; true end}
230
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:name=>'A'}, :limit=>10
231
- @c1.filter(:tags=>@c2.load(:id=>1234)).sql.must_equal "SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((name = 'A') AND (albums_artists.artist_id IS NOT NULL) AND ((albums_artists.artist_id, tags.id) IN (SELECT b, c FROM (SELECT albums_artists.artist_id AS b, tags.id AS c, row_number() OVER (PARTITION BY albums_artists.artist_id) AS x_sequel_row_number_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (name = 'A')) AS t1 WHERE (x_sequel_row_number_x <= 10))) AND (tags.id = 1234))))"
232
- end
233
-
234
- it "should allowing filtering by many_through_many associations with :limit and :conditions and composite keys" do
235
- @c2.dataset = @c2.dataset.with_extend{def supports_window_functions?; true end}
236
- @c1.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy], :conditions=>{:name=>'A'}, :limit=>10
237
- @c1.filter(:tags=>@c2.load(:id=>1, :h1=>1234, :h2=>85)).sql.must_equal "SELECT * FROM artists WHERE ((artists.id, artists.yyy) IN (SELECT albums_artists.b1, albums_artists.b2 FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((name = 'A') AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL) AND ((albums_artists.b1, albums_artists.b2, tags.id) IN (SELECT b, c, d FROM (SELECT albums_artists.b1 AS b, albums_artists.b2 AS c, tags.id AS d, row_number() OVER (PARTITION BY albums_artists.b1, albums_artists.b2) AS x_sequel_row_number_x FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE (name = 'A')) AS t1 WHERE (x_sequel_row_number_x <= 10))) AND (tags.id = 1))))"
238
- end
239
-
240
- it "should allowing excluding by many_through_many associations" do
241
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
242
- @c1.exclude(:tags=>@c2.load(:id=>1234)).sql.must_equal 'SELECT * FROM artists WHERE ((artists.id NOT IN (SELECT albums_artists.artist_id FROM albums_artists INNER JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE ((albums_tags.tag_id = 1234) AND (albums_artists.artist_id IS NOT NULL)))) OR (artists.id IS NULL))'
243
- end
244
-
245
- it "should allowing excluding by many_through_many associations with composite keys" do
246
- @c1.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
247
- @c1.exclude(:tags=>@c2.load(:h1=>1234, :h2=>85)).sql.must_equal 'SELECT * FROM artists WHERE (((artists.id, artists.yyy) NOT IN (SELECT albums_artists.b1, albums_artists.b2 FROM albums_artists INNER JOIN albums ON ((albums.d1 = albums_artists.c1) AND (albums.d2 = albums_artists.c2)) INNER JOIN albums_tags ON ((albums_tags.f1 = albums.e1) AND (albums_tags.f2 = albums.e2)) WHERE ((albums_tags.g1 = 1234) AND (albums_tags.g2 = 85) AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL)))) OR (artists.id IS NULL) OR (artists.yyy IS NULL))'
248
- end
249
-
250
- it "should allowing excluding by many_through_many associations with :conditions" do
251
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:name=>'A'}
252
- @c1.exclude(:tags=>@c2.load(:id=>1234)).sql.must_equal "SELECT * FROM artists WHERE ((artists.id NOT IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((name = 'A') AND (albums_artists.artist_id IS NOT NULL) AND (tags.id = 1234)))) OR (artists.id IS NULL))"
253
- end
254
-
255
- it "should allowing excluding by many_through_many associations with :conditions and composite keys" do
256
- @c1.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy], :conditions=>{:name=>'A'}
257
- @c1.exclude(:tags=>@c2.load(:id=>1, :h1=>1234, :h2=>85)).sql.must_equal "SELECT * FROM artists WHERE (((artists.id, artists.yyy) NOT IN (SELECT albums_artists.b1, albums_artists.b2 FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((name = 'A') AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL) AND (tags.id = 1)))) OR (artists.id IS NULL) OR (artists.yyy IS NULL))"
258
- end
259
-
260
- it "should allowing filtering by multiple many_through_many associations" do
261
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
262
- @c1.filter(:tags=>[@c2.load(:id=>1234), @c2.load(:id=>2345)]).sql.must_equal 'SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM albums_artists INNER JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE ((albums_tags.tag_id IN (1234, 2345)) AND (albums_artists.artist_id IS NOT NULL))))'
263
- end
264
-
265
- it "should allowing filtering by multiple many_through_many associations with composite keys" do
266
- @c1.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
267
- @c1.filter(:tags=>[@c2.load(:h1=>1234, :h2=>85), @c2.load(:h1=>2345, :h2=>95)]).sql.must_equal 'SELECT * FROM artists WHERE ((artists.id, artists.yyy) IN (SELECT albums_artists.b1, albums_artists.b2 FROM albums_artists INNER JOIN albums ON ((albums.d1 = albums_artists.c1) AND (albums.d2 = albums_artists.c2)) INNER JOIN albums_tags ON ((albums_tags.f1 = albums.e1) AND (albums_tags.f2 = albums.e2)) WHERE (((albums_tags.g1, albums_tags.g2) IN ((1234, 85), (2345, 95))) AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL))))'
268
- end
269
-
270
- it "should allowing filtering by multiple many_through_many associations with :conditions" do
271
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:name=>'A'}
272
- @c1.filter(:tags=>[@c2.load(:id=>1234), @c2.load(:id=>2345)]).sql.must_equal "SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((name = 'A') AND (albums_artists.artist_id IS NOT NULL) AND (tags.id IN (1234, 2345)))))"
273
- end
274
-
275
- it "should allowing filtering by multiple many_through_many associations with :conditions and composite keys" do
276
- @c1.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy], :conditions=>{:name=>'A'}
277
- @c1.filter(:tags=>[@c2.load(:id=>1, :h1=>1234, :h2=>85), @c2.load(:id=>2, :h1=>2345, :h2=>95)]).sql.must_equal "SELECT * FROM artists WHERE ((artists.id, artists.yyy) IN (SELECT albums_artists.b1, albums_artists.b2 FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((name = 'A') AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL) AND (tags.id IN (1, 2)))))"
278
- end
279
-
280
- it "should allowing excluding by multiple many_through_many associations" do
281
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
282
- @c1.exclude(:tags=>[@c2.load(:id=>1234), @c2.load(:id=>2345)]).sql.must_equal 'SELECT * FROM artists WHERE ((artists.id NOT IN (SELECT albums_artists.artist_id FROM albums_artists INNER JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE ((albums_tags.tag_id IN (1234, 2345)) AND (albums_artists.artist_id IS NOT NULL)))) OR (artists.id IS NULL))'
283
- end
284
-
285
- it "should allowing excluding by multiple many_through_many associations with composite keys" do
286
- @c1.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
287
- @c1.exclude(:tags=>[@c2.load(:h1=>1234, :h2=>85), @c2.load(:h1=>2345, :h2=>95)]).sql.must_equal 'SELECT * FROM artists WHERE (((artists.id, artists.yyy) NOT IN (SELECT albums_artists.b1, albums_artists.b2 FROM albums_artists INNER JOIN albums ON ((albums.d1 = albums_artists.c1) AND (albums.d2 = albums_artists.c2)) INNER JOIN albums_tags ON ((albums_tags.f1 = albums.e1) AND (albums_tags.f2 = albums.e2)) WHERE (((albums_tags.g1, albums_tags.g2) IN ((1234, 85), (2345, 95))) AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL)))) OR (artists.id IS NULL) OR (artists.yyy IS NULL))'
288
- end
289
-
290
- it "should allowing excluding by multiple many_through_many associations with :conditions" do
291
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:name=>'A'}
292
- @c1.exclude(:tags=>[@c2.load(:id=>1234), @c2.load(:id=>2345)]).sql.must_equal "SELECT * FROM artists WHERE ((artists.id NOT IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((name = 'A') AND (albums_artists.artist_id IS NOT NULL) AND (tags.id IN (1234, 2345))))) OR (artists.id IS NULL))"
293
- end
294
-
295
- it "should allowing excluding by multiple many_through_many associations with :conditions and composite keys" do
296
- @c1.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy], :conditions=>{:name=>'A'}
297
- @c1.exclude(:tags=>[@c2.load(:id=>1, :h1=>1234, :h2=>85), @c2.load(:id=>2, :h1=>2345, :h2=>95)]).sql.must_equal "SELECT * FROM artists WHERE (((artists.id, artists.yyy) NOT IN (SELECT albums_artists.b1, albums_artists.b2 FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((name = 'A') AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL) AND (tags.id IN (1, 2))))) OR (artists.id IS NULL) OR (artists.yyy IS NULL))"
298
- end
299
-
300
- it "should allowing filtering/excluding many_through_many associations with NULL values" do
301
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
302
- @c1.filter(:tags=>@c2.new).sql.must_equal 'SELECT * FROM artists WHERE \'f\''
303
- @c1.exclude(:tags=>@c2.new).sql.must_equal 'SELECT * FROM artists WHERE \'t\''
304
- end
305
-
306
- it "should allowing filtering by many_through_many association datasets" do
307
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
308
- @c1.filter(:tags=>@c2.filter(:x=>1)).sql.must_equal 'SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM albums_artists INNER JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE ((albums_tags.tag_id IN (SELECT tags.id FROM tags WHERE ((x = 1) AND (tags.id IS NOT NULL)))) AND (albums_artists.artist_id IS NOT NULL))))'
309
- end
310
-
311
- it "should allowing filtering by many_through_many association datasets with composite keys" do
312
- @c1.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
313
- @c1.filter(:tags=>@c2.filter(:x=>1)).sql.must_equal 'SELECT * FROM artists WHERE ((artists.id, artists.yyy) IN (SELECT albums_artists.b1, albums_artists.b2 FROM albums_artists INNER JOIN albums ON ((albums.d1 = albums_artists.c1) AND (albums.d2 = albums_artists.c2)) INNER JOIN albums_tags ON ((albums_tags.f1 = albums.e1) AND (albums_tags.f2 = albums.e2)) WHERE (((albums_tags.g1, albums_tags.g2) IN (SELECT tags.h1, tags.h2 FROM tags WHERE ((x = 1) AND (tags.h1 IS NOT NULL) AND (tags.h2 IS NOT NULL)))) AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL))))'
314
- end
315
-
316
- it "should allowing filtering by many_through_many association datasets with :conditions" do
317
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:name=>'A'}
318
- @c1.filter(:tags=>@c2.filter(:x=>1)).sql.must_equal "SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((name = 'A') AND (albums_artists.artist_id IS NOT NULL) AND (tags.id IN (SELECT tags.id FROM tags WHERE (x = 1))))))"
319
- end
320
-
321
- it "should allowing filtering by many_through_many association datasets with :conditions and composite keys" do
322
- @c1.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy], :conditions=>{:name=>'A'}
323
- @c1.filter(:tags=>@c2.filter(:x=>1)).sql.must_equal "SELECT * FROM artists WHERE ((artists.id, artists.yyy) IN (SELECT albums_artists.b1, albums_artists.b2 FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((name = 'A') AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL) AND (tags.id IN (SELECT tags.id FROM tags WHERE (x = 1))))))"
324
- end
325
-
326
- it "should allowing excluding by many_through_many association datasets" do
327
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
328
- @c1.exclude(:tags=>@c2.filter(:x=>1)).sql.must_equal 'SELECT * FROM artists WHERE ((artists.id NOT IN (SELECT albums_artists.artist_id FROM albums_artists INNER JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE ((albums_tags.tag_id IN (SELECT tags.id FROM tags WHERE ((x = 1) AND (tags.id IS NOT NULL)))) AND (albums_artists.artist_id IS NOT NULL)))) OR (artists.id IS NULL))'
329
- end
330
-
331
- it "should allowing excluding by many_through_many association datasets with composite keys" do
332
- @c1.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
333
- @c1.exclude(:tags=>@c2.filter(:x=>1)).sql.must_equal 'SELECT * FROM artists WHERE (((artists.id, artists.yyy) NOT IN (SELECT albums_artists.b1, albums_artists.b2 FROM albums_artists INNER JOIN albums ON ((albums.d1 = albums_artists.c1) AND (albums.d2 = albums_artists.c2)) INNER JOIN albums_tags ON ((albums_tags.f1 = albums.e1) AND (albums_tags.f2 = albums.e2)) WHERE (((albums_tags.g1, albums_tags.g2) IN (SELECT tags.h1, tags.h2 FROM tags WHERE ((x = 1) AND (tags.h1 IS NOT NULL) AND (tags.h2 IS NOT NULL)))) AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL)))) OR (artists.id IS NULL) OR (artists.yyy IS NULL))'
334
- end
335
-
336
- it "should allowing excluding by many_through_many association datasets with :conditions" do
337
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:name=>'A'}
338
- @c1.exclude(:tags=>@c2.filter(:x=>1)).sql.must_equal "SELECT * FROM artists WHERE ((artists.id NOT IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((name = 'A') AND (albums_artists.artist_id IS NOT NULL) AND (tags.id IN (SELECT tags.id FROM tags WHERE (x = 1)))))) OR (artists.id IS NULL))"
339
- end
340
-
341
- it "should allowing excluding by many_through_many association datasets with :conditions and composite keys" do
342
- @c1.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy], :conditions=>{:name=>'A'}
343
- @c1.exclude(:tags=>@c2.filter(:x=>1)).sql.must_equal "SELECT * FROM artists WHERE (((artists.id, artists.yyy) NOT IN (SELECT albums_artists.b1, albums_artists.b2 FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((name = 'A') AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL) AND (tags.id IN (SELECT tags.id FROM tags WHERE (x = 1)))))) OR (artists.id IS NULL) OR (artists.yyy IS NULL))"
344
- end
345
-
346
- it "should support a :conditions option" do
347
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:a=>32}
348
- n = @c1.load(:id => 1234)
349
- n.tags_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((a = 32) AND (albums_artists.artist_id = 1234))'
350
- n.tags.must_equal [@c2.load(:id=>1)]
351
-
352
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>Sequel.lit('a = ?', 42)
353
- n = @c1.load(:id => 1234)
354
- n.tags_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((a = 42) AND (albums_artists.artist_id = 1234))'
355
- n.tags.must_equal [@c2.load(:id=>1)]
356
- end
357
-
358
- it "should support an :order option" do
359
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :order=>:blah
360
- n = @c1.load(:id => 1234)
361
- n.tags_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234) ORDER BY blah'
362
- n.tags.must_equal [@c2.load(:id=>1)]
363
- end
364
-
365
- it "should support an array for the :order option" do
366
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :order=>[:blah1, :blah2]
367
- n = @c1.load(:id => 1234)
368
- n.tags_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234) ORDER BY blah1, blah2'
369
- n.tags.must_equal [@c2.load(:id=>1)]
370
- end
371
-
372
- it "should support a select option" do
373
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :select=>:blah
374
- n = @c1.load(:id => 1234)
375
- n.tags_dataset.sql.must_equal 'SELECT blah FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234)'
376
- n.tags.must_equal [@c2.load(:id=>1)]
377
- end
378
-
379
- it "should support an array for the select option" do
380
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :select=>[Sequel::SQL::ColumnAll.new(:tags), Sequel[:albums][:name]]
381
- n = @c1.load(:id => 1234)
382
- n.tags_dataset.sql.must_equal 'SELECT tags.*, albums.name FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234)'
383
- n.tags.must_equal [@c2.load(:id=>1)]
384
- end
385
-
386
- it "should accept a block" do
387
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]] do |ds| ds.filter(:yyy=>@yyy) end
388
- n = @c1.load(:id => 1234)
389
- n.yyy = 85
390
- n.tags_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((albums_artists.artist_id = 1234) AND (yyy = 85))'
391
- n.tags.must_equal [@c2.load(:id=>1)]
392
- end
393
-
394
- it "should allow the :order option while accepting a block" do
395
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :order=>:blah do |ds| ds.filter(:yyy=>@yyy) end
396
- n = @c1.load(:id => 1234)
397
- n.yyy = 85
398
- n.tags_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((albums_artists.artist_id = 1234) AND (yyy = 85)) ORDER BY blah'
399
- n.tags.must_equal [@c2.load(:id=>1)]
400
- end
401
-
402
- it "should support a :dataset option that is used instead of the default" do
403
- @c1.many_through_many :tags, [[:a, :b, :c]], :dataset=>proc{Tag.join(:albums_tags, [:tag_id]).join(:albums, [:album_id]).join(:albums_artists, [:album_id]).filter(Sequel[:albums_artists][:artist_id]=>id)}
404
- n = @c1.load(:id => 1234)
405
- n.tags_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags USING (tag_id) INNER JOIN albums USING (album_id) INNER JOIN albums_artists USING (album_id) WHERE (albums_artists.artist_id = 1234)'
406
- n.tags.must_equal [@c2.load(:id=>1)]
407
- end
408
-
409
- it "should support a :limit option" do
410
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :limit=>10
411
- n = @c1.load(:id => 1234)
412
- n.tags_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234) LIMIT 10'
413
- n.tags.must_equal [@c2.load(:id=>1)]
414
-
415
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :limit=>[10, 10]
416
- n = @c1.load(:id => 1234)
417
- n.tags_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234) LIMIT 10 OFFSET 10'
418
- n.tags.must_equal [@c2.load(:id=>1)]
419
- end
420
-
421
- it "should have the :eager option affect the _dataset method" do
422
- @c2.many_to_many :fans
423
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :eager=>:fans
424
- @c1.load(:id => 1234).tags_dataset.opts[:eager].must_equal(:fans=>nil)
425
- end
426
-
427
- it "should provide an array with all members of the association" do
428
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
429
- @c1.load(:id => 1234).tags.must_equal [@c2.load(:id=>1)]
430
- DB.sqls.must_equal ['SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234)']
431
- end
432
-
433
- it "should populate cache when accessed" do
434
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
435
- n = @c1.load(:id => 1234)
436
- n.associations[:tags].must_be_nil
437
- DB.sqls.must_equal []
438
- n.tags.must_equal [@c2.load(:id=>1)]
439
- DB.sqls.must_equal ['SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234)']
440
- n.associations[:tags].must_equal n.tags
441
- DB.sqls.length.must_equal 0
442
- end
443
-
444
- it "should use cache if available" do
445
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
446
- n = @c1.load(:id => 1234)
447
- n.associations[:tags] = []
448
- n.tags.must_equal []
449
- DB.sqls.must_equal []
450
- end
451
-
452
- it "should not use cache if asked to reload" do
453
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
454
- n = @c1.load(:id => 1234)
455
- n.associations[:tags] = []
456
- DB.sqls.must_equal []
457
- n.tags(:reload=>true).must_equal [@c2.load(:id=>1)]
458
- DB.sqls.must_equal ['SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234)']
459
- n.associations[:tags].must_equal n.tags
460
- DB.sqls.length.must_equal 0
461
- end
462
-
463
- it "should not add associations methods directly to class" do
464
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
465
- im = @c1.instance_methods
466
- im.must_include(:tags)
467
- im.must_include(:tags_dataset)
468
- im2 = @c1.instance_methods(false)
469
- im2.wont_include(:tags)
470
- im2.wont_include(:tags_dataset)
471
- end
472
-
473
- it "should support after_load association callback" do
474
- h = []
475
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :after_load=>:al
476
- @c1.class_eval do
477
- self::Foo = h
478
- def al(v)
479
- v.each{|x| model::Foo << x.pk * 20}
480
- end
481
- end
482
- @c2.dataset = @c2.dataset.with_fetch([{:id=>20}, {:id=>30}])
483
- p = @c1.load(:id=>10, :parent_id=>20)
484
- p.tags
485
- h.must_equal [400, 600]
486
- p.tags.collect{|a| a.pk}.must_equal [20, 30]
487
- end
488
-
489
- it "should support a :uniq option that removes duplicates from the association" do
490
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :uniq=>true
491
- @c2.dataset = @c2.dataset.with_fetch([{:id=>20}, {:id=>30}, {:id=>20}, {:id=>30}])
492
- @c1.load(:id=>10).tags.must_equal [@c2.load(:id=>20), @c2.load(:id=>30)]
493
- end
494
- end
495
-
496
- describe 'Sequel::Plugins::ManyThroughMany::ManyThroughManyAssociationReflection' do
497
- before do
498
- class ::Artist < Sequel::Model
499
- plugin :many_through_many
500
- many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
501
- end
502
- class ::Tag < Sequel::Model
503
- end
504
- DB.reset
505
- @ar = Artist.association_reflection(:tags)
506
- end
507
- after do
508
- Object.send(:remove_const, :Artist)
509
- Object.send(:remove_const, :Tag)
510
- end
511
-
512
- it "#edges should be an array of joins to make when eager graphing" do
513
- @ar.edges.must_equal [{:conditions=>[], :left=>:id, :right=>:artist_id, :table=>:albums_artists, :join_type=>:left_outer, :block=>nil}, {:conditions=>[], :left=>:album_id, :right=>:id, :table=>:albums, :join_type=>:left_outer, :block=>nil}, {:conditions=>[], :left=>:id, :right=>:album_id, :table=>:albums_tags, :join_type=>:left_outer, :block=>nil}]
514
- end
515
-
516
- it "#edges should handle composite keys" do
517
- Artist.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
518
- Artist.association_reflection(:tags).edges.must_equal [{:conditions=>[], :left=>[:id, :yyy], :right=>[:b1, :b2], :table=>:albums_artists, :join_type=>:left_outer, :block=>nil}, {:conditions=>[], :left=>[:c1, :c2], :right=>[:d1, :d2], :table=>:albums, :join_type=>:left_outer, :block=>nil}, {:conditions=>[], :left=>[:e1, :e2], :right=>[:f1, :f2], :table=>:albums_tags, :join_type=>:left_outer, :block=>nil}]
519
- end
520
-
521
- it "#reverse_edges should be an array of joins to make when lazy loading or eager loading" do
522
- @ar.reverse_edges.must_equal [{:alias=>:albums_tags, :left=>:tag_id, :right=>:id, :table=>:albums_tags}, {:alias=>:albums, :left=>:id, :right=>:album_id, :table=>:albums}]
523
- end
524
-
525
- it "#reverse_edges should handle composite keys" do
526
- Artist.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
527
- Artist.association_reflection(:tags).reverse_edges.must_equal [{:alias=>:albums_tags, :left=>[:g1, :g2], :right=>[:h1, :h2], :table=>:albums_tags}, {:alias=>:albums, :left=>[:e1, :e2], :right=>[:f1, :f2], :table=>:albums}]
528
- end
529
-
530
- it "#reciprocal should be nil" do
531
- @ar.reciprocal.must_be_nil
532
- end
533
- end
534
-
535
- describe "many_through_many eager loading methods" do
536
- before do
537
- class ::Artist < Sequel::Model
538
- plugin :many_through_many
539
- many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
540
- many_through_many :other_tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>:Tag
541
- many_through_many :albums, [[:albums_artists, :artist_id, :album_id]]
542
- many_through_many :artists, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_artists, :album_id, :artist_id]]
543
- end
544
- class ::Tag < Sequel::Model
545
- plugin :many_through_many
546
- many_through_many :tracks, [[:albums_tags, :tag_id, :album_id], [:albums, :id, :id]], :right_primary_key=>:album_id
547
- end
548
- class ::Album < Sequel::Model
549
- end
550
- class ::Track < Sequel::Model
551
- end
552
- Artist.dataset = Artist.dataset.with_fetch(proc do |sql|
553
- h = {:id => 1}
554
- if sql =~ /FROM artists LEFT OUTER JOIN albums_artists/
555
- h[:tags_id] = 2
556
- h[:albums_0_id] = 3 if sql =~ /LEFT OUTER JOIN albums AS albums_0/
557
- h[:tracks_id] = 4 if sql =~ /LEFT OUTER JOIN tracks/
558
- h[:other_tags_id] = 9 if sql =~ /other_tags\.id AS other_tags_id/
559
- h[:artists_0_id] = 10 if sql =~ /artists_0\.id AS artists_0_id/
560
- end
561
- h
562
- end)
563
- Artist.dataset.columns(:id)
564
-
565
- Tag.dataset = Tag.dataset.with_fetch(proc do |sql|
566
- h = {:id => 2}
567
- if sql =~ /albums_artists.artist_id IN \(([18])\)/
568
- h[:x_foreign_key_x] = $1.to_i
569
- elsif sql =~ /\(\(albums_artists.b1, albums_artists.b2\) IN \(\(1, 8\)\)\)/
570
- h.merge!(:x_foreign_key_0_x=>1, :x_foreign_key_1_x=>8)
571
- end
572
- h[:tag_id] = h.delete(:id) if sql =~ /albums_artists.artist_id IN \(8\)/
573
- h
574
- end)
575
-
576
- Album.dataset = Album.dataset.with_fetch(proc do |sql|
577
- h = {:id => 3}
578
- h[:x_foreign_key_x] = 1 if sql =~ /albums_artists.artist_id IN \(1\)/
579
- h
580
- end)
581
-
582
- Track.dataset = Track.dataset.with_fetch(proc do |sql|
583
- h = {:id => 4}
584
- h[:x_foreign_key_x] = 2 if sql =~ /albums_tags.tag_id IN \(2\)/
585
- h
586
- end)
587
-
588
- @c1 = Artist
589
- DB.reset
590
- end
591
- after do
592
- [:Artist, :Tag, :Album, :Track].each{|x| Object.send(:remove_const, x)}
593
- end
594
-
595
- it "should eagerly load a single many_through_many association" do
596
- a = @c1.eager(:tags).all
597
- a.must_equal [@c1.load(:id=>1)]
598
- DB.sqls.must_equal ['SELECT * FROM artists', 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))']
599
- a.first.tags.must_equal [Tag.load(:id=>2)]
600
- DB.sqls.length.must_equal 0
601
- end
602
-
603
- it "should eagerly load multiple associations in a single call" do
604
- a = @c1.eager(:tags, :albums).all
605
- a.must_equal [@c1.load(:id=>1)]
606
- DB.sqls.must_equal ['SELECT * FROM artists',
607
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))',
608
- 'SELECT albums.*, albums_artists.artist_id AS x_foreign_key_x FROM albums INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))']
609
- a = a.first
610
- a.tags.must_equal [Tag.load(:id=>2)]
611
- a.albums.must_equal [Album.load(:id=>3)]
612
- DB.sqls.length.must_equal 0
613
- end
614
-
615
- it "should eagerly load multiple associations in separate" do
616
- a = @c1.eager(:tags).eager(:albums).all
617
- a.must_equal [@c1.load(:id=>1)]
618
- DB.sqls.must_equal ['SELECT * FROM artists',
619
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))',
620
- 'SELECT albums.*, albums_artists.artist_id AS x_foreign_key_x FROM albums INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))']
621
- a = a.first
622
- a.tags.must_equal [Tag.load(:id=>2)]
623
- a.albums.must_equal [Album.load(:id=>3)]
624
- DB.sqls.length.must_equal 0
625
- end
626
-
627
- it "should allow cascading of eager loading for associations of associated models" do
628
- a = @c1.eager(:tags=>:tracks).all
629
- a.must_equal [@c1.load(:id=>1)]
630
- DB.sqls.must_equal ['SELECT * FROM artists',
631
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))',
632
- 'SELECT tracks.*, albums_tags.tag_id AS x_foreign_key_x FROM tracks INNER JOIN albums ON (albums.id = tracks.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE (albums_tags.tag_id IN (2))']
633
- a = a.first
634
- a.tags.must_equal [Tag.load(:id=>2)]
635
- a.tags.first.tracks.must_equal [Track.load(:id=>4)]
636
- DB.sqls.length.must_equal 0
637
- end
638
-
639
- it "should cascade eagerly loading when the :eager association option is used" do
640
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :eager=>:tracks
641
- a = @c1.eager(:tags).all
642
- a.must_equal [@c1.load(:id=>1)]
643
- DB.sqls.must_equal ['SELECT * FROM artists',
644
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))',
645
- 'SELECT tracks.*, albums_tags.tag_id AS x_foreign_key_x FROM tracks INNER JOIN albums ON (albums.id = tracks.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE (albums_tags.tag_id IN (2))']
646
- a = a.first
647
- a.tags.must_equal [Tag.load(:id=>2)]
648
- a.tags.first.tracks.must_equal [Track.load(:id=>4)]
649
- DB.sqls.length.must_equal 0
650
- end
651
-
652
- it "should respect :eager when lazily loading an association" do
653
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :eager=>:tracks
654
- a = @c1.load(:id=>1)
655
- a.tags.must_equal [Tag.load(:id=>2)]
656
- DB.sqls.must_equal ['SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1)',
657
- 'SELECT tracks.*, albums_tags.tag_id AS x_foreign_key_x FROM tracks INNER JOIN albums ON (albums.id = tracks.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE (albums_tags.tag_id IN (2))']
658
- a.tags.first.tracks.must_equal [Track.load(:id=>4)]
659
- DB.sqls.length.must_equal 0
660
- end
661
-
662
- it "should raise error if attempting to eagerly load an association using :eager_graph option" do
663
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :eager_graph=>:tracks
664
- proc{@c1.eager(:tags).all}.must_raise(Sequel::Error)
665
- end
666
-
667
- it "should respect :eager_graph when lazily loading an association" do
668
- Tag.dataset = Tag.dataset.with_fetch(:id=>2, :tracks_id=>4).with_extend{def columns; [:id] end}
669
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :eager_graph=>:tracks
670
- a = @c1.load(:id=>1)
671
- a.tags
672
- DB.sqls.must_equal [ 'SELECT tags.id, tracks.id AS tracks_id FROM (SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1)) AS tags LEFT OUTER JOIN albums_tags AS albums_tags_0 ON (albums_tags_0.tag_id = tags.id) LEFT OUTER JOIN albums ON (albums.id = albums_tags_0.album_id) LEFT OUTER JOIN tracks ON (tracks.album_id = albums.id)']
673
- a.tags.must_equal [Tag.load(:id=>2)]
674
- a.tags.first.tracks.must_equal [Track.load(:id=>4)]
675
- DB.sqls.length.must_equal 0
676
- end
677
-
678
- it "should respect :conditions when eagerly loading" do
679
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:a=>32}
680
- a = @c1.eager(:tags).all
681
- a.must_equal [@c1.load(:id=>1)]
682
- DB.sqls.must_equal ['SELECT * FROM artists',
683
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((a = 32) AND (albums_artists.artist_id IN (1)))']
684
- a.first.tags.must_equal [Tag.load(:id=>2)]
685
- DB.sqls.length.must_equal 0
686
- end
687
-
688
- it "should respect :order when eagerly loading" do
689
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :order=>:blah
690
- a = @c1.eager(:tags).all
691
- a.must_equal [@c1.load(:id=>1)]
692
- DB.sqls.must_equal ['SELECT * FROM artists',
693
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1)) ORDER BY blah']
694
- a.first.tags.must_equal [Tag.load(:id=>2)]
695
- DB.sqls.length.must_equal 0
696
- end
697
-
698
- it "should use the association's block when eager loading by default" do
699
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]] do |ds| ds.filter(:a) end
700
- a = @c1.eager(:tags).all
701
- a.must_equal [@c1.load(:id=>1)]
702
- DB.sqls.must_equal ['SELECT * FROM artists',
703
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (a AND (albums_artists.artist_id IN (1)))']
704
- a.first.tags.must_equal [Tag.load(:id=>2)]
705
- DB.sqls.length.must_equal 0
706
- end
707
-
708
- it "should use the :eager_block option when eager loading if given" do
709
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :eager_block=>proc{|ds| ds.filter(:b)} do |ds| ds.filter(:a) end
710
- a = @c1.eager(:tags).all
711
- a.must_equal [@c1.load(:id=>1)]
712
- DB.sqls.must_equal ['SELECT * FROM artists',
713
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (b AND (albums_artists.artist_id IN (1)))']
714
- a.first.tags.must_equal [Tag.load(:id=>2)]
715
- DB.sqls.length.must_equal 0
716
- end
717
-
718
- it "should respect the :limit option on a many_through_many association" do
719
- @c1.many_through_many :first_two_tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>2
720
- Tag.dataset = Tag.dataset.with_fetch([{:x_foreign_key_x=>1, :id=>5},{:x_foreign_key_x=>1, :id=>6}])
721
- a = @c1.eager(:first_two_tags).all
722
- a.must_equal [@c1.load(:id=>1)]
723
- DB.sqls.must_equal ['SELECT * FROM artists',
724
- 'SELECT * FROM (SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (1 = albums_artists.artist_id) LIMIT 2) AS t1']
725
- a.first.first_two_tags.must_equal [Tag.load(:id=>5), Tag.load(:id=>6)]
726
- DB.sqls.length.must_equal 0
727
-
728
- @c1.many_through_many :first_two_tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>[1,1]
729
- Tag.dataset = Tag.dataset.with_fetch([{:x_foreign_key_x=>1, :id=>6}])
730
- a = @c1.eager(:first_two_tags).all
731
- a.must_equal [@c1.load(:id=>1)]
732
- DB.sqls.must_equal ['SELECT * FROM artists',
733
- 'SELECT * FROM (SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (1 = albums_artists.artist_id) LIMIT 1 OFFSET 1) AS t1']
734
- a.first.first_two_tags.must_equal [Tag.load(:id=>6)]
735
- DB.sqls.length.must_equal 0
736
-
737
- @c1.many_through_many :first_two_tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>[nil,1]
738
- Tag.dataset = Tag.dataset.with_fetch([{:x_foreign_key_x=>1, :id=>6}, {:x_foreign_key_x=>1, :id=>7}])
739
- a = @c1.eager(:first_two_tags).all
740
- a.must_equal [@c1.load(:id=>1)]
741
- DB.sqls.must_equal ['SELECT * FROM artists',
742
- 'SELECT * FROM (SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (1 = albums_artists.artist_id) OFFSET 1) AS t1']
743
- a.first.first_two_tags.must_equal [Tag.load(:id=>6), Tag.load(:id=>7)]
744
- DB.sqls.length.must_equal 0
745
- end
746
-
747
- it "should respect the :limit option on a many_through_many association using a :ruby strategy" do
748
- @c1.many_through_many :first_two_tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>2, :eager_limit_strategy=>:ruby
749
- Tag.dataset = Tag.dataset.with_fetch([{:x_foreign_key_x=>1, :id=>5},{:x_foreign_key_x=>1, :id=>6}, {:x_foreign_key_x=>1, :id=>7}])
750
- a = @c1.eager(:first_two_tags).all
751
- a.must_equal [@c1.load(:id=>1)]
752
- DB.sqls.must_equal ['SELECT * FROM artists',
753
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))']
754
- a.first.first_two_tags.must_equal [Tag.load(:id=>5), Tag.load(:id=>6)]
755
- DB.sqls.length.must_equal 0
756
-
757
- @c1.many_through_many :first_two_tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>[1,1], :eager_limit_strategy=>:ruby
758
- a = @c1.eager(:first_two_tags).all
759
- a.must_equal [@c1.load(:id=>1)]
760
- DB.sqls.must_equal ['SELECT * FROM artists',
761
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))']
762
- a.first.first_two_tags.must_equal [Tag.load(:id=>6)]
763
- DB.sqls.length.must_equal 0
764
-
765
- @c1.many_through_many :first_two_tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>[nil,1], :eager_limit_strategy=>:ruby
766
- a = @c1.eager(:first_two_tags).all
767
- a.must_equal [@c1.load(:id=>1)]
768
- DB.sqls.must_equal ['SELECT * FROM artists',
769
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))']
770
- a.first.first_two_tags.must_equal [Tag.load(:id=>6), Tag.load(:id=>7)]
771
- DB.sqls.length.must_equal 0
772
- end
773
-
774
- it "should respect the :limit option on a many_through_many association using a :window_function strategy" do
775
- @c1.many_through_many :first_two_tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>2, :order=>:name, :eager_limit_strategy=>:window_function
776
- Tag.dataset = Tag.dataset.with_fetch([{:x_foreign_key_x=>1, :id=>5},{:x_foreign_key_x=>1, :id=>6}]).with_extend{def supports_window_functions?; true end}
777
- a = @c1.eager(:first_two_tags).all
778
- a.must_equal [@c1.load(:id=>1)]
779
- DB.sqls.must_equal ['SELECT * FROM artists',
780
- 'SELECT * FROM (SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x, row_number() OVER (PARTITION BY albums_artists.artist_id ORDER BY name) AS x_sequel_row_number_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))) AS t1 WHERE (x_sequel_row_number_x <= 2)']
781
- a.first.first_two_tags.must_equal [Tag.load(:id=>5), Tag.load(:id=>6)]
782
- DB.sqls.length.must_equal 0
783
-
784
- @c1.many_through_many :first_two_tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>[2,1], :order=>:name, :eager_limit_strategy=>:window_function
785
- a = @c1.eager(:first_two_tags).all
786
- a.must_equal [@c1.load(:id=>1)]
787
- DB.sqls.must_equal ['SELECT * FROM artists',
788
- 'SELECT * FROM (SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x, row_number() OVER (PARTITION BY albums_artists.artist_id ORDER BY name) AS x_sequel_row_number_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))) AS t1 WHERE ((x_sequel_row_number_x >= 2) AND (x_sequel_row_number_x < 4))']
789
- a.first.first_two_tags.must_equal [Tag.load(:id=>5), Tag.load(:id=>6)]
790
- DB.sqls.length.must_equal 0
791
-
792
- @c1.many_through_many :first_two_tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>[nil,1], :order=>:name, :eager_limit_strategy=>:window_function
793
- a = @c1.eager(:first_two_tags).all
794
- a.must_equal [@c1.load(:id=>1)]
795
- DB.sqls.must_equal ['SELECT * FROM artists',
796
- 'SELECT * FROM (SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x, row_number() OVER (PARTITION BY albums_artists.artist_id ORDER BY name) AS x_sequel_row_number_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))) AS t1 WHERE (x_sequel_row_number_x >= 2)']
797
- a.first.first_two_tags.must_equal [Tag.load(:id=>5), Tag.load(:id=>6)]
798
- DB.sqls.length.must_equal 0
799
- end
800
-
801
- it "should respect the :limit option on a many_through_many association with composite primary keys on the main table" do
802
- @c1.dataset = @c1.dataset.with_fetch([{:id1=>1, :id2=>2}])
803
- Tag.dataset = Tag.dataset.with_fetch([{:x_foreign_key_0_x=>1, :x_foreign_key_1_x=>2, :id=>5}, {:x_foreign_key_0_x=>1, :x_foreign_key_1_x=>2, :id=>6}]).with_extend{def supports_window_functions?; true end}
804
- @c1.set_primary_key([:id1, :id2])
805
- @c1.columns :id1, :id2
806
- @c1.many_through_many :first_two_tags, [[:albums_artists, [:artist_id1, :artist_id2], :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>2, :order=>:name
807
- a = @c1.eager(:first_two_tags).all
808
- a.must_equal [@c1.load(:id1=>1, :id2=>2)]
809
- DB.sqls.must_equal ['SELECT * FROM artists',
810
- 'SELECT * FROM (SELECT tags.*, albums_artists.artist_id1 AS x_foreign_key_0_x, albums_artists.artist_id2 AS x_foreign_key_1_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((1 = albums_artists.artist_id1) AND (2 = albums_artists.artist_id2)) ORDER BY name LIMIT 2) AS t1']
811
- a.first.first_two_tags.must_equal [Tag.load(:id=>5), Tag.load(:id=>6)]
812
- DB.sqls.length.must_equal 0
813
-
814
- @c1.many_through_many :first_two_tags, [[:albums_artists, [:artist_id1, :artist_id2], :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>[2,1]
815
- a = @c1.eager(:first_two_tags).all
816
- a.must_equal [@c1.load(:id1=>1, :id2=>2)]
817
- DB.sqls.must_equal ['SELECT * FROM artists',
818
- 'SELECT * FROM (SELECT tags.*, albums_artists.artist_id1 AS x_foreign_key_0_x, albums_artists.artist_id2 AS x_foreign_key_1_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((1 = albums_artists.artist_id1) AND (2 = albums_artists.artist_id2)) LIMIT 2 OFFSET 1) AS t1']
819
- a.first.first_two_tags.must_equal [Tag.load(:id=>5), Tag.load(:id=>6)]
820
- DB.sqls.length.must_equal 0
821
- end
822
-
823
- it "should respect the :limit option on a many_through_many association with composite primary keys on the main table using a :window_function strategy" do
824
- @c1.dataset = @c1.dataset.with_fetch([{:id1=>1, :id2=>2}])
825
- Tag.dataset = Tag.dataset.with_fetch([{:x_foreign_key_0_x=>1, :x_foreign_key_1_x=>2, :id=>5}, {:x_foreign_key_0_x=>1, :x_foreign_key_1_x=>2, :id=>6}]).with_extend{def supports_window_functions?; true end}
826
- @c1.set_primary_key([:id1, :id2])
827
- @c1.columns :id1, :id2
828
- @c1.many_through_many :first_two_tags, [[:albums_artists, [:artist_id1, :artist_id2], :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>2, :order=>:name, :eager_limit_strategy=>:window_function
829
- a = @c1.eager(:first_two_tags).all
830
- a.must_equal [@c1.load(:id1=>1, :id2=>2)]
831
- DB.sqls.must_equal ['SELECT * FROM artists',
832
- 'SELECT * FROM (SELECT tags.*, albums_artists.artist_id1 AS x_foreign_key_0_x, albums_artists.artist_id2 AS x_foreign_key_1_x, row_number() OVER (PARTITION BY albums_artists.artist_id1, albums_artists.artist_id2 ORDER BY name) AS x_sequel_row_number_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((albums_artists.artist_id1, albums_artists.artist_id2) IN ((1, 2)))) AS t1 WHERE (x_sequel_row_number_x <= 2)']
833
- a.first.first_two_tags.must_equal [Tag.load(:id=>5), Tag.load(:id=>6)]
834
- DB.sqls.length.must_equal 0
835
-
836
- @c1.many_through_many :first_two_tags, [[:albums_artists, [:artist_id1, :artist_id2], :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>[2,1], :order=>:name, :eager_limit_strategy=>:window_function
837
- a = @c1.eager(:first_two_tags).all
838
- a.must_equal [@c1.load(:id1=>1, :id2=>2)]
839
- DB.sqls.must_equal ['SELECT * FROM artists',
840
- 'SELECT * FROM (SELECT tags.*, albums_artists.artist_id1 AS x_foreign_key_0_x, albums_artists.artist_id2 AS x_foreign_key_1_x, row_number() OVER (PARTITION BY albums_artists.artist_id1, albums_artists.artist_id2 ORDER BY name) AS x_sequel_row_number_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((albums_artists.artist_id1, albums_artists.artist_id2) IN ((1, 2)))) AS t1 WHERE ((x_sequel_row_number_x >= 2) AND (x_sequel_row_number_x < 4))']
841
- a.first.first_two_tags.must_equal [Tag.load(:id=>5), Tag.load(:id=>6)]
842
- DB.sqls.length.must_equal 0
843
- end
844
-
845
- it "should raise an error when attempting to eagerly load an association with the :allow_eager option set to false" do
846
- @c1.eager(:tags).all
847
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :allow_eager=>false
848
- proc{@c1.eager(:tags).all}.must_raise(Sequel::Error)
849
- end
850
-
851
- it "should respect the association's :select option" do
852
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :select=>Sequel[:tags][:name]
853
- a = @c1.eager(:tags).all
854
- a.must_equal [@c1.load(:id=>1)]
855
- DB.sqls.must_equal ['SELECT * FROM artists',
856
- 'SELECT tags.name, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))']
857
- a.first.tags.must_equal [Tag.load(:id=>2)]
858
- DB.sqls.length.must_equal 0
859
- end
860
-
861
- it "should respect many_through_many association's :left_primary_key and :right_primary_key options" do
862
- @c1.send(:define_method, :yyy){values[:yyy]}
863
- @c1.dataset = @c1.dataset.with_fetch(:id=>1, :yyy=>8).with_extend{def columns; [:id, :yyy] end}
864
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :left_primary_key=>:yyy, :right_primary_key=>:tag_id
865
- a = @c1.eager(:tags).all
866
- a.must_equal [@c1.load(:id=>1, :yyy=>8)]
867
- DB.sqls.must_equal ['SELECT * FROM artists',
868
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.tag_id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (8))']
869
- a.first.tags.must_equal [Tag.load(:tag_id=>2)]
870
- DB.sqls.length.must_equal 0
871
- end
872
-
873
- it "should handle composite keys" do
874
- @c1.send(:define_method, :yyy){values[:yyy]}
875
- @c1.dataset = @c1.dataset.with_fetch(:id=>1, :yyy=>8).with_extend{def columns; [:id, :yyy] end}
876
- @c1.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
877
- a = @c1.eager(:tags).all
878
- a.must_equal [@c1.load(:id=>1, :yyy=>8)]
879
- DB.sqls.must_equal ['SELECT * FROM artists',
880
- 'SELECT tags.*, albums_artists.b1 AS x_foreign_key_0_x, albums_artists.b2 AS x_foreign_key_1_x FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((albums_artists.b1, albums_artists.b2) IN ((1, 8)))']
881
- a.first.tags.must_equal [Tag.load(:id=>2)]
882
- DB.sqls.length.must_equal 0
883
- end
884
-
885
- it "should respect :after_load callbacks on associations when eager loading" do
886
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :after_load=>lambda{|o, as| o[:id] *= 2; as.each{|a| a[:id] *= 3}}
887
- a = @c1.eager(:tags).all
888
- a.must_equal [@c1.load(:id=>2)]
889
- DB.sqls.must_equal ['SELECT * FROM artists',
890
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))']
891
- a.first.tags.must_equal [Tag.load(:id=>6)]
892
- DB.sqls.length.must_equal 0
893
- end
894
-
895
- it "should raise an error if called without a symbol or hash" do
896
- proc{@c1.eager_graph(Object.new)}.must_raise(Sequel::Error)
897
- end
898
-
899
- it "should support association_join" do
900
- @c1.association_join(:tags).sql.must_equal "SELECT * FROM artists INNER JOIN albums_artists ON (albums_artists.artist_id = artists.id) INNER JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) INNER JOIN tags ON (tags.id = albums_tags.tag_id)"
901
- end
902
-
903
- it "should support custom selects when using association_join" do
904
- @c1.select{a(b)}.association_join(:tags).sql.must_equal "SELECT a(b) FROM artists INNER JOIN albums_artists ON (albums_artists.artist_id = artists.id) INNER JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) INNER JOIN tags ON (tags.id = albums_tags.tag_id)"
905
- end
906
-
907
- it "should eagerly graph a single many_through_many association" do
908
- a = @c1.eager_graph(:tags).all
909
- a.must_equal [@c1.load(:id=>1)]
910
- DB.sqls.must_equal ['SELECT artists.id, tags.id AS tags_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id)']
911
- a.first.tags.must_equal [Tag.load(:id=>2)]
912
- DB.sqls.length.must_equal 0
913
- end
914
-
915
- it "should eagerly graph a single many_through_many association using the :window_function strategy" do
916
- Tag.dataset = Tag.dataset.with_extend do
917
- def supports_window_functions?; true end
918
- def columns; literal(opts[:select]) =~ /x_foreign_key_x/ ? [:id, :x_foreign_key_x] : [:id] end
919
- end
920
- @c1.many_through_many :tags, :clone=>:tags, :limit=>2
921
- a = @c1.eager_graph_with_options(:tags, :limit_strategy=>true).with_fetch(:id=>1, :tags_id=>2).all
922
- a.must_equal [@c1.load(:id=>1)]
923
- DB.sqls.must_equal ['SELECT artists.id, tags.id AS tags_id FROM artists LEFT OUTER JOIN (SELECT id, x_foreign_key_x FROM (SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x, row_number() OVER (PARTITION BY albums_artists.artist_id) AS x_sequel_row_number_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id)) AS t1 WHERE (x_sequel_row_number_x <= 2)) AS tags ON (tags.x_foreign_key_x = artists.id)']
924
- a.first.tags.must_equal [Tag.load(:id=>2)]
925
- DB.sqls.length.must_equal 0
926
- end
927
-
928
- it "should eagerly graph multiple associations in a single call" do
929
- a = @c1.eager_graph(:tags, :albums).all
930
- a.must_equal [@c1.load(:id=>1)]
931
- DB.sqls.must_equal ['SELECT artists.id, tags.id AS tags_id, albums_0.id AS albums_0_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id) LEFT OUTER JOIN albums_artists AS albums_artists_0 ON (albums_artists_0.artist_id = artists.id) LEFT OUTER JOIN albums AS albums_0 ON (albums_0.id = albums_artists_0.album_id)']
932
- a = a.first
933
- a.tags.must_equal [Tag.load(:id=>2)]
934
- a.albums.must_equal [Album.load(:id=>3)]
935
- DB.sqls.length.must_equal 0
936
- end
937
-
938
- it "should eagerly graph multiple associations in separate calls" do
939
- a = @c1.eager_graph(:tags).eager_graph(:albums).all
940
- a.must_equal [@c1.load(:id=>1)]
941
- DB.sqls.must_equal ['SELECT artists.id, tags.id AS tags_id, albums_0.id AS albums_0_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id) LEFT OUTER JOIN albums_artists AS albums_artists_0 ON (albums_artists_0.artist_id = artists.id) LEFT OUTER JOIN albums AS albums_0 ON (albums_0.id = albums_artists_0.album_id)']
942
- a = a.first
943
- a.tags.must_equal [Tag.load(:id=>2)]
944
- a.albums.must_equal [Album.load(:id=>3)]
945
- DB.sqls.length.must_equal 0
946
- end
947
-
948
- it "should allow cascading of eager graphing for associations of associated models" do
949
- a = @c1.eager_graph(:tags=>:tracks).all
950
- a.must_equal [@c1.load(:id=>1)]
951
- DB.sqls.must_equal ['SELECT artists.id, tags.id AS tags_id, tracks.id AS tracks_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id) LEFT OUTER JOIN albums_tags AS albums_tags_0 ON (albums_tags_0.tag_id = tags.id) LEFT OUTER JOIN albums AS albums_0 ON (albums_0.id = albums_tags_0.album_id) LEFT OUTER JOIN tracks ON (tracks.album_id = albums_0.id)']
952
- a = a.first
953
- a.tags.must_equal [Tag.load(:id=>2)]
954
- a.tags.first.tracks.must_equal [Track.load(:id=>4)]
955
- DB.sqls.length.must_equal 0
956
- end
957
-
958
- it "eager graphing should eliminate duplicates caused by cartesian products" do
959
- a = @c1.eager_graph(:tags).with_fetch([{:id=>1, :tags_id=>2}, {:id=>1, :tags_id=>3}, {:id=>1, :tags_id=>2}, {:id=>1, :tags_id=>3}]).all
960
- a.must_equal [@c1.load(:id=>1)]
961
- DB.sqls.must_equal ['SELECT artists.id, tags.id AS tags_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id)']
962
- a.first.tags.must_equal [Tag.load(:id=>2), Tag.load(:id=>3)]
963
- DB.sqls.length.must_equal 0
964
- end
965
-
966
- it "should eager graph multiple associations from the same table" do
967
- a = @c1.eager_graph(:tags, :other_tags).all
968
- a.must_equal [@c1.load(:id=>1)]
969
- DB.sqls.must_equal ['SELECT artists.id, tags.id AS tags_id, other_tags.id AS other_tags_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id) LEFT OUTER JOIN albums_artists AS albums_artists_0 ON (albums_artists_0.artist_id = artists.id) LEFT OUTER JOIN albums AS albums_0 ON (albums_0.id = albums_artists_0.album_id) LEFT OUTER JOIN albums_tags AS albums_tags_0 ON (albums_tags_0.album_id = albums_0.id) LEFT OUTER JOIN tags AS other_tags ON (other_tags.id = albums_tags_0.tag_id)']
970
- a = a.first
971
- a.tags.must_equal [Tag.load(:id=>2)]
972
- a.other_tags.must_equal [Tag.load(:id=>9)]
973
- DB.sqls.length.must_equal 0
974
- end
975
-
976
- it "should eager graph a self_referential association" do
977
- a = @c1.eager_graph(:tags, :artists).all
978
- a.must_equal [@c1.load(:id=>1)]
979
- DB.sqls.must_equal ['SELECT artists.id, tags.id AS tags_id, artists_0.id AS artists_0_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id) LEFT OUTER JOIN albums_artists AS albums_artists_0 ON (albums_artists_0.artist_id = artists.id) LEFT OUTER JOIN albums AS albums_0 ON (albums_0.id = albums_artists_0.album_id) LEFT OUTER JOIN albums_artists AS albums_artists_1 ON (albums_artists_1.album_id = albums_0.id) LEFT OUTER JOIN artists AS artists_0 ON (artists_0.id = albums_artists_1.artist_id)']
980
- a = a.first
981
- a.tags.must_equal [Tag.load(:id=>2)]
982
- a.artists.must_equal [@c1.load(:id=>10)]
983
- DB.sqls.length.must_equal 0
984
- end
985
-
986
- it "eager graphing should give you a plain hash when called without .all" do
987
- @c1.eager_graph(:tags, :artists).first.must_equal(:albums_0_id=>3, :artists_0_id=>10, :id=>1, :tags_id=>2)
988
- end
989
-
990
- it "should be able to use eager and eager_graph together" do
991
- a = @c1.eager_graph(:tags).eager(:albums).all
992
- a.must_equal [@c1.load(:id=>1)]
993
- DB.sqls.must_equal ['SELECT artists.id, tags.id AS tags_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id)',
994
- 'SELECT albums.*, albums_artists.artist_id AS x_foreign_key_x FROM albums INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))']
995
- a = a.first
996
- a.tags.must_equal [Tag.load(:id=>2)]
997
- a.albums.must_equal [Album.load(:id=>3)]
998
- DB.sqls.length.must_equal 0
999
- end
1000
-
1001
- it "should handle no associated records when eagerly graphing a single many_through_many association" do
1002
- a = @c1.eager_graph(:tags).with_fetch(:id=>1, :tags_id=>nil).all
1003
- a.must_equal [@c1.load(:id=>1)]
1004
- DB.sqls.must_equal ['SELECT artists.id, tags.id AS tags_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id)']
1005
- a.first.tags.must_equal []
1006
- DB.sqls.length.must_equal 0
1007
- end
1008
-
1009
- it "should handle no associated records when eagerly graphing multiple many_through_many associations" do
1010
- a = @c1.eager_graph(:tags, :albums).with_fetch([{:id=>1, :tags_id=>nil, :albums_0_id=>3}, {:id=>1, :tags_id=>2, :albums_0_id=>nil}, {:id=>1, :tags_id=>5, :albums_0_id=>6}, {:id=>7, :tags_id=>nil, :albums_0_id=>nil}]).all
1011
- a.must_equal [@c1.load(:id=>1), @c1.load(:id=>7)]
1012
- DB.sqls.must_equal ['SELECT artists.id, tags.id AS tags_id, albums_0.id AS albums_0_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id) LEFT OUTER JOIN albums_artists AS albums_artists_0 ON (albums_artists_0.artist_id = artists.id) LEFT OUTER JOIN albums AS albums_0 ON (albums_0.id = albums_artists_0.album_id)']
1013
- a.first.tags.must_equal [Tag.load(:id=>2), Tag.load(:id=>5)]
1014
- a.first.albums.must_equal [Album.load(:id=>3), Album.load(:id=>6)]
1015
- a.last.tags.must_equal []
1016
- a.last.albums.must_equal []
1017
- DB.sqls.length.must_equal 0
1018
- end
1019
-
1020
- it "should handle missing associated records when cascading eager graphing for associations of associated models" do
1021
- a = @c1.eager_graph(:tags=>:tracks).with_fetch([{:id=>1, :tags_id=>2, :tracks_id=>4}, {:id=>1, :tags_id=>3, :tracks_id=>nil}, {:id=>2, :tags_id=>nil, :tracks_id=>nil}]).all
1022
- a.must_equal [@c1.load(:id=>1), @c1.load(:id=>2)]
1023
- DB.sqls.must_equal ['SELECT artists.id, tags.id AS tags_id, tracks.id AS tracks_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id) LEFT OUTER JOIN albums_tags AS albums_tags_0 ON (albums_tags_0.tag_id = tags.id) LEFT OUTER JOIN albums AS albums_0 ON (albums_0.id = albums_tags_0.album_id) LEFT OUTER JOIN tracks ON (tracks.album_id = albums_0.id)']
1024
- a.last.tags.must_equal []
1025
- a = a.first
1026
- a.tags.must_equal [Tag.load(:id=>2), Tag.load(:id=>3)]
1027
- a.tags.first.tracks.must_equal [Track.load(:id=>4)]
1028
- a.tags.last.tracks.must_equal []
1029
- DB.sqls.length.must_equal 0
1030
- end
1031
-
1032
- it "eager graphing should respect :left_primary_key and :right_primary_key options" do
1033
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :left_primary_key=>:yyy, :right_primary_key=>:tag_id
1034
- @c1.dataset = @c1.dataset.with_extend{def columns; [:id, :yyy] end}
1035
- Tag.dataset = Tag.dataset.with_extend{def columns; [:id, :tag_id] end}
1036
- a = @c1.eager_graph(:tags).with_fetch(:id=>1, :yyy=>8, :tags_id=>2, :tag_id=>4).all
1037
- a.must_equal [@c1.load(:id=>1, :yyy=>8)]
1038
- DB.sqls.must_equal ['SELECT artists.id, artists.yyy, tags.id AS tags_id, tags.tag_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.yyy) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.tag_id = albums_tags.tag_id)']
1039
- a.first.tags.must_equal [Tag.load(:id=>2, :tag_id=>4)]
1040
- DB.sqls.length.must_equal 0
1041
- end
1042
-
1043
- it "eager graphing should respect composite keys" do
1044
- @c1.many_through_many :tags, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:id, :tag_id], :left_primary_key=>[:id, :yyy]
1045
- @c1.dataset = @c1.dataset.with_extend{def columns; [:id, :yyy] end}
1046
- Tag.dataset = Tag.dataset.with_extend{def columns; [:id, :tag_id] end}
1047
- a = @c1.eager_graph(:tags).with_fetch(:id=>1, :yyy=>8, :tags_id=>2, :tag_id=>4).all
1048
- a.must_equal [@c1.load(:id=>1, :yyy=>8)]
1049
- DB.sqls.must_equal ['SELECT artists.id, artists.yyy, tags.id AS tags_id, tags.tag_id FROM artists LEFT OUTER JOIN albums_artists ON ((albums_artists.b1 = artists.id) AND (albums_artists.b2 = artists.yyy)) LEFT OUTER JOIN albums ON ((albums.d1 = albums_artists.c1) AND (albums.d2 = albums_artists.c2)) LEFT OUTER JOIN albums_tags ON ((albums_tags.f1 = albums.e1) AND (albums_tags.f2 = albums.e2)) LEFT OUTER JOIN tags ON ((tags.id = albums_tags.g1) AND (tags.tag_id = albums_tags.g2))']
1050
- a.first.tags.must_equal [Tag.load(:id=>2, :tag_id=>4)]
1051
- DB.sqls.length.must_equal 0
1052
- end
1053
-
1054
- it "should respect the association's :graph_select option" do
1055
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :graph_select=>:b
1056
- a = @c1.eager_graph(:tags).with_fetch(:id=>1, :b=>2).all
1057
- a.must_equal [@c1.load(:id=>1)]
1058
- DB.sqls.must_equal ['SELECT artists.id, tags.b FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id)']
1059
- a.first.tags.must_equal [Tag.load(:b=>2)]
1060
- DB.sqls.length.must_equal 0
1061
- end
1062
-
1063
- it "should respect the association's :graph_join_type option" do
1064
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :graph_join_type=>:inner
1065
- @c1.eager_graph(:tags).sql.must_equal 'SELECT artists.id, tags.id AS tags_id FROM artists INNER JOIN albums_artists ON (albums_artists.artist_id = artists.id) INNER JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) INNER JOIN tags ON (tags.id = albums_tags.tag_id)'
1066
- end
1067
-
1068
- it "should respect the association's :join_type option on through" do
1069
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id, :join_type=>:natural}, [:albums_tags, :album_id, :tag_id]], :graph_join_type=>:inner
1070
- @c1.eager_graph(:tags).sql.must_equal 'SELECT artists.id, tags.id AS tags_id FROM artists INNER JOIN albums_artists ON (albums_artists.artist_id = artists.id) NATURAL JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) INNER JOIN tags ON (tags.id = albums_tags.tag_id)'
1071
- end
1072
-
1073
- it "should respect the association's :conditions option" do
1074
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :conditions=>{:a=>32}
1075
- @c1.eager_graph(:tags).sql.must_equal 'SELECT artists.id, tags.id AS tags_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON ((tags.id = albums_tags.tag_id) AND (tags.a = 32))'
1076
- end
1077
-
1078
- it "should respect the association's :graph_conditions option" do
1079
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :graph_conditions=>{:a=>42}
1080
- @c1.eager_graph(:tags).sql.must_equal 'SELECT artists.id, tags.id AS tags_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON ((tags.id = albums_tags.tag_id) AND (tags.a = 42))'
1081
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :graph_conditions=>{:a=>42}, :conditions=>{:a=>32}
1082
- @c1.eager_graph(:tags).sql.must_equal 'SELECT artists.id, tags.id AS tags_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON ((tags.id = albums_tags.tag_id) AND (tags.a = 42))'
1083
- end
1084
-
1085
- it "should respect the association's :conditions option on through" do
1086
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id, :conditions=>{:a=>42}}, [:albums_tags, :album_id, :tag_id]]
1087
- @c1.eager_graph(:tags).sql.must_equal 'SELECT artists.id, tags.id AS tags_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON ((albums.id = albums_artists.album_id) AND (albums.a = 42)) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id)'
1088
- end
1089
-
1090
- it "should respect the association's :graph_block option" do
1091
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :graph_block=>proc{|ja,lja,js| {Sequel.qualify(ja, :active)=>true}}
1092
- @c1.eager_graph(:tags).sql.must_equal 'SELECT artists.id, tags.id AS tags_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON ((tags.id = albums_tags.tag_id) AND (tags.active IS TRUE))'
1093
- end
1094
-
1095
- it "should respect the association's :block option on through" do
1096
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id, :block=>proc{|ja,lja,js| {Sequel.qualify(ja, :active)=>true}}}, [:albums_tags, :album_id, :tag_id]]
1097
- @c1.eager_graph(:tags).sql.must_equal 'SELECT artists.id, tags.id AS tags_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON ((albums.id = albums_artists.album_id) AND (albums.active IS TRUE)) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id)'
1098
- end
1099
-
1100
- it "should respect the association's :graph_only_conditions option" do
1101
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :graph_only_conditions=>{:a=>32}
1102
- @c1.eager_graph(:tags).sql.must_equal 'SELECT artists.id, tags.id AS tags_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.a = 32)'
1103
- end
1104
-
1105
- it "should respect the association's :only_conditions option on through" do
1106
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id, :only_conditions=>{:a=>42}}, [:albums_tags, :album_id, :tag_id]]
1107
- @c1.eager_graph(:tags).sql.must_equal 'SELECT artists.id, tags.id AS tags_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.a = 42) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id)'
1108
- end
1109
-
1110
- it "should create unique table aliases for all associations" do
1111
- @c1.eager_graph(:artists=>{:artists=>:artists}).sql.must_equal "SELECT artists.id, artists_0.id AS artists_0_id, artists_1.id AS artists_1_id, artists_2.id AS artists_2_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_artists AS albums_artists_0 ON (albums_artists_0.album_id = albums.id) LEFT OUTER JOIN artists AS artists_0 ON (artists_0.id = albums_artists_0.artist_id) LEFT OUTER JOIN albums_artists AS albums_artists_1 ON (albums_artists_1.artist_id = artists_0.id) LEFT OUTER JOIN albums AS albums_0 ON (albums_0.id = albums_artists_1.album_id) LEFT OUTER JOIN albums_artists AS albums_artists_2 ON (albums_artists_2.album_id = albums_0.id) LEFT OUTER JOIN artists AS artists_1 ON (artists_1.id = albums_artists_2.artist_id) LEFT OUTER JOIN albums_artists AS albums_artists_3 ON (albums_artists_3.artist_id = artists_1.id) LEFT OUTER JOIN albums AS albums_1 ON (albums_1.id = albums_artists_3.album_id) LEFT OUTER JOIN albums_artists AS albums_artists_4 ON (albums_artists_4.album_id = albums_1.id) LEFT OUTER JOIN artists AS artists_2 ON (artists_2.id = albums_artists_4.artist_id)"
1112
- end
1113
-
1114
- it "should respect the association's :order" do
1115
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :order=>[:blah1, :blah2]
1116
- @c1.order(Sequel[:artists][:blah2], Sequel[:artists][:blah3]).eager_graph(:tags).sql.must_equal 'SELECT artists.id, tags.id AS tags_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id) ORDER BY artists.blah2, artists.blah3, tags.blah1, tags.blah2'
1117
- end
1118
-
1119
- with_symbol_splitting "should not qualify qualified symbols" do
1120
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :order=>[Sequel.identifier(:blah__id), Sequel.identifier(:blah__id).desc, Sequel.desc(:blah__id), :blah__id, :album_id, Sequel.desc(:album_id), 1, Sequel.lit('RANDOM()'), Sequel.qualify(:b, :a)]
1121
- @c1.order(:artists__blah2, :artists__blah3).eager_graph(:tags).sql.must_equal 'SELECT artists.id, tags.id AS tags_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id) ORDER BY artists.blah2, artists.blah3, tags.blah__id, tags.blah__id DESC, blah.id DESC, blah.id, tags.album_id, tags.album_id DESC, 1, RANDOM(), b.a'
1122
- end
1123
-
1124
- it "should only qualify symbols, identifiers, or ordered versions in association's :order" do
1125
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :order=>[Sequel.identifier(:blah__id), Sequel.identifier(:blah__id).desc, Sequel.desc(Sequel[:blah][:id]), Sequel[:blah][:id], :album_id, Sequel.desc(:album_id), 1, Sequel.lit('RANDOM()'), Sequel.qualify(:b, :a)]
1126
- @c1.order(Sequel[:artists][:blah2], Sequel[:artists][:blah3]).eager_graph(:tags).sql.must_equal 'SELECT artists.id, tags.id AS tags_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id) ORDER BY artists.blah2, artists.blah3, tags.blah__id, tags.blah__id DESC, blah.id DESC, blah.id, tags.album_id, tags.album_id DESC, 1, RANDOM(), b.a'
1127
- end
1128
-
1129
- it "should not respect the association's :order if :order_eager_graph is false" do
1130
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :order=>[:blah1, :blah2], :order_eager_graph=>false
1131
- @c1.order(Sequel[:artists][:blah2], Sequel[:artists][:blah3]).eager_graph(:tags).sql.must_equal 'SELECT artists.id, tags.id AS tags_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id) ORDER BY artists.blah2, artists.blah3'
1132
- end
1133
-
1134
- it "should add the associations :order for multiple associations" do
1135
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :order=>[:blah1, :blah2]
1136
- @c1.many_through_many :albums, [[:albums_artists, :artist_id, :album_id]], :order=>[:blah3, :blah4]
1137
- @c1.eager_graph(:tags, :albums).sql.must_equal 'SELECT artists.id, tags.id AS tags_id, albums_0.id AS albums_0_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id) LEFT OUTER JOIN albums_artists AS albums_artists_0 ON (albums_artists_0.artist_id = artists.id) LEFT OUTER JOIN albums AS albums_0 ON (albums_0.id = albums_artists_0.album_id) ORDER BY tags.blah1, tags.blah2, albums_0.blah3, albums_0.blah4'
1138
- end
1139
-
1140
- it "should add the association's :order for cascading associations" do
1141
- @c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :order=>[:blah1, :blah2]
1142
- Tag.many_through_many :tracks, [[:albums_tags, :tag_id, :album_id], [:albums, :id, :id]], :right_primary_key=>:album_id, :order=>[:blah3, :blah4]
1143
- @c1.eager_graph(:tags=>:tracks).sql.must_equal 'SELECT artists.id, tags.id AS tags_id, tracks.id AS tracks_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id) LEFT OUTER JOIN albums_tags AS albums_tags_0 ON (albums_tags_0.tag_id = tags.id) LEFT OUTER JOIN albums AS albums_0 ON (albums_0.id = albums_tags_0.album_id) LEFT OUTER JOIN tracks ON (tracks.album_id = albums_0.id) ORDER BY tags.blah1, tags.blah2, tracks.blah3, tracks.blah4'
1144
- end
1145
-
1146
- it "should use the correct qualifier when graphing multiple tables with extra conditions" do
1147
- @c1.many_through_many :tags, [{:table=>:albums_artists, :left=>:artist_id, :right=>:album_id, :conditions=>{:a=>:b}}, {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]]
1148
- @c1.many_through_many :albums, [{:table=>:albums_artists, :left=>:artist_id, :right=>:album_id, :conditions=>{:c=>:d}}]
1149
- @c1.eager_graph(:tags, :albums).sql.must_equal 'SELECT artists.id, tags.id AS tags_id, albums_0.id AS albums_0_id FROM artists LEFT OUTER JOIN albums_artists ON ((albums_artists.artist_id = artists.id) AND (albums_artists.a = artists.b)) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags ON (tags.id = albums_tags.tag_id) LEFT OUTER JOIN albums_artists AS albums_artists_0 ON ((albums_artists_0.artist_id = artists.id) AND (albums_artists_0.c = artists.d)) LEFT OUTER JOIN albums AS albums_0 ON (albums_0.id = albums_artists_0.album_id)'
1150
- end
1151
- end
1152
-
1153
- describe "many_through_many associations with non-column expression keys" do
1154
- before do
1155
- @db = Sequel.mock(:fetch=>{:id=>1, :object_ids=>[2]})
1156
- @Foo = Class.new(Sequel::Model(@db[:foos]))
1157
- @Foo.columns :id, :object_ids
1158
- @Foo.plugin :many_through_many
1159
- m = Module.new{def obj_id; object_ids[0]; end}
1160
- @Foo.include m
1161
-
1162
- @Foo.many_through_many :foos, [
1163
- [:f, Sequel.subscript(:l, 0), Sequel.subscript(:r, 0)],
1164
- [:f, Sequel.subscript(:l, 1), Sequel.subscript(:r, 1)]
1165
- ], :class=>@Foo, :left_primary_key=>:obj_id, :left_primary_key_column=>Sequel.subscript(:object_ids, 0), :right_primary_key=>Sequel.subscript(:object_ids, 0), :right_primary_key_method=>:obj_id
1166
- @foo = @Foo.load(:id=>1, :object_ids=>[2])
1167
- @db.sqls
1168
- end
1169
-
1170
- it "should have working regular association methods" do
1171
- @Foo.first.foos.must_equal [@foo]
1172
- @db.sqls.must_equal ["SELECT * FROM foos LIMIT 1", "SELECT foos.* FROM foos INNER JOIN f ON (f.r[1] = foos.object_ids[0]) INNER JOIN f AS f_0 ON (f_0.r[0] = f.l[1]) WHERE (f_0.l[0] = 2)"]
1173
- end
1174
-
1175
- it "should have working eager loading methods" do
1176
- @db.fetch = [[{:id=>1, :object_ids=>[2]}], [{:id=>1, :object_ids=>[2], :x_foreign_key_x=>2}]]
1177
- @Foo.eager(:foos).all.map{|o| [o, o.foos]}.must_equal [[@foo, [@foo]]]
1178
- @db.sqls.must_equal ["SELECT * FROM foos", "SELECT foos.*, f_0.l[0] AS x_foreign_key_x FROM foos INNER JOIN f ON (f.r[1] = foos.object_ids[0]) INNER JOIN f AS f_0 ON (f_0.r[0] = f.l[1]) WHERE (f_0.l[0] IN (2))"]
1179
- end
1180
-
1181
- it "should have working eager graphing methods" do
1182
- @db.fetch = {:id=>1, :object_ids=>[2], :foos_0_id=>1, :foos_0_object_ids=>[2]}
1183
- @Foo.eager_graph(:foos).all.map{|o| [o, o.foos]}.must_equal [[@foo, [@foo]]]
1184
- @db.sqls.must_equal ["SELECT foos.id, foos.object_ids, foos_0.id AS foos_0_id, foos_0.object_ids AS foos_0_object_ids FROM foos LEFT OUTER JOIN f ON (f.l[0] = foos.object_ids[0]) LEFT OUTER JOIN f AS f_0 ON (f_0.l[1] = f.r[0]) LEFT OUTER JOIN foos AS foos_0 ON (foos_0.object_ids[0] = f_0.r[1])"]
1185
- end
1186
-
1187
- it "should have working filter by associations with model instances" do
1188
- @Foo.first(:foos=>@foo).must_equal @foo
1189
- @db.sqls.must_equal ["SELECT * FROM foos WHERE (foos.object_ids[0] IN (SELECT f.l[0] FROM f INNER JOIN f AS f_0 ON (f_0.l[1] = f.r[0]) WHERE ((f_0.r[1] = 2) AND (f.l[0] IS NOT NULL)))) LIMIT 1"]
1190
- end
1191
-
1192
- it "should have working filter by associations with model datasets" do
1193
- @Foo.first(:foos=>@Foo.where(:id=>@foo.id)).must_equal @foo
1194
- @db.sqls.must_equal ["SELECT * FROM foos WHERE (foos.object_ids[0] IN (SELECT f.l[0] FROM f INNER JOIN f AS f_0 ON (f_0.l[1] = f.r[0]) WHERE ((f_0.r[1] IN (SELECT foos.object_ids[0] FROM foos WHERE ((id = 1) AND (foos.object_ids[0] IS NOT NULL)))) AND (f.l[0] IS NOT NULL)))) LIMIT 1"]
1195
- end
1196
- end
1197
-
1198
- describe Sequel::Model, "one_through_many" do
1199
- before do
1200
- class ::Artist < Sequel::Model
1201
- attr_accessor :yyy
1202
- columns :id
1203
- plugin :many_through_many
1204
- end
1205
- class ::Tag < Sequel::Model
1206
- columns :id, :h1, :h2
1207
- end
1208
- @c1 = Artist
1209
- @c2 = Tag
1210
- @dataset = @c2.dataset = @c2.dataset.with_fetch(:id=>1)
1211
- DB.reset
1212
- end
1213
- after do
1214
- Object.send(:remove_const, :Artist)
1215
- Object.send(:remove_const, :Tag)
1216
- end
1217
-
1218
- it "should support using a custom :left_primary_key option when eager loading many_to_many associations" do
1219
- @c1.send(:define_method, :id3){id*3}
1220
- @c1.dataset = @c1.dataset.with_fetch(:id=>1)
1221
- @c2.dataset = @c2.dataset.with_fetch(:id=>4, :x_foreign_key_x=>3)
1222
- @c1.one_through_many :tag, :through=>[[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :left_primary_key=>:id3
1223
- a = @c1.eager(:tag).all
1224
- a.must_equal [@c1.load(:id => 1)]
1225
- DB.sqls.must_equal ['SELECT * FROM artists', "SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (3))"]
1226
- a.first.tag.must_equal @c2.load(:id=>4)
1227
- DB.sqls.must_equal []
1228
- end
1229
-
1230
- it "should handle a :predicate_key option to change the SQL used in the lookup" do
1231
- @c1.dataset = @c1.dataset.with_fetch(:id=>1)
1232
- @c2.dataset = @c2.dataset.with_fetch(:id=>4, :x_foreign_key_x=>1)
1233
- @c1.one_through_many :tag, :through=>[[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :predicate_key=>(Sequel[:albums_artists][:artist_id] / 3)
1234
- a = @c1.eager(:tag).all
1235
- a.must_equal [@c1.load(:id => 1)]
1236
- DB.sqls.must_equal ['SELECT * FROM artists', "SELECT tags.*, (albums_artists.artist_id / 3) AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((albums_artists.artist_id / 3) IN (1))"]
1237
- a.first.tag.must_equal @c2.load(:id=>4)
1238
- end
1239
-
1240
- it "should raise an error if in invalid form of through is used" do
1241
- proc{@c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id]]}.must_raise(Sequel::Error)
1242
- proc{@c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], {:table=>:album_tags, :left=>:album_id}]}.must_raise(Sequel::Error)
1243
- proc{@c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], :album_tags]}.must_raise(Sequel::Error)
1244
- end
1245
-
1246
- it "should allow only two arguments with the :through option" do
1247
- @c1.one_through_many :tag, :through=>[[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
1248
- n = @c1.load(:id => 1234)
1249
- n.tag_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234) LIMIT 1'
1250
- n.tag.must_equal @c2.load(:id=>1)
1251
- end
1252
-
1253
- it "should be clonable" do
1254
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
1255
- @c1.many_through_many :tags, :clone=>:tag
1256
- @c1.one_through_many :tag, :clone=>:tags
1257
- n = @c1.load(:id => 1234)
1258
- n.tag_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234) LIMIT 1'
1259
- n.tag.must_equal @c2.load(:id=>1)
1260
- end
1261
-
1262
- it "should use join tables given" do
1263
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
1264
- n = @c1.load(:id => 1234)
1265
- n.tag_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234) LIMIT 1'
1266
- n.tag.must_equal @c2.load(:id=>1)
1267
- end
1268
-
1269
- it "should handle multiple aliasing of tables" do
1270
- begin
1271
- class ::Album < Sequel::Model
1272
- end
1273
- @c1.one_through_many :album, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_artists, :album_id, :artist_id], [:artists, :id, :id], [:albums_artists, :artist_id, :album_id]]
1274
- n = @c1.load(:id => 1234)
1275
- n.album_dataset.sql.must_equal 'SELECT albums.* FROM albums INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) INNER JOIN artists ON (artists.id = albums_artists.artist_id) INNER JOIN albums_artists AS albums_artists_0 ON (albums_artists_0.artist_id = artists.id) INNER JOIN albums AS albums_0 ON (albums_0.id = albums_artists_0.album_id) INNER JOIN albums_artists AS albums_artists_1 ON (albums_artists_1.album_id = albums_0.id) WHERE (albums_artists_1.artist_id = 1234) LIMIT 1'
1276
- n.album.must_equal Album.load(:id=>1, :x=>1)
1277
- ensure
1278
- Object.send(:remove_const, :Album)
1279
- end
1280
- end
1281
-
1282
- it "should use explicit class if given" do
1283
- @c1.one_through_many :album_tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag
1284
- n = @c1.load(:id => 1234)
1285
- n.album_tag_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234) LIMIT 1'
1286
- n.album_tag.must_equal @c2.load(:id=>1)
1287
- end
1288
-
1289
- it "should accept :left_primary_key and :right_primary_key option for primary keys to use in current and associated table" do
1290
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :right_primary_key=>:tag_id, :left_primary_key=>:yyy
1291
- n = @c1.load(:id => 1234)
1292
- n.yyy = 85
1293
- n.tag_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.tag_id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 85) LIMIT 1'
1294
- n.tag.must_equal @c2.load(:id=>1)
1295
- end
1296
-
1297
- it "should handle composite keys" do
1298
- @c1.one_through_many :tag, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
1299
- n = @c1.load(:id => 1234)
1300
- n.yyy = 85
1301
- n.tag_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((albums_artists.b1 = 1234) AND (albums_artists.b2 = 85)) LIMIT 1'
1302
- n.tag.must_equal @c2.load(:id=>1)
1303
- end
1304
-
1305
- it "should allowing filtering by one_through_many associations" do
1306
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
1307
- @c1.filter(:tag=>@c2.load(:id=>1234)).sql.must_equal 'SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM albums_artists INNER JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE ((albums_tags.tag_id = 1234) AND (albums_artists.artist_id IS NOT NULL))))'
1308
- end
1309
-
1310
- it "should allowing filtering by one_through_many associations with a single through table" do
1311
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id]]
1312
- @c1.filter(:tag=>@c2.load(:id=>1234)).sql.must_equal 'SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM albums_artists WHERE ((albums_artists.album_id = 1234) AND (albums_artists.artist_id IS NOT NULL))))'
1313
- end
1314
-
1315
- it "should allowing filtering by one_through_many associations with aliased tables" do
1316
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums_artists, :id, :id], [:albums_artists, :album_id, :tag_id]]
1317
- @c1.filter(:tag=>@c2.load(:id=>1234)).sql.must_equal 'SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM albums_artists INNER JOIN albums_artists AS albums_artists_0 ON (albums_artists_0.id = albums_artists.album_id) INNER JOIN albums_artists AS albums_artists_1 ON (albums_artists_1.album_id = albums_artists_0.id) WHERE ((albums_artists_1.tag_id = 1234) AND (albums_artists.artist_id IS NOT NULL))))'
1318
- end
1319
-
1320
- it "should allowing filtering by one_through_many associations with composite keys" do
1321
- @c1.one_through_many :tag, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
1322
- @c1.filter(:tag=>@c2.load(:h1=>1234, :h2=>85)).sql.must_equal 'SELECT * FROM artists WHERE ((artists.id, artists.yyy) IN (SELECT albums_artists.b1, albums_artists.b2 FROM albums_artists INNER JOIN albums ON ((albums.d1 = albums_artists.c1) AND (albums.d2 = albums_artists.c2)) INNER JOIN albums_tags ON ((albums_tags.f1 = albums.e1) AND (albums_tags.f2 = albums.e2)) WHERE ((albums_tags.g1 = 1234) AND (albums_tags.g2 = 85) AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL))))'
1323
- end
1324
-
1325
- it "should allowing filtering by one_through_many associations with :conditions" do
1326
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:name=>'A'}
1327
- @c1.filter(:tag=>@c2.load(:id=>1234)).sql.must_equal "SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((name = 'A') AND (albums_artists.artist_id IS NOT NULL) AND (tags.id = 1234))))"
1328
- end
1329
-
1330
- it "should allowing filtering by one_through_many associations with :conditions with a single through table" do
1331
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id]], :conditions=>{:name=>'A'}
1332
- @c1.filter(:tag=>@c2.load(:id=>1234)).sql.must_equal "SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_artists ON (albums_artists.album_id = tags.id) WHERE ((name = 'A') AND (albums_artists.artist_id IS NOT NULL) AND (tags.id = 1234))))"
1333
- end
1334
-
1335
- it "should allowing filtering by one_through_many associations with :conditions and composite keys" do
1336
- @c1.one_through_many :tag, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy], :conditions=>{:name=>'A'}
1337
- @c1.filter(:tag=>@c2.load(:id=>1, :h1=>1234, :h2=>85)).sql.must_equal "SELECT * FROM artists WHERE ((artists.id, artists.yyy) IN (SELECT albums_artists.b1, albums_artists.b2 FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((name = 'A') AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL) AND (tags.id = 1))))"
1338
- end
1339
-
1340
- it "should allowing filtering by one_through_many associations with :order" do
1341
- @c2.dataset = @c2.dataset.with_extend{def supports_distinct_on?; true end}
1342
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :order=>:name
1343
- @c1.filter(:tag=>@c2.load(:id=>1234)).sql.must_equal 'SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((albums_artists.artist_id IS NOT NULL) AND ((albums_artists.artist_id, tags.id) IN (SELECT DISTINCT ON (albums_artists.artist_id) albums_artists.artist_id, tags.id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) ORDER BY albums_artists.artist_id, name)) AND (tags.id = 1234))))'
1344
- end
1345
-
1346
- it "should allowing filtering by one_through_many associations with :order and composite keys" do
1347
- @c2.dataset = @c2.dataset.with_extend{def supports_distinct_on?; true end}
1348
- @c1.one_through_many :tag, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy], :order=>:name
1349
- @c1.filter(:tag=>@c2.load(:id=>1, :h1=>1234, :h2=>85)).sql.must_equal 'SELECT * FROM artists WHERE ((artists.id, artists.yyy) IN (SELECT albums_artists.b1, albums_artists.b2 FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL) AND ((albums_artists.b1, albums_artists.b2, tags.id) IN (SELECT DISTINCT ON (albums_artists.b1, albums_artists.b2) albums_artists.b1, albums_artists.b2, tags.id FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) ORDER BY albums_artists.b1, albums_artists.b2, name)) AND (tags.id = 1))))'
1350
- end
1351
-
1352
- it "should allowing filtering by one_through_many associations with :order and :conditions" do
1353
- @c2.dataset = @c2.dataset.with_extend{def supports_distinct_on?; true end}
1354
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:name=>'A'}, :order=>:name
1355
- @c1.filter(:tag=>@c2.load(:id=>1234)).sql.must_equal "SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((name = 'A') AND (albums_artists.artist_id IS NOT NULL) AND ((albums_artists.artist_id, tags.id) IN (SELECT DISTINCT ON (albums_artists.artist_id) albums_artists.artist_id, tags.id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (name = 'A') ORDER BY albums_artists.artist_id, name)) AND (tags.id = 1234))))"
1356
- end
1357
-
1358
- it "should allowing filtering by one_through_many associations with :order and :conditions and composite keys" do
1359
- @c2.dataset = @c2.dataset.with_extend{def supports_distinct_on?; true end}
1360
- @c1.one_through_many :tag, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy], :conditions=>{:name=>'A'}, :order=>:name
1361
- @c1.filter(:tag=>@c2.load(:id=>1, :h1=>1234, :h2=>85)).sql.must_equal "SELECT * FROM artists WHERE ((artists.id, artists.yyy) IN (SELECT albums_artists.b1, albums_artists.b2 FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((name = 'A') AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL) AND ((albums_artists.b1, albums_artists.b2, tags.id) IN (SELECT DISTINCT ON (albums_artists.b1, albums_artists.b2) albums_artists.b1, albums_artists.b2, tags.id FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE (name = 'A') ORDER BY albums_artists.b1, albums_artists.b2, name)) AND (tags.id = 1))))"
1362
- end
1363
-
1364
- it "should allowing excluding by one_through_many associations" do
1365
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
1366
- @c1.exclude(:tag=>@c2.load(:id=>1234)).sql.must_equal 'SELECT * FROM artists WHERE ((artists.id NOT IN (SELECT albums_artists.artist_id FROM albums_artists INNER JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE ((albums_tags.tag_id = 1234) AND (albums_artists.artist_id IS NOT NULL)))) OR (artists.id IS NULL))'
1367
- end
1368
-
1369
- it "should allowing excluding by one_through_many associations with composite keys" do
1370
- @c1.one_through_many :tag, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
1371
- @c1.exclude(:tag=>@c2.load(:h1=>1234, :h2=>85)).sql.must_equal 'SELECT * FROM artists WHERE (((artists.id, artists.yyy) NOT IN (SELECT albums_artists.b1, albums_artists.b2 FROM albums_artists INNER JOIN albums ON ((albums.d1 = albums_artists.c1) AND (albums.d2 = albums_artists.c2)) INNER JOIN albums_tags ON ((albums_tags.f1 = albums.e1) AND (albums_tags.f2 = albums.e2)) WHERE ((albums_tags.g1 = 1234) AND (albums_tags.g2 = 85) AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL)))) OR (artists.id IS NULL) OR (artists.yyy IS NULL))'
1372
- end
1373
-
1374
- it "should allowing excluding by one_through_many associations with :conditions" do
1375
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:name=>'A'}
1376
- @c1.exclude(:tag=>@c2.load(:id=>1234)).sql.must_equal "SELECT * FROM artists WHERE ((artists.id NOT IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((name = 'A') AND (albums_artists.artist_id IS NOT NULL) AND (tags.id = 1234)))) OR (artists.id IS NULL))"
1377
- end
1378
-
1379
- it "should allowing excluding by one_through_many associations with :conditions and composite keys" do
1380
- @c1.one_through_many :tag, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy], :conditions=>{:name=>'A'}
1381
- @c1.exclude(:tag=>@c2.load(:id=>1, :h1=>1234, :h2=>85)).sql.must_equal "SELECT * FROM artists WHERE (((artists.id, artists.yyy) NOT IN (SELECT albums_artists.b1, albums_artists.b2 FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((name = 'A') AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL) AND (tags.id = 1)))) OR (artists.id IS NULL) OR (artists.yyy IS NULL))"
1382
- end
1383
-
1384
- it "should allowing filtering by multiple one_through_many associations" do
1385
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
1386
- @c1.filter(:tag=>[@c2.load(:id=>1234), @c2.load(:id=>2345)]).sql.must_equal 'SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM albums_artists INNER JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE ((albums_tags.tag_id IN (1234, 2345)) AND (albums_artists.artist_id IS NOT NULL))))'
1387
- end
1388
-
1389
- it "should allowing filtering by multiple one_through_many associations with composite keys" do
1390
- @c1.one_through_many :tag, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
1391
- @c1.filter(:tag=>[@c2.load(:h1=>1234, :h2=>85), @c2.load(:h1=>2345, :h2=>95)]).sql.must_equal 'SELECT * FROM artists WHERE ((artists.id, artists.yyy) IN (SELECT albums_artists.b1, albums_artists.b2 FROM albums_artists INNER JOIN albums ON ((albums.d1 = albums_artists.c1) AND (albums.d2 = albums_artists.c2)) INNER JOIN albums_tags ON ((albums_tags.f1 = albums.e1) AND (albums_tags.f2 = albums.e2)) WHERE (((albums_tags.g1, albums_tags.g2) IN ((1234, 85), (2345, 95))) AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL))))'
1392
- end
1393
-
1394
- it "should allowing filtering by multiple one_through_many associations with :conditions" do
1395
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:name=>'A'}
1396
- @c1.filter(:tag=>[@c2.load(:id=>1234), @c2.load(:id=>2345)]).sql.must_equal "SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((name = 'A') AND (albums_artists.artist_id IS NOT NULL) AND (tags.id IN (1234, 2345)))))"
1397
- end
1398
-
1399
- it "should allowing filtering by multiple one_through_many associations with :conditions and composite keys" do
1400
- @c1.one_through_many :tag, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy], :conditions=>{:name=>'A'}
1401
- @c1.filter(:tag=>[@c2.load(:id=>1, :h1=>1234, :h2=>85), @c2.load(:id=>2, :h1=>2345, :h2=>95)]).sql.must_equal "SELECT * FROM artists WHERE ((artists.id, artists.yyy) IN (SELECT albums_artists.b1, albums_artists.b2 FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((name = 'A') AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL) AND (tags.id IN (1, 2)))))"
1402
- end
1403
-
1404
- it "should allowing excluding by multiple one_through_many associations" do
1405
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
1406
- @c1.exclude(:tag=>[@c2.load(:id=>1234), @c2.load(:id=>2345)]).sql.must_equal 'SELECT * FROM artists WHERE ((artists.id NOT IN (SELECT albums_artists.artist_id FROM albums_artists INNER JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE ((albums_tags.tag_id IN (1234, 2345)) AND (albums_artists.artist_id IS NOT NULL)))) OR (artists.id IS NULL))'
1407
- end
1408
-
1409
- it "should allowing excluding by multiple one_through_many associations with composite keys" do
1410
- @c1.one_through_many :tag, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
1411
- @c1.exclude(:tag=>[@c2.load(:h1=>1234, :h2=>85), @c2.load(:h1=>2345, :h2=>95)]).sql.must_equal 'SELECT * FROM artists WHERE (((artists.id, artists.yyy) NOT IN (SELECT albums_artists.b1, albums_artists.b2 FROM albums_artists INNER JOIN albums ON ((albums.d1 = albums_artists.c1) AND (albums.d2 = albums_artists.c2)) INNER JOIN albums_tags ON ((albums_tags.f1 = albums.e1) AND (albums_tags.f2 = albums.e2)) WHERE (((albums_tags.g1, albums_tags.g2) IN ((1234, 85), (2345, 95))) AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL)))) OR (artists.id IS NULL) OR (artists.yyy IS NULL))'
1412
- end
1413
-
1414
- it "should allowing excluding by multiple one_through_many associations with :conditions" do
1415
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:name=>'A'}
1416
- @c1.exclude(:tag=>[@c2.load(:id=>1234), @c2.load(:id=>2345)]).sql.must_equal "SELECT * FROM artists WHERE ((artists.id NOT IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((name = 'A') AND (albums_artists.artist_id IS NOT NULL) AND (tags.id IN (1234, 2345))))) OR (artists.id IS NULL))"
1417
- end
1418
-
1419
- it "should allowing excluding by multiple one_through_many associations with :conditions and composite keys" do
1420
- @c1.one_through_many :tag, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy], :conditions=>{:name=>'A'}
1421
- @c1.exclude(:tag=>[@c2.load(:id=>1, :h1=>1234, :h2=>85), @c2.load(:id=>2, :h1=>2345, :h2=>95)]).sql.must_equal "SELECT * FROM artists WHERE (((artists.id, artists.yyy) NOT IN (SELECT albums_artists.b1, albums_artists.b2 FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((name = 'A') AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL) AND (tags.id IN (1, 2))))) OR (artists.id IS NULL) OR (artists.yyy IS NULL))"
1422
- end
1423
-
1424
- it "should allowing filtering/excluding one_through_many associations with NULL values" do
1425
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
1426
- @c1.filter(:tag=>@c2.new).sql.must_equal 'SELECT * FROM artists WHERE \'f\''
1427
- @c1.exclude(:tag=>@c2.new).sql.must_equal 'SELECT * FROM artists WHERE \'t\''
1428
- end
1429
-
1430
- it "should allowing filtering by one_through_many association datasets" do
1431
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
1432
- @c1.filter(:tag=>@c2.filter(:x=>1)).sql.must_equal 'SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM albums_artists INNER JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE ((albums_tags.tag_id IN (SELECT tags.id FROM tags WHERE ((x = 1) AND (tags.id IS NOT NULL)))) AND (albums_artists.artist_id IS NOT NULL))))'
1433
- end
1434
-
1435
- it "should allowing filtering by one_through_many association datasets with composite keys" do
1436
- @c1.one_through_many :tag, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
1437
- @c1.filter(:tag=>@c2.filter(:x=>1)).sql.must_equal 'SELECT * FROM artists WHERE ((artists.id, artists.yyy) IN (SELECT albums_artists.b1, albums_artists.b2 FROM albums_artists INNER JOIN albums ON ((albums.d1 = albums_artists.c1) AND (albums.d2 = albums_artists.c2)) INNER JOIN albums_tags ON ((albums_tags.f1 = albums.e1) AND (albums_tags.f2 = albums.e2)) WHERE (((albums_tags.g1, albums_tags.g2) IN (SELECT tags.h1, tags.h2 FROM tags WHERE ((x = 1) AND (tags.h1 IS NOT NULL) AND (tags.h2 IS NOT NULL)))) AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL))))'
1438
- end
1439
-
1440
- it "should allowing filtering by one_through_many association datasets with :conditions" do
1441
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:name=>'A'}
1442
- @c1.filter(:tag=>@c2.filter(:x=>1)).sql.must_equal "SELECT * FROM artists WHERE (artists.id IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((name = 'A') AND (albums_artists.artist_id IS NOT NULL) AND (tags.id IN (SELECT tags.id FROM tags WHERE (x = 1))))))"
1443
- end
1444
-
1445
- it "should allowing filtering by one_through_many association datasets with :conditions and composite keys" do
1446
- @c1.one_through_many :tag, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy], :conditions=>{:name=>'A'}
1447
- @c1.filter(:tag=>@c2.filter(:x=>1)).sql.must_equal "SELECT * FROM artists WHERE ((artists.id, artists.yyy) IN (SELECT albums_artists.b1, albums_artists.b2 FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((name = 'A') AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL) AND (tags.id IN (SELECT tags.id FROM tags WHERE (x = 1))))))"
1448
- end
1449
-
1450
- it "should allowing excluding by one_through_many association datasets" do
1451
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
1452
- @c1.exclude(:tag=>@c2.filter(:x=>1)).sql.must_equal 'SELECT * FROM artists WHERE ((artists.id NOT IN (SELECT albums_artists.artist_id FROM albums_artists INNER JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE ((albums_tags.tag_id IN (SELECT tags.id FROM tags WHERE ((x = 1) AND (tags.id IS NOT NULL)))) AND (albums_artists.artist_id IS NOT NULL)))) OR (artists.id IS NULL))'
1453
- end
1454
-
1455
- it "should allowing excluding by one_through_many association datasets with composite keys" do
1456
- @c1.one_through_many :tag, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
1457
- @c1.exclude(:tag=>@c2.filter(:x=>1)).sql.must_equal 'SELECT * FROM artists WHERE (((artists.id, artists.yyy) NOT IN (SELECT albums_artists.b1, albums_artists.b2 FROM albums_artists INNER JOIN albums ON ((albums.d1 = albums_artists.c1) AND (albums.d2 = albums_artists.c2)) INNER JOIN albums_tags ON ((albums_tags.f1 = albums.e1) AND (albums_tags.f2 = albums.e2)) WHERE (((albums_tags.g1, albums_tags.g2) IN (SELECT tags.h1, tags.h2 FROM tags WHERE ((x = 1) AND (tags.h1 IS NOT NULL) AND (tags.h2 IS NOT NULL)))) AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL)))) OR (artists.id IS NULL) OR (artists.yyy IS NULL))'
1458
- end
1459
-
1460
- it "should allowing excluding by one_through_many association datasets with :conditions" do
1461
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:name=>'A'}
1462
- @c1.exclude(:tag=>@c2.filter(:x=>1)).sql.must_equal "SELECT * FROM artists WHERE ((artists.id NOT IN (SELECT albums_artists.artist_id FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((name = 'A') AND (albums_artists.artist_id IS NOT NULL) AND (tags.id IN (SELECT tags.id FROM tags WHERE (x = 1)))))) OR (artists.id IS NULL))"
1463
- end
1464
-
1465
- it "should allowing excluding by one_through_many association datasets with :conditions and composite keys" do
1466
- @c1.one_through_many :tag, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy], :conditions=>{:name=>'A'}
1467
- @c1.exclude(:tag=>@c2.filter(:x=>1)).sql.must_equal "SELECT * FROM artists WHERE (((artists.id, artists.yyy) NOT IN (SELECT albums_artists.b1, albums_artists.b2 FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((name = 'A') AND (albums_artists.b1 IS NOT NULL) AND (albums_artists.b2 IS NOT NULL) AND (tags.id IN (SELECT tags.id FROM tags WHERE (x = 1)))))) OR (artists.id IS NULL) OR (artists.yyy IS NULL))"
1468
- end
1469
-
1470
- it "should support a :conditions option" do
1471
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:a=>32}
1472
- n = @c1.load(:id => 1234)
1473
- n.tag_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((a = 32) AND (albums_artists.artist_id = 1234)) LIMIT 1'
1474
- n.tag.must_equal @c2.load(:id=>1)
1475
-
1476
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>Sequel.lit('a = ?', 42)
1477
- n = @c1.load(:id => 1234)
1478
- n.tag_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((a = 42) AND (albums_artists.artist_id = 1234)) LIMIT 1'
1479
- n.tag.must_equal @c2.load(:id=>1)
1480
- end
1481
-
1482
- it "should support an :order option" do
1483
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :order=>:blah
1484
- n = @c1.load(:id => 1234)
1485
- n.tag_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234) ORDER BY blah LIMIT 1'
1486
- n.tag.must_equal @c2.load(:id=>1)
1487
- end
1488
-
1489
- it "should support an array for the :order option" do
1490
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :order=>[:blah1, :blah2]
1491
- n = @c1.load(:id => 1234)
1492
- n.tag_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234) ORDER BY blah1, blah2 LIMIT 1'
1493
- n.tag.must_equal @c2.load(:id=>1)
1494
- end
1495
-
1496
- it "should support a select option" do
1497
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :select=>:blah
1498
- n = @c1.load(:id => 1234)
1499
- n.tag_dataset.sql.must_equal 'SELECT blah FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234) LIMIT 1'
1500
- n.tag.must_equal @c2.load(:id=>1)
1501
- end
1502
-
1503
- it "should support an array for the select option" do
1504
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :select=>[Sequel::SQL::ColumnAll.new(:tags), Sequel[:albums][:name]]
1505
- n = @c1.load(:id => 1234)
1506
- n.tag_dataset.sql.must_equal 'SELECT tags.*, albums.name FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234) LIMIT 1'
1507
- n.tag.must_equal @c2.load(:id=>1)
1508
- end
1509
-
1510
- it "should accept a block" do
1511
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]] do |ds| ds.filter(:yyy=>@yyy) end
1512
- n = @c1.load(:id => 1234)
1513
- n.yyy = 85
1514
- n.tag_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((albums_artists.artist_id = 1234) AND (yyy = 85)) LIMIT 1'
1515
- n.tag.must_equal @c2.load(:id=>1)
1516
- end
1517
-
1518
- it "should allow the :order option while accepting a block" do
1519
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :order=>:blah do |ds| ds.filter(:yyy=>@yyy) end
1520
- n = @c1.load(:id => 1234)
1521
- n.yyy = 85
1522
- n.tag_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((albums_artists.artist_id = 1234) AND (yyy = 85)) ORDER BY blah LIMIT 1'
1523
- n.tag.must_equal @c2.load(:id=>1)
1524
- end
1525
-
1526
- it "should support a :dataset option that is used instead of the default" do
1527
- @c1.one_through_many :tag, [[:a, :b, :c]], :dataset=>proc{Tag.join(:albums_tags, [:tag_id]).join(:albums, [:album_id]).join(:albums_artists, [:album_id]).filter(Sequel[:albums_artists][:artist_id]=>id)}
1528
- n = @c1.load(:id => 1234)
1529
- n.tag_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags USING (tag_id) INNER JOIN albums USING (album_id) INNER JOIN albums_artists USING (album_id) WHERE (albums_artists.artist_id = 1234) LIMIT 1'
1530
- n.tag.must_equal @c2.load(:id=>1)
1531
- end
1532
-
1533
- it "should support a :limit option to specify an offset" do
1534
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :limit=>[nil, 10]
1535
- n = @c1.load(:id => 1234)
1536
- n.tag_dataset.sql.must_equal 'SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234) LIMIT 1 OFFSET 10'
1537
- n.tag.must_equal @c2.load(:id=>1)
1538
- end
1539
-
1540
- it "should have the :eager option affect the _dataset method" do
1541
- @c2.many_to_many :fans
1542
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :eager=>:fans
1543
- @c1.load(:id => 1234).tag_dataset.opts[:eager].must_equal(:fans=>nil)
1544
- end
1545
-
1546
- it "should return the associated object" do
1547
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
1548
- @c1.load(:id => 1234).tag.must_equal @c2.load(:id=>1)
1549
- DB.sqls.must_equal ['SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234) LIMIT 1']
1550
- end
1551
-
1552
- it "should populate cache when accessed" do
1553
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
1554
- n = @c1.load(:id => 1234)
1555
- n.associations[:tag].must_be_nil
1556
- DB.sqls.must_equal []
1557
- n.tag.must_equal @c2.load(:id=>1)
1558
- DB.sqls.must_equal ['SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234) LIMIT 1']
1559
- n.associations[:tag].must_equal n.tag
1560
- DB.sqls.length.must_equal 0
1561
- end
1562
-
1563
- it "should use cache if available" do
1564
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
1565
- n = @c1.load(:id => 1234)
1566
- n.associations[:tag] = nil
1567
- n.tag.must_be_nil
1568
- DB.sqls.must_equal []
1569
- end
1570
-
1571
- it "should not use cache if asked to reload" do
1572
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
1573
- n = @c1.load(:id => 1234)
1574
- n.associations[:tag] = nil
1575
- DB.sqls.must_equal []
1576
- n.tag(:reload=>true).must_equal @c2.load(:id=>1)
1577
- DB.sqls.must_equal ['SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1234) LIMIT 1']
1578
- n.associations[:tag].must_equal n.tag
1579
- DB.sqls.length.must_equal 0
1580
- end
1581
-
1582
- it "should not add associations methods directly to class" do
1583
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
1584
- im = @c1.instance_methods
1585
- im.must_include(:tag)
1586
- im.must_include(:tag_dataset)
1587
- im2 = @c1.instance_methods(false)
1588
- im2.wont_include(:tag)
1589
- im2.wont_include(:tag_dataset)
1590
- end
1591
-
1592
- it "should support after_load association callback" do
1593
- h = []
1594
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :after_load=>:al
1595
- @c1.class_eval do
1596
- self::Foo = h
1597
- def al(v)
1598
- model::Foo << v.pk * 20
1599
- end
1600
- end
1601
- @c2.dataset = @c2.dataset.with_fetch(:id=>20)
1602
- p = @c1.load(:id=>10, :parent_id=>20)
1603
- p.tag
1604
- h.must_equal [400]
1605
- p.tag.pk.must_equal 20
1606
- end
1607
- end
1608
-
1609
- describe "one_through_many eager loading methods" do
1610
- before do
1611
- class ::Artist < Sequel::Model
1612
- plugin :many_through_many
1613
- one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]]
1614
- one_through_many :other_tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>:Tag
1615
- one_through_many :album, [[:albums_artists, :artist_id, :album_id]]
1616
- one_through_many :artist, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_artists, :album_id, :artist_id]]
1617
- end
1618
- class ::Tag < Sequel::Model
1619
- plugin :many_through_many
1620
- one_through_many :track, [[:albums_tags, :tag_id, :album_id], [:albums, :id, :id]], :right_primary_key=>:album_id
1621
- end
1622
- class ::Album < Sequel::Model
1623
- end
1624
- class ::Track < Sequel::Model
1625
- end
1626
- Artist.dataset = Artist.dataset.with_fetch(proc do |sql|
1627
- h = {:id => 1}
1628
- if sql =~ /FROM artists LEFT OUTER JOIN albums_artists/
1629
- h[:tag_id] = 2
1630
- h[:album_id] = 3 if sql =~ /LEFT OUTER JOIN albums AS album/
1631
- h[:track_id] = 4 if sql =~ /LEFT OUTER JOIN tracks AS track/
1632
- h[:other_tag_id] = 9 if sql =~ /other_tag\.id AS other_tag_id/
1633
- h[:artist_id] = 10 if sql =~ /artists_0\.id AS artist_id/
1634
- end
1635
- h
1636
- end)
1637
- Artist.dataset.columns(:id)
1638
-
1639
- Tag.dataset = Tag.dataset.with_fetch(proc do |sql|
1640
- h = {:id => 2}
1641
- if sql =~ /albums_artists.artist_id IN \(([18])\)/
1642
- h[:x_foreign_key_x] = $1.to_i
1643
- elsif sql =~ /\(\(albums_artists.b1, albums_artists.b2\) IN \(\(1, 8\)\)\)/
1644
- h.merge!(:x_foreign_key_0_x=>1, :x_foreign_key_1_x=>8)
1645
- end
1646
- h[:tag_id] = h.delete(:id) if sql =~ /albums_artists.artist_id IN \(8\)/
1647
- h
1648
- end)
1649
-
1650
- Album.dataset = Album.dataset.with_fetch(proc do |sql|
1651
- h = {:id => 3}
1652
- h[:x_foreign_key_x] = 1 if sql =~ /albums_artists.artist_id IN \(1\)/
1653
- h
1654
- end)
1655
-
1656
- Track.dataset = Track.dataset.with_fetch(proc do |sql|
1657
- h = {:id => 4}
1658
- h[:x_foreign_key_x] = 2 if sql =~ /albums_tags.tag_id IN \(2\)/
1659
- h
1660
- end)
1661
-
1662
- @c1 = Artist
1663
- DB.reset
1664
- end
1665
- after do
1666
- [:Artist, :Tag, :Album, :Track].each{|x| Object.send(:remove_const, x)}
1667
- end
1668
-
1669
- it "should eagerly load a single one_through_many association" do
1670
- a = @c1.eager(:tag).all
1671
- a.must_equal [@c1.load(:id=>1)]
1672
- DB.sqls.must_equal ['SELECT * FROM artists', 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))']
1673
- a.first.tag.must_equal Tag.load(:id=>2)
1674
- DB.sqls.length.must_equal 0
1675
- end
1676
-
1677
- it "should eagerly load multiple associations in a single call" do
1678
- a = @c1.eager(:tag, :album).all
1679
- a.must_equal [@c1.load(:id=>1)]
1680
- DB.sqls.must_equal ['SELECT * FROM artists',
1681
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))',
1682
- 'SELECT albums.*, albums_artists.artist_id AS x_foreign_key_x FROM albums INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))']
1683
- a = a.first
1684
- a.tag.must_equal Tag.load(:id=>2)
1685
- a.album.must_equal Album.load(:id=>3)
1686
- DB.sqls.length.must_equal 0
1687
- end
1688
-
1689
- it "should eagerly load multiple associations in separate" do
1690
- a = @c1.eager(:tag).eager(:album).all
1691
- a.must_equal [@c1.load(:id=>1)]
1692
- DB.sqls.must_equal ['SELECT * FROM artists',
1693
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))',
1694
- 'SELECT albums.*, albums_artists.artist_id AS x_foreign_key_x FROM albums INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))']
1695
- a = a.first
1696
- a.tag.must_equal Tag.load(:id=>2)
1697
- a.album.must_equal Album.load(:id=>3)
1698
- DB.sqls.length.must_equal 0
1699
- end
1700
-
1701
- it "should allow cascading of eager loading for associations of associated models" do
1702
- a = @c1.eager(:tag=>:track).all
1703
- a.must_equal [@c1.load(:id=>1)]
1704
- DB.sqls.must_equal ['SELECT * FROM artists',
1705
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))',
1706
- 'SELECT tracks.*, albums_tags.tag_id AS x_foreign_key_x FROM tracks INNER JOIN albums ON (albums.id = tracks.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE (albums_tags.tag_id IN (2))']
1707
- a = a.first
1708
- a.tag.must_equal Tag.load(:id=>2)
1709
- a.tag.track.must_equal Track.load(:id=>4)
1710
- DB.sqls.length.must_equal 0
1711
- end
1712
-
1713
- it "should cascade eagerly loading when the :eager association option is used" do
1714
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :eager=>:track
1715
- a = @c1.eager(:tag).all
1716
- a.must_equal [@c1.load(:id=>1)]
1717
- DB.sqls.must_equal ['SELECT * FROM artists',
1718
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))',
1719
- 'SELECT tracks.*, albums_tags.tag_id AS x_foreign_key_x FROM tracks INNER JOIN albums ON (albums.id = tracks.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE (albums_tags.tag_id IN (2))']
1720
- a = a.first
1721
- a.tag.must_equal Tag.load(:id=>2)
1722
- a.tag.track.must_equal Track.load(:id=>4)
1723
- DB.sqls.length.must_equal 0
1724
- end
1725
-
1726
- it "should respect :eager when lazily loading an association" do
1727
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :eager=>:track
1728
- a = @c1.load(:id=>1)
1729
- a.tag.must_equal Tag.load(:id=>2)
1730
- DB.sqls.must_equal ['SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1) LIMIT 1',
1731
- 'SELECT tracks.*, albums_tags.tag_id AS x_foreign_key_x FROM tracks INNER JOIN albums ON (albums.id = tracks.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) WHERE (albums_tags.tag_id IN (2))']
1732
- a.tag.track.must_equal Track.load(:id=>4)
1733
- DB.sqls.length.must_equal 0
1734
- end
1735
-
1736
- it "should raise error if attempting to eagerly load an association using :eager_graph option" do
1737
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :eager_graph=>:track
1738
- proc{@c1.eager(:tag).all}.must_raise(Sequel::Error)
1739
- end
1740
-
1741
- it "should respect :eager_graph when lazily loading an association" do
1742
- Tag.dataset = Tag.dataset.with_fetch(:id=>2, :track_id=>4).with_extend{def columns; [:id] end}
1743
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :eager_graph=>:track
1744
- a = @c1.load(:id=>1)
1745
- a.tag
1746
- DB.sqls.must_equal [ 'SELECT tags.id, track.id AS track_id FROM (SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id = 1) LIMIT 1) AS tags LEFT OUTER JOIN albums_tags AS albums_tags_0 ON (albums_tags_0.tag_id = tags.id) LEFT OUTER JOIN albums ON (albums.id = albums_tags_0.album_id) LEFT OUTER JOIN tracks AS track ON (track.album_id = albums.id)']
1747
- a.tag.must_equal Tag.load(:id=>2)
1748
- a.tag.track.must_equal Track.load(:id=>4)
1749
- DB.sqls.length.must_equal 0
1750
- end
1751
-
1752
- it "should respect :conditions when eagerly loading" do
1753
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :conditions=>{:a=>32}
1754
- a = @c1.eager(:tag).all
1755
- a.must_equal [@c1.load(:id=>1)]
1756
- DB.sqls.must_equal ['SELECT * FROM artists',
1757
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((a = 32) AND (albums_artists.artist_id IN (1)))']
1758
- a.first.tag.must_equal Tag.load(:id=>2)
1759
- DB.sqls.length.must_equal 0
1760
- end
1761
-
1762
- it "should respect :order when eagerly loading" do
1763
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :order=>:blah, :eager_limit_strategy=>:ruby
1764
- a = @c1.eager(:tag).all
1765
- a.must_equal [@c1.load(:id=>1)]
1766
- DB.sqls.must_equal ['SELECT * FROM artists',
1767
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1)) ORDER BY blah']
1768
- a.first.tag.must_equal Tag.load(:id=>2)
1769
- DB.sqls.length.must_equal 0
1770
- end
1771
-
1772
- it "should use the association's block when eager loading by default" do
1773
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]] do |ds| ds.filter(:a) end
1774
- a = @c1.eager(:tag).all
1775
- a.must_equal [@c1.load(:id=>1)]
1776
- DB.sqls.must_equal ['SELECT * FROM artists',
1777
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (a AND (albums_artists.artist_id IN (1)))']
1778
- a.first.tag.must_equal Tag.load(:id=>2)
1779
- DB.sqls.length.must_equal 0
1780
- end
1781
-
1782
- it "should use the :eager_block option when eager loading if given" do
1783
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :eager_block=>proc{|ds| ds.filter(:b)} do |ds| ds.filter(:a) end
1784
- a = @c1.eager(:tag).all
1785
- a.must_equal [@c1.load(:id=>1)]
1786
- DB.sqls.must_equal ['SELECT * FROM artists',
1787
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (b AND (albums_artists.artist_id IN (1)))']
1788
- a.first.tag.must_equal Tag.load(:id=>2)
1789
- DB.sqls.length.must_equal 0
1790
- end
1791
-
1792
- it "should respect the :limit option on a one_through_many association" do
1793
- @c1.one_through_many :second_tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>[nil,1]
1794
- Tag.dataset = Tag.dataset.with_fetch([{:x_foreign_key_x=>1, :id=>6}])
1795
- a = @c1.eager(:second_tag).all
1796
- a.must_equal [@c1.load(:id=>1)]
1797
- DB.sqls.must_equal ['SELECT * FROM artists',
1798
- 'SELECT * FROM (SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (1 = albums_artists.artist_id) LIMIT 1 OFFSET 1) AS t1']
1799
- a.first.second_tag.must_equal Tag.load(:id=>6)
1800
- DB.sqls.length.must_equal 0
1801
- end
1802
-
1803
- it "should respect the :limit option on a one_through_many association using the :ruby strategy" do
1804
- @c1.one_through_many :second_tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>[nil,1], :eager_limit_strategy=>:ruby
1805
- Tag.dataset = Tag.dataset.with_fetch([{:x_foreign_key_x=>1, :id=>5}, {:x_foreign_key_x=>1, :id=>6}])
1806
- a = @c1.eager(:second_tag).all
1807
- a.must_equal [@c1.load(:id=>1)]
1808
- DB.sqls.must_equal ['SELECT * FROM artists',
1809
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))']
1810
- a.first.second_tag.must_equal Tag.load(:id=>6)
1811
- DB.sqls.length.must_equal 0
1812
- end
1813
-
1814
- it "should eagerly load a single one_through_many association using the :distinct_on strategy" do
1815
- @c1.one_through_many :second_tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :order=>:name, :eager_limit_strategy=>:distinct_on
1816
- Tag.dataset = Tag.dataset.with_fetch([{:x_foreign_key_x=>1, :id=>5}]).with_extend{def supports_distinct_on?; true end}
1817
- a = @c1.eager(:second_tag).all
1818
- a.must_equal [@c1.load(:id=>1)]
1819
- DB.sqls.must_equal ['SELECT * FROM artists', "SELECT DISTINCT ON (albums_artists.artist_id) tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1)) ORDER BY albums_artists.artist_id, name"]
1820
- a.first.second_tag.must_equal Tag.load(:id=>5)
1821
- DB.sqls.length.must_equal 0
1822
- end
1823
-
1824
- it "should eagerly load a single one_through_many association using the :window_function strategy" do
1825
- @c1.one_through_many :second_tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>[nil,1], :order=>:name, :eager_limit_strategy=>:window_function
1826
- Tag.dataset = Tag.dataset.with_fetch([{:x_foreign_key_x=>1, :id=>5}]).with_extend{def supports_window_functions?; true end}
1827
- a = @c1.eager(:second_tag).all
1828
- a.must_equal [@c1.load(:id=>1)]
1829
- DB.sqls.must_equal ['SELECT * FROM artists',
1830
- 'SELECT * FROM (SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x, row_number() OVER (PARTITION BY albums_artists.artist_id ORDER BY name) AS x_sequel_row_number_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))) AS t1 WHERE (x_sequel_row_number_x = 2)']
1831
- a.first.second_tag.must_equal Tag.load(:id=>5)
1832
- DB.sqls.length.must_equal 0
1833
- end
1834
-
1835
- it "should respect the :limit option on a one_through_many association with composite primary keys on the main table" do
1836
- @c1.set_primary_key([:id1, :id2])
1837
- @c1.columns :id1, :id2
1838
-
1839
- @c1.one_through_many :second_tag, [[:albums_artists, [:artist_id1, :artist_id2], :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>[nil,1], :order=>:name
1840
- Tag.dataset = Tag.dataset.with_fetch([{:x_foreign_key_0_x=>1, :x_foreign_key_1_x=>2, :id=>5}]).with_extend{def supports_window_functions?; true end}
1841
- a = @c1.eager(:second_tag).with_fetch(:id1=>1, :id2=>2).all
1842
- a.must_equal [@c1.load(:id1=>1, :id2=>2)]
1843
- DB.sqls.must_equal ['SELECT * FROM artists',
1844
- 'SELECT * FROM (SELECT tags.*, albums_artists.artist_id1 AS x_foreign_key_0_x, albums_artists.artist_id2 AS x_foreign_key_1_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((1 = albums_artists.artist_id1) AND (2 = albums_artists.artist_id2)) ORDER BY name LIMIT 1 OFFSET 1) AS t1']
1845
- a.first.second_tag.must_equal Tag.load(:id=>5)
1846
- DB.sqls.length.must_equal 0
1847
- end
1848
-
1849
- it "should respect the :limit option on a one_through_many association with composite primary keys on the main table using a :window_function strategy" do
1850
- @c1.set_primary_key([:id1, :id2])
1851
- @c1.columns :id1, :id2
1852
-
1853
- @c1.one_through_many :second_tag, [[:albums_artists, [:artist_id1, :artist_id2], :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :class=>Tag, :limit=>[nil,1], :order=>:name, :eager_limit_strategy=>:window_function
1854
- Tag.dataset = Tag.dataset.with_fetch([{:x_foreign_key_0_x=>1, :x_foreign_key_1_x=>2, :id=>5}]).with_extend{def supports_window_functions?; true end}
1855
- a = @c1.eager(:second_tag).with_fetch(:id1=>1, :id2=>2).all
1856
- a.must_equal [@c1.load(:id1=>1, :id2=>2)]
1857
- DB.sqls.must_equal ['SELECT * FROM artists',
1858
- 'SELECT * FROM (SELECT tags.*, albums_artists.artist_id1 AS x_foreign_key_0_x, albums_artists.artist_id2 AS x_foreign_key_1_x, row_number() OVER (PARTITION BY albums_artists.artist_id1, albums_artists.artist_id2 ORDER BY name) AS x_sequel_row_number_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE ((albums_artists.artist_id1, albums_artists.artist_id2) IN ((1, 2)))) AS t1 WHERE (x_sequel_row_number_x = 2)']
1859
- a.first.second_tag.must_equal Tag.load(:id=>5)
1860
- DB.sqls.length.must_equal 0
1861
- end
1862
-
1863
- it "should raise an error when attempting to eagerly load an association with the :allow_eager option set to false" do
1864
- @c1.eager(:tag).all
1865
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :allow_eager=>false
1866
- proc{@c1.eager(:tag).all}.must_raise(Sequel::Error)
1867
- end
1868
-
1869
- it "should respect the association's :select option" do
1870
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :select=>Sequel[:tags][:name]
1871
- a = @c1.eager(:tag).all
1872
- a.must_equal [@c1.load(:id=>1)]
1873
- DB.sqls.must_equal ['SELECT * FROM artists',
1874
- 'SELECT tags.name, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))']
1875
- a.first.tag.must_equal Tag.load(:id=>2)
1876
- DB.sqls.length.must_equal 0
1877
- end
1878
-
1879
- it "should respect one_through_many association's :left_primary_key and :right_primary_key options" do
1880
- @c1.send(:define_method, :yyy){values[:yyy]}
1881
- @c1.dataset = @c1.dataset.with_fetch(:id=>1, :yyy=>8).with_extend{def columns; [:id, :yyy] end}
1882
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :left_primary_key=>:yyy, :right_primary_key=>:tag_id
1883
- a = @c1.eager(:tag).all
1884
- a.must_equal [@c1.load(:id=>1, :yyy=>8)]
1885
- DB.sqls.must_equal ['SELECT * FROM artists',
1886
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.tag_id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (8))']
1887
- a.first.tag.must_equal Tag.load(:tag_id=>2)
1888
- DB.sqls.length.must_equal 0
1889
- end
1890
-
1891
- it "should handle composite keys" do
1892
- @c1.send(:define_method, :yyy){values[:yyy]}
1893
- @c1.dataset = @c1.dataset.with_fetch(:id=>1, :yyy=>8).with_extend{def columns; [:id, :yyy] end}
1894
- @c1.one_through_many :tag, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:h1, :h2], :left_primary_key=>[:id, :yyy]
1895
- a = @c1.eager(:tag).all
1896
- a.must_equal [@c1.load(:id=>1, :yyy=>8)]
1897
- DB.sqls.must_equal ['SELECT * FROM artists',
1898
- 'SELECT tags.*, albums_artists.b1 AS x_foreign_key_0_x, albums_artists.b2 AS x_foreign_key_1_x FROM tags INNER JOIN albums_tags ON ((albums_tags.g1 = tags.h1) AND (albums_tags.g2 = tags.h2)) INNER JOIN albums ON ((albums.e1 = albums_tags.f1) AND (albums.e2 = albums_tags.f2)) INNER JOIN albums_artists ON ((albums_artists.c1 = albums.d1) AND (albums_artists.c2 = albums.d2)) WHERE ((albums_artists.b1, albums_artists.b2) IN ((1, 8)))']
1899
- a.first.tag.must_equal Tag.load(:id=>2)
1900
- DB.sqls.length.must_equal 0
1901
- end
1902
-
1903
- it "should respect :after_load callbacks on associations when eager loading" do
1904
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :after_load=>lambda{|o, a| o[:id] *= 2; a[:id] *= 3}
1905
- a = @c1.eager(:tag).all
1906
- a.must_equal [@c1.load(:id=>2)]
1907
- DB.sqls.must_equal ['SELECT * FROM artists',
1908
- 'SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))']
1909
- a.first.tag.must_equal Tag.load(:id=>6)
1910
- DB.sqls.length.must_equal 0
1911
- end
1912
-
1913
- it "should support association_join" do
1914
- @c1.association_join(:tag).sql.must_equal "SELECT * FROM artists INNER JOIN albums_artists ON (albums_artists.artist_id = artists.id) INNER JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) INNER JOIN tags AS tag ON (tag.id = albums_tags.tag_id)"
1915
- end
1916
-
1917
- it "should eagerly graph a single one_through_many association" do
1918
- a = @c1.eager_graph(:tag).all
1919
- a.must_equal [@c1.load(:id=>1)]
1920
- DB.sqls.must_equal ['SELECT artists.id, tag.id AS tag_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.id = albums_tags.tag_id)']
1921
- a.first.tag.must_equal Tag.load(:id=>2)
1922
- DB.sqls.length.must_equal 0
1923
- end
1924
-
1925
- it "should eagerly graph a single one_through_many association using the :distinct_on strategy" do
1926
- Tag.dataset = Tag.dataset.with_extend{def supports_distinct_on?; true end}
1927
- a = @c1.eager_graph_with_options(:tag, :limit_strategy=>true).with_fetch(:id=>1, :tag_id=>2).all
1928
- a.must_equal [@c1.load(:id=>1)]
1929
- DB.sqls.must_equal ['SELECT artists.id, tag.id AS tag_id FROM artists LEFT OUTER JOIN (SELECT DISTINCT ON (albums_artists.artist_id) tags.*, albums_artists.artist_id AS x_foreign_key_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) ORDER BY albums_artists.artist_id) AS tag ON (tag.x_foreign_key_x = artists.id)']
1930
- a.first.tag.must_equal Tag.load(:id=>2)
1931
- DB.sqls.length.must_equal 0
1932
- end
1933
-
1934
- it "should eagerly graph a single one_through_many association using the :window_function strategy" do
1935
- Tag.dataset = Tag.dataset.with_extend do
1936
- def supports_window_functions?; true end
1937
- def columns; literal(opts[:select]) =~ /x_foreign_key_x/ ? [:id, :x_foreign_key_x] : [:id] end
1938
- end
1939
- a = @c1.eager_graph_with_options(:tag, :limit_strategy=>true).with_fetch(:id=>1, :tag_id=>2).all
1940
- a.must_equal [@c1.load(:id=>1)]
1941
- DB.sqls.must_equal ['SELECT artists.id, tag.id AS tag_id FROM artists LEFT OUTER JOIN (SELECT id, x_foreign_key_x FROM (SELECT tags.*, albums_artists.artist_id AS x_foreign_key_x, row_number() OVER (PARTITION BY albums_artists.artist_id) AS x_sequel_row_number_x FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON (albums_artists.album_id = albums.id)) AS t1 WHERE (x_sequel_row_number_x = 1)) AS tag ON (tag.x_foreign_key_x = artists.id)']
1942
- a.first.tag.must_equal Tag.load(:id=>2)
1943
- DB.sqls.length.must_equal 0
1944
- end
1945
-
1946
- it "should eagerly graph multiple associations in a single call" do
1947
- a = @c1.eager_graph(:tag, :album).all
1948
- a.must_equal [@c1.load(:id=>1)]
1949
- DB.sqls.must_equal ['SELECT artists.id, tag.id AS tag_id, album.id AS album_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.id = albums_tags.tag_id) LEFT OUTER JOIN albums_artists AS albums_artists_0 ON (albums_artists_0.artist_id = artists.id) LEFT OUTER JOIN albums AS album ON (album.id = albums_artists_0.album_id)']
1950
- a = a.first
1951
- a.tag.must_equal Tag.load(:id=>2)
1952
- a.album.must_equal Album.load(:id=>3)
1953
- DB.sqls.length.must_equal 0
1954
- end
1955
-
1956
- it "should eagerly graph multiple associations in separate calls" do
1957
- a = @c1.eager_graph(:tag).eager_graph(:album).all
1958
- a.must_equal [@c1.load(:id=>1)]
1959
- DB.sqls.must_equal ['SELECT artists.id, tag.id AS tag_id, album.id AS album_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.id = albums_tags.tag_id) LEFT OUTER JOIN albums_artists AS albums_artists_0 ON (albums_artists_0.artist_id = artists.id) LEFT OUTER JOIN albums AS album ON (album.id = albums_artists_0.album_id)']
1960
- a = a.first
1961
- a.tag.must_equal Tag.load(:id=>2)
1962
- a.album.must_equal Album.load(:id=>3)
1963
- DB.sqls.length.must_equal 0
1964
- end
1965
-
1966
- it "should allow cascading of eager graphing for associations of associated models" do
1967
- a = @c1.eager_graph(:tag=>:track).all
1968
- a.must_equal [@c1.load(:id=>1)]
1969
- DB.sqls.must_equal ['SELECT artists.id, tag.id AS tag_id, track.id AS track_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.id = albums_tags.tag_id) LEFT OUTER JOIN albums_tags AS albums_tags_0 ON (albums_tags_0.tag_id = tag.id) LEFT OUTER JOIN albums AS albums_0 ON (albums_0.id = albums_tags_0.album_id) LEFT OUTER JOIN tracks AS track ON (track.album_id = albums_0.id)']
1970
- a = a.first
1971
- a.tag.must_equal Tag.load(:id=>2)
1972
- a.tag.track.must_equal Track.load(:id=>4)
1973
- DB.sqls.length.must_equal 0
1974
- end
1975
-
1976
- it "should eager graph multiple associations from the same table" do
1977
- a = @c1.eager_graph(:tag, :other_tag).all
1978
- a.must_equal [@c1.load(:id=>1)]
1979
- DB.sqls.must_equal ['SELECT artists.id, tag.id AS tag_id, other_tag.id AS other_tag_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.id = albums_tags.tag_id) LEFT OUTER JOIN albums_artists AS albums_artists_0 ON (albums_artists_0.artist_id = artists.id) LEFT OUTER JOIN albums AS albums_0 ON (albums_0.id = albums_artists_0.album_id) LEFT OUTER JOIN albums_tags AS albums_tags_0 ON (albums_tags_0.album_id = albums_0.id) LEFT OUTER JOIN tags AS other_tag ON (other_tag.id = albums_tags_0.tag_id)']
1980
- a = a.first
1981
- a.tag.must_equal Tag.load(:id=>2)
1982
- a.other_tag.must_equal Tag.load(:id=>9)
1983
- DB.sqls.length.must_equal 0
1984
- end
1985
-
1986
- it "should eager graph a self_referential association" do
1987
- a = @c1.eager_graph(:tag, :artist).with_fetch(:id=>1, :tag_id=>2, :artist_id=>10).all
1988
- a.must_equal [@c1.load(:id=>1)]
1989
- DB.sqls.must_equal ['SELECT artists.id, tag.id AS tag_id, artist.id AS artist_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.id = albums_tags.tag_id) LEFT OUTER JOIN albums_artists AS albums_artists_0 ON (albums_artists_0.artist_id = artists.id) LEFT OUTER JOIN albums AS albums_0 ON (albums_0.id = albums_artists_0.album_id) LEFT OUTER JOIN albums_artists AS albums_artists_1 ON (albums_artists_1.album_id = albums_0.id) LEFT OUTER JOIN artists AS artist ON (artist.id = albums_artists_1.artist_id)']
1990
- a = a.first
1991
- a.tag.must_equal Tag.load(:id=>2)
1992
- a.artist.must_equal @c1.load(:id=>10)
1993
- DB.sqls.length.must_equal 0
1994
- end
1995
-
1996
- it "should be able to use eager and eager_graph together" do
1997
- a = @c1.eager_graph(:tag).eager(:album).all
1998
- a.must_equal [@c1.load(:id=>1)]
1999
- DB.sqls.must_equal ['SELECT artists.id, tag.id AS tag_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.id = albums_tags.tag_id)',
2000
- 'SELECT albums.*, albums_artists.artist_id AS x_foreign_key_x FROM albums INNER JOIN albums_artists ON (albums_artists.album_id = albums.id) WHERE (albums_artists.artist_id IN (1))']
2001
- a = a.first
2002
- a.tag.must_equal Tag.load(:id=>2)
2003
- a.album.must_equal Album.load(:id=>3)
2004
- DB.sqls.length.must_equal 0
2005
- end
2006
-
2007
- it "should handle no associated records when eagerly graphing a single one_through_many association" do
2008
- a = @c1.eager_graph(:tag).with_fetch(:id=>1, :tag_id=>nil).all
2009
- a.must_equal [@c1.load(:id=>1)]
2010
- DB.sqls.must_equal ['SELECT artists.id, tag.id AS tag_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.id = albums_tags.tag_id)']
2011
- a.first.tag.must_be_nil
2012
- DB.sqls.length.must_equal 0
2013
- end
2014
-
2015
- it "should handle no associated records when eagerly graphing multiple one_through_many associations" do
2016
- a = @c1.eager_graph(:tag, :album).with_fetch([{:id=>1, :tag_id=>5, :album_id=>6}, {:id=>7, :tag_id=>nil, :albums_0_id=>nil}]).all
2017
- a.must_equal [@c1.load(:id=>1), @c1.load(:id=>7)]
2018
- DB.sqls.must_equal ['SELECT artists.id, tag.id AS tag_id, album.id AS album_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.id = albums_tags.tag_id) LEFT OUTER JOIN albums_artists AS albums_artists_0 ON (albums_artists_0.artist_id = artists.id) LEFT OUTER JOIN albums AS album ON (album.id = albums_artists_0.album_id)']
2019
- a.first.tag.must_equal Tag.load(:id=>5)
2020
- a.first.album.must_equal Album.load(:id=>6)
2021
- a.last.tag.must_be_nil
2022
- a.last.album.must_be_nil
2023
- DB.sqls.length.must_equal 0
2024
- end
2025
-
2026
- it "should handle missing associated records when cascading eager graphing for associations of associated models" do
2027
- a = @c1.eager_graph(:tag=>:track).with_fetch([{:id=>1, :tag_id=>2, :track_id=>nil}, {:id=>2, :tag_id=>nil, :tracks_id=>nil}]).all
2028
- a.must_equal [@c1.load(:id=>1), @c1.load(:id=>2)]
2029
- DB.sqls.must_equal ['SELECT artists.id, tag.id AS tag_id, track.id AS track_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.id = albums_tags.tag_id) LEFT OUTER JOIN albums_tags AS albums_tags_0 ON (albums_tags_0.tag_id = tag.id) LEFT OUTER JOIN albums AS albums_0 ON (albums_0.id = albums_tags_0.album_id) LEFT OUTER JOIN tracks AS track ON (track.album_id = albums_0.id)']
2030
- a.last.tag.must_be_nil
2031
- a = a.first
2032
- a.tag.must_equal Tag.load(:id=>2)
2033
- a.tag.track.must_be_nil
2034
- DB.sqls.length.must_equal 0
2035
- end
2036
-
2037
- it "eager graphing should respect :left_primary_key and :right_primary_key options" do
2038
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :left_primary_key=>:yyy, :right_primary_key=>:tag_id
2039
- @c1.dataset = @c1.dataset.with_extend{def columns; [:id, :yyy] end}
2040
- Tag.dataset = Tag.dataset.with_extend{def columns; [:id, :tag_id] end}
2041
- a = @c1.eager_graph(:tag).with_fetch(:id=>1, :yyy=>8, :tag_id=>2, :tag_tag_id=>4).all
2042
- a.must_equal [@c1.load(:id=>1, :yyy=>8)]
2043
- DB.sqls.must_equal ['SELECT artists.id, artists.yyy, tag.id AS tag_id, tag.tag_id AS tag_tag_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.yyy) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.tag_id = albums_tags.tag_id)']
2044
- a.first.tag.must_equal Tag.load(:id=>2, :tag_id=>4)
2045
- DB.sqls.length.must_equal 0
2046
- end
2047
-
2048
- it "eager graphing should respect composite keys" do
2049
- @c1.one_through_many :tag, [[:albums_artists, [:b1, :b2], [:c1, :c2]], [:albums, [:d1, :d2], [:e1, :e2]], [:albums_tags, [:f1, :f2], [:g1, :g2]]], :right_primary_key=>[:id, :tag_id], :left_primary_key=>[:id, :yyy]
2050
- @c1.dataset = @c1.dataset.with_extend{def columns; [:id, :yyy] end}
2051
- Tag.dataset = Tag.dataset.with_extend{def columns; [:id, :tag_id] end}
2052
- a = @c1.eager_graph(:tag).with_fetch(:id=>1, :yyy=>8, :tag_id=>2, :tag_tag_id=>4).all
2053
- a.must_equal [@c1.load(:id=>1, :yyy=>8)]
2054
- DB.sqls.must_equal ['SELECT artists.id, artists.yyy, tag.id AS tag_id, tag.tag_id AS tag_tag_id FROM artists LEFT OUTER JOIN albums_artists ON ((albums_artists.b1 = artists.id) AND (albums_artists.b2 = artists.yyy)) LEFT OUTER JOIN albums ON ((albums.d1 = albums_artists.c1) AND (albums.d2 = albums_artists.c2)) LEFT OUTER JOIN albums_tags ON ((albums_tags.f1 = albums.e1) AND (albums_tags.f2 = albums.e2)) LEFT OUTER JOIN tags AS tag ON ((tag.id = albums_tags.g1) AND (tag.tag_id = albums_tags.g2))']
2055
- a.first.tag.must_equal Tag.load(:id=>2, :tag_id=>4)
2056
- DB.sqls.length.must_equal 0
2057
- end
2058
-
2059
- it "should respect the association's :graph_select option" do
2060
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :graph_select=>:b
2061
- a = @c1.eager_graph(:tag).with_fetch(:id=>1, :b=>2).all
2062
- a.must_equal [@c1.load(:id=>1)]
2063
- DB.sqls.must_equal ['SELECT artists.id, tag.b FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.id = albums_tags.tag_id)']
2064
- a.first.tag.must_equal Tag.load(:b=>2)
2065
- DB.sqls.length.must_equal 0
2066
- end
2067
-
2068
- it "should respect the association's :graph_join_type option" do
2069
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :graph_join_type=>:inner
2070
- @c1.eager_graph(:tag).sql.must_equal 'SELECT artists.id, tag.id AS tag_id FROM artists INNER JOIN albums_artists ON (albums_artists.artist_id = artists.id) INNER JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) INNER JOIN tags AS tag ON (tag.id = albums_tags.tag_id)'
2071
- end
2072
-
2073
- it "should respect the association's :join_type option on through" do
2074
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id, :join_type=>:natural}, [:albums_tags, :album_id, :tag_id]], :graph_join_type=>:inner
2075
- @c1.eager_graph(:tag).sql.must_equal 'SELECT artists.id, tag.id AS tag_id FROM artists INNER JOIN albums_artists ON (albums_artists.artist_id = artists.id) NATURAL JOIN albums ON (albums.id = albums_artists.album_id) INNER JOIN albums_tags ON (albums_tags.album_id = albums.id) INNER JOIN tags AS tag ON (tag.id = albums_tags.tag_id)'
2076
- end
2077
-
2078
- it "should respect the association's :conditions option" do
2079
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :conditions=>{:a=>32}
2080
- @c1.eager_graph(:tag).sql.must_equal 'SELECT artists.id, tag.id AS tag_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON ((tag.id = albums_tags.tag_id) AND (tag.a = 32))'
2081
- end
2082
-
2083
- it "should respect the association's :graph_conditions option" do
2084
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :graph_conditions=>{:a=>42}
2085
- @c1.eager_graph(:tag).sql.must_equal 'SELECT artists.id, tag.id AS tag_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON ((tag.id = albums_tags.tag_id) AND (tag.a = 42))'
2086
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :graph_conditions=>{:a=>42}, :conditions=>{:a=>32}
2087
- @c1.eager_graph(:tag).sql.must_equal 'SELECT artists.id, tag.id AS tag_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON ((tag.id = albums_tags.tag_id) AND (tag.a = 42))'
2088
- end
2089
-
2090
- it "should respect the association's :conditions option on through" do
2091
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id, :conditions=>{:a=>42}}, [:albums_tags, :album_id, :tag_id]]
2092
- @c1.eager_graph(:tag).sql.must_equal 'SELECT artists.id, tag.id AS tag_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON ((albums.id = albums_artists.album_id) AND (albums.a = 42)) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.id = albums_tags.tag_id)'
2093
- end
2094
-
2095
- it "should respect the association's :graph_block option" do
2096
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :graph_block=>proc{|ja,lja,js| {Sequel.qualify(ja, :active)=>true}}
2097
- @c1.eager_graph(:tag).sql.must_equal 'SELECT artists.id, tag.id AS tag_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON ((tag.id = albums_tags.tag_id) AND (tag.active IS TRUE))'
2098
- end
2099
-
2100
- it "should respect the association's :block option on through" do
2101
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id, :block=>proc{|ja,lja,js| {Sequel.qualify(ja, :active)=>true}}}, [:albums_tags, :album_id, :tag_id]]
2102
- @c1.eager_graph(:tag).sql.must_equal 'SELECT artists.id, tag.id AS tag_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON ((albums.id = albums_artists.album_id) AND (albums.active IS TRUE)) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.id = albums_tags.tag_id)'
2103
- end
2104
-
2105
- it "should respect the association's :graph_only_conditions option" do
2106
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :graph_only_conditions=>{:a=>32}
2107
- @c1.eager_graph(:tag).sql.must_equal 'SELECT artists.id, tag.id AS tag_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.a = 32)'
2108
- end
2109
-
2110
- it "should respect the association's :only_conditions option on through" do
2111
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id, :only_conditions=>{:a=>42}}, [:albums_tags, :album_id, :tag_id]]
2112
- @c1.eager_graph(:tag).sql.must_equal 'SELECT artists.id, tag.id AS tag_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.a = 42) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.id = albums_tags.tag_id)'
2113
- end
2114
-
2115
- it "should create unique table aliases for all associations" do
2116
- @c1.eager_graph(:artist=>{:artist=>:artist}).sql.must_equal "SELECT artists.id, artist.id AS artist_id, artist_0.id AS artist_0_id, artist_1.id AS artist_1_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_artists AS albums_artists_0 ON (albums_artists_0.album_id = albums.id) LEFT OUTER JOIN artists AS artist ON (artist.id = albums_artists_0.artist_id) LEFT OUTER JOIN albums_artists AS albums_artists_1 ON (albums_artists_1.artist_id = artist.id) LEFT OUTER JOIN albums AS albums_0 ON (albums_0.id = albums_artists_1.album_id) LEFT OUTER JOIN albums_artists AS albums_artists_2 ON (albums_artists_2.album_id = albums_0.id) LEFT OUTER JOIN artists AS artist_0 ON (artist_0.id = albums_artists_2.artist_id) LEFT OUTER JOIN albums_artists AS albums_artists_3 ON (albums_artists_3.artist_id = artist_0.id) LEFT OUTER JOIN albums AS albums_1 ON (albums_1.id = albums_artists_3.album_id) LEFT OUTER JOIN albums_artists AS albums_artists_4 ON (albums_artists_4.album_id = albums_1.id) LEFT OUTER JOIN artists AS artist_1 ON (artist_1.id = albums_artists_4.artist_id)"
2117
- end
2118
-
2119
- it "should respect the association's :order" do
2120
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :order=>[:blah1, :blah2]
2121
- @c1.order(Sequel[:artists][:blah2], Sequel[:artists][:blah3]).eager_graph(:tag).sql.must_equal 'SELECT artists.id, tag.id AS tag_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.id = albums_tags.tag_id) ORDER BY artists.blah2, artists.blah3, tag.blah1, tag.blah2'
2122
- end
2123
-
2124
- it "should only qualify unqualified symbols, identifiers, or ordered versions in association's :order" do
2125
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :order=>[Sequel.identifier(:blah__id), Sequel.identifier(:blah__id).desc, Sequel.desc(Sequel[:blah][:id]), Sequel[:blah][:id], :album_id, Sequel.desc(:album_id), 1, Sequel.lit('RANDOM()'), Sequel.qualify(:b, :a)]
2126
- @c1.order(Sequel[:artists][:blah2], Sequel[:artists][:blah3]).eager_graph(:tag).sql.must_equal 'SELECT artists.id, tag.id AS tag_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.id = albums_tags.tag_id) ORDER BY artists.blah2, artists.blah3, tag.blah__id, tag.blah__id DESC, blah.id DESC, blah.id, tag.album_id, tag.album_id DESC, 1, RANDOM(), b.a'
2127
- end
2128
-
2129
- with_symbol_splitting "should not qualify qualified symbols in association's :order" do
2130
- @c1.one_through_many :tag, [[:albums_artists, :artist_id, :album_id], {:table=>:albums, :left=>:id, :right=>:id}, [:albums_tags, :album_id, :tag_id]], :order=>[Sequel.identifier(:blah__id), Sequel.identifier(:blah__id).desc, Sequel.desc(:blah__id), :blah__id, :album_id, Sequel.desc(:album_id), 1, Sequel.lit('RANDOM()'), Sequel.qualify(:b, :a)]
2131
- @c1.order(:artists__blah2, :artists__blah3).eager_graph(:tag).sql.must_equal 'SELECT artists.id, tag.id AS tag_id FROM artists LEFT OUTER JOIN albums_artists ON (albums_artists.artist_id = artists.id) LEFT OUTER JOIN albums ON (albums.id = albums_artists.album_id) LEFT OUTER JOIN albums_tags ON (albums_tags.album_id = albums.id) LEFT OUTER JOIN tags AS tag ON (tag.id = albums_tags.tag_id) ORDER BY artists.blah2, artists.blah3, tag.blah__id, tag.blah__id DESC, blah.id DESC, blah.id, tag.album_id, tag.album_id DESC, 1, RANDOM(), b.a'
2132
- end
2133
- end
2134
-
2135
- describe "Sequel::Model.finalize_associations" do
2136
- before do
2137
- class ::Item < Sequel::Model
2138
- plugin :many_through_many
2139
- many_through_many :items, [[:foos, :item1_id, :foo1_id], [:bars, :foo2_id, :item2_id]]
2140
- one_through_many :item, [[:foos, :item1_id, :foo1_id], [:bars, :foo2_id, :item2_id]]
2141
- finalize_associations
2142
- end
2143
- end
2144
- after do
2145
- Object.send(:remove_const, :Item)
2146
- end
2147
-
2148
- it "should finalize one_through_many associations" do
2149
- r = Item.association_reflection(:item)
2150
- r[:class].must_equal Item
2151
- r[:_dataset].sql.must_equal "SELECT items.* FROM items INNER JOIN bars ON (bars.item2_id = items.id) INNER JOIN foos ON (foos.foo1_id = bars.foo2_id) LIMIT 1"
2152
- r[:associated_eager_dataset].sql.must_equal "SELECT items.* FROM items INNER JOIN bars ON (bars.item2_id = items.id) INNER JOIN foos ON (foos.foo1_id = bars.foo2_id)"
2153
- r[:filter_by_associations_conditions_dataset].sql.must_equal "SELECT foos.item1_id FROM items INNER JOIN bars ON (bars.item2_id = items.id) INNER JOIN foos ON (foos.foo1_id = bars.foo2_id) WHERE (foos.item1_id IS NOT NULL)"
2154
- r[:placeholder_loader].wont_be_nil
2155
- r[:predicate_key].must_equal Sequel.qualify(:foos, :item1_id)
2156
- r[:associated_key_table].must_equal :foos
2157
- r[:edges].must_equal [{:table=>:foos, :left=>:id, :right=>:item1_id, :conditions=>[], :join_type=>:left_outer, :block=>nil}, {:table=>:bars, :left=>:foo1_id, :right=>:foo2_id, :conditions=>[], :join_type=>:left_outer, :block=>nil}]
2158
- r[:final_edge].must_equal(:table=>:items, :left=>:item2_id, :right=>:id, :conditions=>nil, :join_type=>nil, :block=>nil)
2159
- r[:final_reverse_edge].must_equal(:table=>:foos, :left=>:foo1_id, :right=>:foo2_id, :alias=>:foos)
2160
- r[:reverse_edges].must_equal [{:table=>:bars, :left=>:item2_id, :right=>:id, :alias=>:bars}]
2161
- end
2162
-
2163
- it "should finalize many_through_many associations" do
2164
- r = Item.association_reflection(:items)
2165
- r[:class].must_equal Item
2166
- r[:_dataset].sql.must_equal "SELECT items.* FROM items INNER JOIN bars ON (bars.item2_id = items.id) INNER JOIN foos ON (foos.foo1_id = bars.foo2_id)"
2167
- r[:associated_eager_dataset].sql.must_equal "SELECT items.* FROM items INNER JOIN bars ON (bars.item2_id = items.id) INNER JOIN foos ON (foos.foo1_id = bars.foo2_id)"
2168
- r[:filter_by_associations_conditions_dataset].sql.must_equal "SELECT foos.item1_id FROM items INNER JOIN bars ON (bars.item2_id = items.id) INNER JOIN foos ON (foos.foo1_id = bars.foo2_id) WHERE (foos.item1_id IS NOT NULL)"
2169
- r[:placeholder_loader].wont_be_nil
2170
- r[:predicate_key].must_equal Sequel.qualify(:foos, :item1_id)
2171
- r[:associated_key_table].must_equal :foos
2172
- r[:edges].must_equal [{:table=>:foos, :left=>:id, :right=>:item1_id, :conditions=>[], :join_type=>:left_outer, :block=>nil}, {:table=>:bars, :left=>:foo1_id, :right=>:foo2_id, :conditions=>[], :join_type=>:left_outer, :block=>nil}]
2173
- r[:final_edge].must_equal(:table=>:items, :left=>:item2_id, :right=>:id, :conditions=>nil, :join_type=>nil, :block=>nil)
2174
- r[:final_reverse_edge].must_equal(:table=>:foos, :left=>:foo1_id, :right=>:foo2_id, :alias=>:foos)
2175
- r[:reverse_edges].must_equal [{:table=>:bars, :left=>:item2_id, :right=>:id, :alias=>:bars}]
2176
- end
2177
- end