Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add shared example for database_cleaner adapter #629

Conversation

TheSmartnik
Copy link
Contributor

Following the discussion #628
This pr adds shared examples for a generic adapter

@botandrose
Copy link
Contributor

@TheSmartnik This looks really good! Thank you!

Looking at the existing example blocks, I think we should take this opportunity to merge the three existing example blocks into a single a database_cleaner strategy shared example block, since there is no useful difference between them. Then, I'm wondering if its possible to have the new shared example block loop through the all the strategies defined in available_strategies and test to make sure they are valid strategies by testing each one against this new a database_cleaner strategy block.

This might be getting out of scope for this PR, though. We could save all this for another PR, if you just want to get this bit merged. Up to you.

@TheSmartnik
Copy link
Contributor Author

@botandrose thanks for a quick review!

I think we should take this opportunity to merge the three existing example blocks into a single a database_cleaner strategy shared example block, since there is no useful difference between them.

I like the idea, but sequel's adapter has a deletion strategy with a different API. It doesn't have #start/#clean/#cleaning, however it does use a generic strategy shared_example

@botandrose
Copy link
Contributor

@TheSmartnik Ah, thank you for taking such a deep look at this! I took a look at the Sequel deletion adapter, and it does actually have those methods, even though it doesn't really look like it. The inheritance and inclusion heirarchy is kind of a mess, and makes it hard to see where things are coming from! It inherits #start from its immediate ancestor, the DatabaseCleaner::Sequel::Truncation strategy, and it has #cleaning included from DatabaseCleaner::Generic::Base which is included in DatabaseCleaner::Sequel::Base, which is also included in its immediate ancestor. What a confusing mess!

In any event, the test you pointed out should definitely be updated to use our new shared examples, after this is merged!

@TheSmartnik TheSmartnik force-pushed the add-shared-examples-for-generic-adapter branch from 77a42e6 to eed0caa Compare March 5, 2020 22:11
@TheSmartnik
Copy link
Contributor Author

@botandrose got it, thanks for explaining! I've updated the examples

@botandrose
Copy link
Contributor

@TheSmartnik Looks really great! Thank you for your work here.

@botandrose botandrose merged commit 64e3945 into DatabaseCleaner:master Mar 5, 2020
nTraum added a commit to CitizenLabDotCo/citizenlab that referenced this pull request Dec 1, 2021
The library is now splitted into multiple gems, depending on the ORM / database you use.

Changes since 1.7.0:

```
== 2.0.1 2021-02-04

== Bugfixes
  * Regression: allow_remote_database_url and url_allowlist not working anymore: DatabaseCleaner/database_cleaner#671

== 2.0.0 2021-01-31

=== Changes
  * Rename `url_whitelist` to `url_allowlist`
  * Allowlist now supports regular expressions
  * Fixed Ruby 2.7 deprecation warnings

=== Breaking changes
  * Failed checks against the allowlist now raise `UrlNotAllowed` rather than `NotWhitelistedUrl`

== 2.0.0.beta2 2020-05-30

=== Features
  * New API for ORM Adapter gems: DatabaseCleaner/database_cleaner#644

=== Breaking changes
  * Rename :connection configuration option to :db for consistency: DatabaseCleaner/database_cleaner#650
  * Remove all #orm= setter methods: https://github.com/DatabaseCleaner/database_cleaner/pull/643/files
  * drop support for Ruby 2.4 which is EOL as of 2020-03-31: DatabaseCleaner/database_cleaner#635

== 2.0.0.beta 2020-04-05

=== Breaking changes
  * Replace old shared RSpec examples with new "database_cleaner adapter" example: DatabaseCleaner/database_cleaner#629
  * split gem into database_cleaner-core and database_cleaner metagem.
  * Support Ruby versions 2.4, 2.5, 2.6, and 2.7, and drop support for older Rubies.
  * remove all deprecated code and get the specs passing again.
  * Split off all adapter gems into their own repos: DatabaseCleaner/database_cleaner#620

== 1.99.0 2021-01-31

== Changes
  * Remove unnecessary dependency on database_cleaner-mongo from database_cleaner-mongoid: @botandrose
  * Enable the :cache_tables option for the mongo truncation strategy, and default to true: DatabaseCleaner/database_cleaner#646"
  * Introduce deletion aliases for truncation strategies for mongo, mongoid, and redis adapters. DatabaseCleaner/database_cleaner#654
  * Add new :db orm configuration key, for consistency with #db and #db=. DatabaseCleaner/database_cleaner#649

== Deprecations
  * Deprecate all #orm= setter methods: DatabaseCleaner/database_cleaner#643
  * Deprecate non-functional :reset_ids option in ActiveRecord truncation strategy: DatabaseCleaner/database_cleaner#559
  * Deprecate mongo truncation's `:cache_tables => true` option in favor of `false`, to prep for caching removal in v2.0: DatabaseCleaner/database_cleaner#646"
  * Deprecate redis truncation's #url method in favor of #db: @botandrose
  * Deprecate mongo, mongoid, and redis truncation strategies in favor of deletion. DatabaseCleaner/database_cleaner#654
  * Deprecate :connection and :model configuration options in favor of :db for consistency: DatabaseCleaner/database_cleaner#650

== Bugfixes
  * Fix deprecation warning about `DatabaseCleaner.connections` to recommend a better alternative: DatabaseCleaner/database_cleaner#656

== 1.8.5 2020-05-04

=== Bug Fixes
  * Fix :mongo strategy: DatabaseCleaner/database_cleaner#645

== 1.8.4 2020-04-02

=== Bug Fixes
  * Fix false positive deprecation warnings on Windows: DatabaseCleaner/database_cleaner#633

== 1.8.3 2020-02-18

=== Bug Fixes
  * Fix performance issue of DatabaseCleaner::Base#orm_module: DatabaseCleaner/database_cleaner#625

== 1.8.2 2020-02-01

=== Bug Fixes
  * Fix database_cleaner-ohm autodetected adapter loading: DatabaseCleaner/database_cleaner#619
  * Fix database_cleaner-mongo_mapper autodetected adapter loading: @botandrose
  * Fix database_cleaner-mongoid autodetected adapter loading: DatabaseCleaner/database_cleaner#617
  * Exclude ar_internal_metadata from truncation on Rails 5: DatabaseCleaner/database_cleaner#588

=== Changes
  * Deprecate ohm adapter: DatabaseCleaner/database_cleaner#619

== 1.8.1 2020-01-30

=== Bug Fixes
  * Remove undeclared active_support dependency: DatabaseCleaner/database_cleaner#612

== 1.8.0 2020-01-29

=== Bug Fixes
  * Fix MySQL deprecation warnings with Rails 5: DatabaseCleaner/database_cleaner#574
  * Fix MySQL truncation with `pre_count: true`: DatabaseCleaner/database_cleaner#498
  * Fix primary key sequence resetting in Sequel with Postgres and SQLite: https://github.com/DatabaseCleaner/database_cleaner/pull/538/files
  * ActiveRecord truncation adapter doesn't work with Oracle: DatabaseCleaner/database_cleaner#542

=== Changes
  * Extract ORM adapters into gems: DatabaseCleaner/database_cleaner#560
  * Allow postgres:///dbname as a local url: DatabaseCleaner/database_cleaner#569
  * Add an optional URL whitelist safeguard: DatabaseCleaner/database_cleaner#526
  * Add `local` tld to safeguard check: DatabaseCleaner/database_cleaner#547
  * Speed up ActiveRecord deletion strategy: DatabaseCleaner/database_cleaner#534
  * Consider `sqlite:` database urls to be local: DatabaseCleaner/database_cleaner#529
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants