aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/locking_test.rb
Commit message (Collapse)AuthorAgeFilesLines
* Fix the test that was broken by #16445 rather than deleting itSean Griffin2015-07-191-0/+12
| | | | | | | | Since the counter cache was properly being updated, the model became stale. Simply reloading the model before attempting to destroy is sufficient for this case. I believe this is enough of an edge case to be a valid change to the tests, even though it represents a potential breaking change.
* Fix counter_cache for polymorphic associationsStefan Kanev2015-07-191-12/+0
| | | | | | | | | | | | | | Also removes a false positive test that depends on the fixed bug: At this time, counter_cache does not work with polymorphic relationships (which is a bug). The test was added to make sure that no StaleObjectError is raised when the car is destroyed. No such error is currently raised because the lock version is not incremented by appending a wheel to the car. Furthermore, `assert_difference` succeeds because `car.wheels.count` does not check the counter cache, but the collection size. The test will fail if it is replaced with `car.wheels_count || 0`.
* Raise StaleObjectError if touched object is stale and locking is enabledMehmet Emin İNAÇ2015-04-191-0/+10
| | | | | | | | | | Fixes #19776 change test variable names and use more verbose on method less verbose use _read_attribute instead of send
* Closes rails/rails#18864: Renaming transactional fixtures to transactional testsBrandon Weiss2015-03-161-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | I’m renaming all instances of `use_transcational_fixtures` to `use_transactional_tests` and “transactional fixtures” to “transactional tests”. I’m deprecating `use_transactional_fixtures=`. So anyone who is explicitly setting this will get a warning telling them to use `use_transactional_tests=` instead. I’m maintaining backwards compatibility—both forms will work. `use_transactional_tests` will check to see if `use_transactional_fixtures` is set and use that, otherwise it will use itself. But because `use_transactional_tests` is a class attribute (created with `class_attribute`) this requires a little bit of hoop jumping. The writer method that `class_attribute` generates defines a new reader method that return the value being set. Which means we can’t set the default of `true` using `use_transactional_tests=` as was done previously because that won’t take into account anyone using `use_transactional_fixtures`. Instead I defined the reader method manually and it checks `use_transactional_fixtures`. If it was set then it should be used, otherwise it should return the default, which is `true`. If someone uses `use_transactional_tests=` then it will overwrite the backwards-compatible method with whatever they set.
* Properly persist `lock_version` as 0 if the DB has no defaultSean Griffin2015-01-091-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | The reason this bug occured is that we never actually check to see if this column has changed from it's default, since it was never assigned and is not mutable. It appears I was wrong in b301c40224c6d15b539dbcc7485adb44d810f88c, with my statement of "there is no longer a case where a given value would differ from the default, but would not already be marked as changed." However, I chose not to revert the deletion of `initialize_internals_callback` from that commit, as I think a solution closer to where the problem lies is less likely to get erroneously removed. I'm not super happy with this solution, but it mirrors what is being done in `_update_record`, and a fix for one should work for the other. I toyed with the idea of changing the definition of `changed?` on the type to `changed_in_place?`. If we type cast the raw value, it'll break a test about updating not modifying the lock column if nothing else was changed. We could have the definition check if `raw_old_value` is `nil`, but this feels fragile and less intention revealing. It would, however, have the benefit of cleaning up old data that incorrectly persisted as `nil`. Fixes #18422
* Go through normal `update_all` logic when updating lock columnsSean Griffin2014-12-261-2/+0
|
* Dynamically modified schema and association would not be correctly resetAkira Matsuda2014-09-061-16/+9
| | | | | This fixes <"SQLite3::SQLException: no such column: legacy_things.person_id: SELECT \"legacy_things\".* FROM \"legacy_things\" WHERE \"legacy_things\".\"person_id\" = ?"> in OptimisticLockingTest#test_lock_destroy
* Reset schema properly after schema changing testAkira Matsuda2014-08-281-0/+2
|
* Don't mess with `column_defaults` when optimistic locking is enabledSean Griffin2014-06-171-0/+7
|
* Remove deprecated method ActiveRecord::Base.quoted_locking_columnAkshay Vishnoi2014-06-101-4/+0
|
* Remove dead test code for unsupported adaptersSean Griffin2014-05-171-3/+1
|
* Correctly send the string given to lock! and reload(:lock) to the lock scope ↵Mauricio Linhares2014-01-291-0/+11
| | | | | | - fixes #13788 As per the documentation at lock!, if the :lock option is a string it should use the given SQL to generate the lock statement.
* Deprecate unused quoted_locking_column method.kennyj2013-09-241-0/+4
|
* Tidy up the "Specified column type for quote_value" changesBen Woosley2013-07-221-1/+0
| | | | | | This includes fixing typos in changelog, removing a deprecated mocha/setup test require, and preferring the `column_for_attribute` accessor over direct access to the columns_hash in the new code.
* Specified column type for quote_valueAlfred Wong2013-07-221-0/+13
| | | | | | | | | | | | | | | | | | | | | When calling quote_value the underlying connection sometimes requires more information about the column to properly return the correct quoted value. I ran into this issue when using optimistic locking in JRuby and the activerecord-jdbcmssql-adapter. In SQLSever 2000, we aren't allowed to insert a integer into a NVARCHAR column type so we need to format it as N'3' if we want to insert into the NVARCHAR type. Unfortuantely, without the column type being passed the connection adapter cannot properly return the correct quote value because it doesn't know to return N'3' or '3'. This patch is fairly straight forward where it just passes in the column type into the quote_value, as it already has the ability to take in the column, so it can properly handle at the connection level. I've added the tests required to make sure that the quote_value method is being passed the column type so that the underlying connection can determine how to quote the value.
* Reset @column_defaults when assigning .kennyj2013-07-141-0/+1
|
* Do not invoke callbacks when delete_all is calledNeeraj Singh2013-06-301-0/+1
| | | | | | | | | | | Method `delete_all` should not be invoking callbacks and this feature was deprecated in Rails 4.0. This is being removed. `delete_all` will continue to honor the `:dependent` option. However if `:dependent` value is `:destroy` then the default deletion strategy for that collection will be applied. User can also force a deletion strategy by passing parameter to `delete_all`. For example you can do `@post.comments.delete_all(:nullify)`
* indentationAaron Patterson2013-06-111-1/+1
|
* Fix ActiveRecord locking column defaults not getting persistedAaron Pfeifer2013-03-181-0/+8
| | | | | | | | | | | When partial inserts are enabled, overridden db defaults are ignored. This results in locking columns having a nil value for new records if the db default is null. This happens because the list of changed attributes for new records is always assumed to be empty. Solution: When a new record's default attributes are set, also initialize the list of changed attributes by comparing current values against what's stored as the column defaults in the database.
* remove ancient TODOs [ci skip].Yves Senn2013-03-181-3/+0
|
* Rename update_attributes method to update, keep update_attributes as an aliasAmparo Luna + Guillermo Iguaran2013-01-031-1/+1
|
* Use a model without counter cache to test read-only attributesRafael Mendonça França2012-08-211-9/+10
|
* removed deprecation warningsAndrey Deryabin2012-04-281-2/+2
|
* remove calls to find(:first), find(:last) and find(:all)Jon Leighton2012-04-261-1/+1
|
* remove tests for #with_scope (it's now deprecated)Jon Leighton2012-04-251-11/+0
|
* fix testJon Leighton2012-03-301-1/+2
|
* whitespace :scissors:Jon Leighton2012-03-301-4/+3
|
* Tests for removing a HABTM association when optimistic locking is enabled.Nick Rogers2012-03-071-1/+11
|
* Add ActiveRecord::Base#with_lockOlek Janiszewski2012-01-181-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | Add a `with_lock` method to ActiveRecord objects, which starts a transaction, locks the object (pessimistically) and yields to the block. The method takes one (optional) parameter and passes it to `lock!`. Before: class Order < ActiveRecord::Base def cancel! transaction do lock! # ... cancelling logic end end end After: class Order < ActiveRecord::Base def cancel! with_lock do # ... cancelling logic end end end
* removed unnecessary +1 from assert_difference because default difference is 1Karunakar (Ruby)2012-01-051-1/+1
|
* refactored tests -- assert_diffrence instead of checking directly with countKarunakar (Ruby)2012-01-041-4/+7
|
* Merge branch 'master' of git://github.com/rails/railsDmitry Polushkin2011-12-311-15/+24
|\
| * remove deprecated set and original methods for table_name, primary_key, etcSergey Nartimov2011-12-211-42/+0
| |
| * Removed test which works only < 1.9Arun Agrawal2011-12-211-10/+0
| |
| * Fix up test altering global state that was causing me griefJon Leighton2011-12-011-2/+4
| |
| * Deprecated `define_attr_method` in `ActiveModel::AttributeMethods`Jon Leighton2011-11-291-1/+3
| | | | | | | | | | This only existed to support methods like `set_table_name` in Active Record, which are themselves being deprecated.
| * Deprecate set_locking_column in favour of self.locking_column=Jon Leighton2011-11-291-1/+41
| |
| * Deprecate set_table_name in favour of self.table_name= or defining your own ↵Jon Leighton2011-11-291-1/+1
| | | | | | | | method.
| * Includes stale record in StaleObjectErrorChristian Bäuerlein2011-10-141-1/+18
| |
* | Test polymorphic record with optimistic locking and counter cache should be ↵Dmitry Polushkin2011-09-091-0/+12
|/ | | | destoyed without catching the ActiveRecord::StaleObjectError.
* please use ruby -I lib:test path/to/test.rb, or export RUBY_OPTAaron Patterson2011-06-061-1/+1
|
* Refactor Active Record test connection setup. Please see the ↵Jon Leighton2011-06-041-1/+1
| | | | RUNNING_UNIT_TESTS file for details, but essentially you can now configure things in test/config.yml. You can also run tests directly via the command line, e.g. ruby path/to/test.rb (no rake needed, uses default db connection from test/config.yml). This will help us fix the CI by enabling us to isolate the different Rails versions to different databases.
* Don't quote ID's as Arel will quote them -- follow same conventions as the ↵Christopher Meiklejohn2011-05-081-1/+35
| | | | delete method.
* The optimistic lock column should be increased when calling touchFranck Verrot2011-02-091-0/+8
| | | | Signed-off-by: Santiago Pastorino and José Ignacio Costa <santiago+jose@wyeworks.com>
* this test requires the job model, so we should require itAaron Patterson2011-02-081-0/+1
|
* fixing bug where 1.8 hangs while running pg testsAaron Patterson2011-01-181-1/+1
|
* In a number of places in the tests, we only need to turn off transactional ↵Jon Leighton2011-01-111-25/+29
| | | | fixtures when the DB does not support savepoints. This speeds the test run up by about 8-9% on my computer, when running rake test_sqlite3_mem :)
* Enable the sqlite3 in-memory test connection to workJon Leighton2011-01-111-2/+2
|
* Don't depend on rubygems loading thread (for Mutex)raggi2010-11-251-0/+1
|
* clear any stale connections before messing with threaded testsAaron Patterson2010-10-131-0/+1
|