aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #26460 from ↵Sean Griffin2016-09-121-6/+2
|\ | | | | | | | | kamipo/remove_useless_test_string_with_crazy_column Remove useless `test_string_with_crazy_column`
| * Remove useless `test_string_with_crazy_column`Ryuta Kamizono2016-09-111-6/+2
| | | | | | | | | | | | Passing `FakeColumn` was removed at #15336 therefore `test_string_with_crazy_column` is duplicated with `test_quote_string_no_column`.
* | Merge pull request #26434 from dylanahsmith/mysql2-no-nil-connectionArthur Nogueira Neves2016-09-121-0/+21
|\ \ | | | | | | activerecord/mysql2: Avoid setting @connection to nil, just close it
| * | activerecord/mysql2: Avoid setting @connection to nil, just close itDylan Thacker-Smith2016-09-081-0/+21
| |/ | | | | | | | | | | | | | | | | | | By doing `@connection = nil` that means that we need nil checks before it is used anywhere, but we weren't doing those checks. Instead, we get a NoMethodError after using a connection after it fails to reconnect. Neither of the other adapters set @connection to nil, just the mysql2 adapter. By just closing it, we avoid the need to check if we have a connection object and it will produce an appropriate exception when used.
* | Merge pull request #26459 from ysksn/add_test_for_activerecord_enumEileen M. Uchitelle2016-09-121-0/+40
|\ \ | | | | | | Add tests for ActiveRecord::Enum#enum when suffix specified
| * | Add tests for ActiveRecord::Enum#enum when suffix specifiedYosuke Kabuto2016-09-121-0/+40
| |/ | | | | | | Make name of attribute medium instead of normal
* | Merge pull request #26458 from kamipo/remove_unused_require_threadSantiago Pastorino2016-09-111-1/+0
|\ \ | | | | | | Remove unused `require "thread"` in `test/cases/attribute_methods/read_test.rb`
| * | Remove unused `require "thread"` in `test/cases/attribute_methods/read_test.rb`Ryuta Kamizono2016-09-111-1/+0
| |/ | | | | | | `Mutex` was removed at 8eb7561ac6e8f020ec09608532de310c6b0b8dcd.
* / Remove duplicated `elsif` branchRyuta Kamizono2016-09-111-2/+0
|/ | | | The `elsif` branch is completely duplicated with `else` branch.
* Merge pull request #26370 from yahonda/rails26368Andrew White2016-09-052-2/+2
|\ | | | | Move `require "models/post"` before `require "models/comment"`
| * Change require order to come `require "models/post"` before `require ↵Yasuo Honda2016-09-022-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | "models/comment"` to address BasicsTest#test_readonly_attributes failure #26368 It reproduces only when both of these conditions are satisfied: - Other test files `autosave_association_test.rb` or `where_test.rb` which executes `require "models/comment"` then `require "models/post"` - When `autosave_association_test.rb` or `where_test.rb` executed before `base_test.rb`
* | Fix broken heredoc indentation caused by rubocop auto-correctRyuta Kamizono2016-09-035-22/+22
|/ | | | | | All indentation was normalized by rubocop auto-correct at 80e66cc4d90bf8c15d1a5f6e3152e90147f00772. But heredocs was still kept absolute position. This commit aligns heredocs indentation for consistency.
* fixes remaining RuboCop issues [Vipul A M, Xavier Noria]Xavier Noria2016-09-011-4/+4
|
* Include user defined attributes in inspectSean Griffin2016-08-311-0/+6
| | | | The fact that this only includes column names is an oversight.
* Remove deprecated handling of PG PointsSean Griffin2016-08-311-12/+0
| | | | | | | | | | There are some minor changes to the point type as I had forgotten that this will affect the behavior of `t.point` in migrations and the schema dumper so we need to handle those as well. I'll say this again so I can convince myself to come up with a better structure... TYPES SHOULD NOT CARE ABOUT SCHEMA DUMPING AND WE NEED TO BETTER SEPARATE THESE.
* Attempt to maintain encoding for arrays of strings with PGSean Griffin2016-08-311-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | I still think that this is something that should be handled in the pg gem, but it's not going to end up happening there so we'll do it here instead. Once we bump to pg 0.19 we can pass the encoding to the `encode` method instead. This issue occurs because C has no concept of encoding (or strings, really). The bytes that we pass here when sending the value to the database will always be interpreted as whatever encoding the connection is currently configured to use. That means that roundtripping to the database will lose no information However, after assigning we round trip through our type system without hitting the database. The only way that we can do the "correct" thin here would be to actually give a reference to the connection to the array type and have it check the current value of the connection's encoding -- which I'm strongly opposed to. We could also pass in the encoding when it's constructed, but since that can change independently of the type I'm not a huge fan of that either. This feels like a reasonable middle ground, where if we have an array of strings we simply use the encoding of the string we're given. Fixes #26326.
* Ensure that inverse associations are set before running callbacksSean Griffin2016-08-311-0/+27
| | | | | | | | | | | | | | | | | If a parent association was accessed in an `after_find` or `after_initialize` callback, it would always end up loading the association, and then immediately overwriting the association we just loaded. If this occurred in a way that the parent's `current_scope` was set to eager load the child, this would result in an infinite loop and eventually overflow the stack. For records that are created with `.new`, we have a mechanism to perform an action before the callbacks are run. I've introduced the same code path for records created with `instantiate`, and updated all code which sets inverse instances on newly loaded associations to use this block instead. Fixes #26320.
* Don't unnecessarily load a belongs_to when saving.James Coleman2016-08-261-0/+6
| | | | | | | | Previously, if the the association was previously loaded and then the foreign key changed by itself, a #save call would trigger a load of the new associated record during autosave. This is unnecessary and the autosave code (in that case) didn't use the loaded record anyways.
* Fix "warning: assigned but unused variable - task"Ryuta Kamizono2016-08-261-1/+1
|
* Test that AR query cache isn't busted when types are not same objectJames Coleman2016-08-241-0/+20
| | | | | | | | | | This is fixed in 5.0 as an ancillary part of 574f255629a45cd67babcfb9bb8e163e091a53b8 but here I also add a test for the condition. I'd previously backported the fix (and added a test) in the below commit; this brings the fix back up to master. (cherry picked from commit fce3dbf30241f2a65c777e192a7171b0eea81453)
* Merge pull request #26182 from bogdan/remove-relation-metaprogrammingRafael França2016-08-231-1/+2
|\ | | | | Remove over meta programming in AR::Relation
| * Remove over meta programming in AR::RelationBogdan Gusiev2016-08-231-1/+2
| | | | | | | | | | | | | | | | | | | | Introduced low level methods #set_value and #get_value for setting query attributes: relation.set_value(:where, {id: 1}) relation.get_value(:includes) Used those internally when working with relation's attributes at the abstract level
* | Fix CI failure caused by df84e9867219e9311aef6f4efd5dd9ec675bee5cRyuta Kamizono2016-08-231-2/+2
| |
* | Remove the SchemaDumper options and change the default behaviorRafael Mendonça França2016-08-221-93/+12
| | | | | | | | | | Now the schema dumper by default doesn't align the types and arguments in the ruby format anymore.
* | Fix `OID::Bit#cast_value`Ryuta Kamizono2016-08-201-2/+3
| | | | | | | | Fixes #26137.
* | Remove unused `blob_or_text_column?` methodRyuta Kamizono2016-08-191-5/+0
| |
* | Merge pull request #25675 from TimPetricola/schema-no-standardized-column-widthsRafael Mendonça França2016-08-191-0/+78
|\ \ | | | | | | | | | Option not to line up column attributes in schema.rb
| * | Option not to line up column types and attributes in schema.rbTim Petricola2016-08-171-0/+78
| | |
* | | Merge pull request #26154 from ↵Rafael Mendonça França2016-08-192-60/+33
|\ \ \ | | | | | | | | | | | | | | | | | | | | kamipo/remove_text_default_treated_as_empty_string Remove text default treated as an empty string in non-strict mode
| * | | Remove text default treated as an empty string in non-strict modeRyuta Kamizono2016-08-192-60/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Strict mode controls how MySQL handles invalid or missing values in data-change statements such as INSERT or UPDATE. If strict mode is not in effect, MySQL inserts adjusted values for invalid or missing values and produces warnings. ```ruby def test_mysql_not_null_defaults_non_strict using_strict(false) do with_mysql_not_null_table do |klass| record = klass.new assert_nil record.non_null_integer assert_nil record.non_null_string assert_nil record.non_null_text assert_nil record.non_null_blob record.save! record.reload assert_equal 0, record.non_null_integer assert_equal "", record.non_null_string assert_equal "", record.non_null_text assert_equal "", record.non_null_blob end end end ``` It is inconsistent with other types that only text/blob defaults treated as an empty string. This commit fixes the inconsistency.
* | | | Merge pull request #26089 from travisoneill/sqlite_rollback_fixRafael Mendonça França2016-08-191-0/+17
|\ \ \ \ | |/ / / |/| | | | | | | Sqlite3 Migration Error Fixed (issue #26087)
| * | | Added nil case handling to allow rollback migration in case oftravis.h.oneill@gmail.com2016-08-171-0/+17
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | invalid column type /activerecord/lib/active_record/connection_adapters /abstract/schema_definitions.rb:306 type = type.to_sym Changed to the following to handle nil case: type = type.to_sym if type Added regression test for this case: /activerecord/test/cases/migration_test.rb:554 if current_adapter?(:SQLite3Adapter) def test_allows_sqlite3_rollback_on_invalid_column_type Person.connection.create_table :something, force: true do |t| t.column :number, :integer t.column :name, :string t.column :foo, :bar end assert Person.connection.column_exists?(:something, :foo) assert_nothing_raised { Person.connection.remove_column :something, :foo, :bar } assert !Person.connection.column_exists?(:something, :foo) assert Person.connection.column_exists?(:something, :name) assert Person.connection.column_exists?(:something, :number) ensure Person.connection.drop_table :something, if_exists: true end end
* | | Merge pull request #24099 from k0kubun/preserve-readonlyRafael Mendonça França2016-08-181-2/+20
|\ \ \ | | | | | | | | | | | | Preserve readonly flag only for readonly association
| * | | Preserve readonly flag only for readonly associationTakashi Kokubun2016-07-301-2/+20
| | | | | | | | | | | | | | | | Fixes #24093
* | | | Remove unnecessary `test_sql_for_insert_with_returning_disabled`Ryuta Kamizono2016-08-181-6/+0
| |/ / |/| | | | | | | | | | | Because `sql_for_insert` is only called in `use_insert_returning?` is true since #26002.
* | | Merge pull request #25976 from kamipo/pluck_uses_loaded_targetRafael França2016-08-171-0/+7
|\ \ \ | | | | | | | | `pluck` should use `records` (`load_target`) when `loaded?` is true
| * | | `pluck` should use `records` (`load_target`) when `loaded?` is trueRyuta Kamizono2016-08-041-0/+7
| | | |
* | | | Merge pull request #25987 from aquajach/masterRafael Mendonça França2016-08-171-0/+9
|\ \ \ \ | | | | | | | | | | | | | | | Fix does_not_support_reverse? to find sql functions with commas in nested brackets
| * | | | have does_not_support_reverse? support sql functions with commas in nested ↵Jack2016-07-291-0/+9
| | |/ / | |/| | | | | | | | | | brackets
* | | | Merge pull request #26002 from ↵Rafael França2016-08-171-0/+7
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | kamipo/sql_for_insert_should_be_called_inside_exec_insert `sql_for_insert` should be called inside `exec_insert`
| * | | | `sql_for_insert` should be called inside `exec_insert`Ryuta Kamizono2016-08-061-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | `exec_insert` cannot return last inserted id if `use_insert_returning?` is true. `sql_for_insert` should be called inside `exec_insert`.
* | | | | Merge pull request #26009 from kamipo/fix_inconsistent_finder_methods_signatureRafael França2016-08-171-9/+0
|\ \ \ \ \ | | | | | | | | | | | | Fix inconsistent the signature of finder methods for collection association
| * | | | | Fix inconsistent the signature of finder methods for collection associationRyuta Kamizono2016-08-161-9/+0
| | |_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | `#second`, `#third`, etc finder methods was added in 03855e790de2224519f55382e3c32118be31eeff. But the signature of these methods is inconsistent with the original finder methods. And also the signature of `#first` and `#last` methods is different from the original. This commit fixes the inconsistency.
* | | | | Merge pull request #26021 from ↵Rafael França2016-08-171-0/+40
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | kamipo/finder_bang_method_should_call_non_bang_method Finder bang method should call non bang method
| * | | | | Finder bang method should call non bang methodRyuta Kamizono2016-08-161-0/+40
| |/ / / / | | | | | | | | | | | | | | | Otherwise CollectionProxy's bang methdos cannot respect dirty target.
* | | | | Merge pull request #26121 from MaxLap/fix_count_with_left_joinsRafael Mendonça França2016-08-162-10/+19
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | Fix count which would sometimes force a DISTINCT
| * | | | | Fix count which would sometimes force a DISTINCTMaxime Lapointe2016-08-162-10/+19
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current behaviour of checking if there is a LEFT OUTER JOIN arel node to detect if we are doing eager_loading is wrong. This problem wasn't frequent before as only some pretty specific cases would add a LEFT OUTER JOIN arel node. However, the recent new feature left_outer_joins also add this node and made this problem happen frequently. Since in the perform_calculation function, we don't have access to eager_loading information, I had to extract the logic for the distinct out to the calculate method. As I was in the file for left_outer_join tests, I fixed a few that had bugs and I replaced some that were really weak with something that will catch more issues. In relation tests, the first test I changed would have failed if it had validated the hash returned by count instead of just checking how many pairs were in it. This is because this merge of join currently transforms the join node into an outer join node, which then made count do a distinct. So before this change, the return was {1=>1, 4=>1, 5=>1}.
* | | | | Merge pull request #25671 from ↵Rafael França2016-08-163-3/+10
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | kamipo/dont_handle_as_associated_predicate_if_table_has_column Do not handle as an associated predicate if a table has the column
| * | | | | Do not handle as an associated predicate if a table has the columnRyuta Kamizono2016-08-163-3/+10
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | If handled as an associated predicate even though a table has the column, will generate invalid SQL by valid column name treated as a table name.
* | | | | Merge pull request #26000 from kamipo/remove_sanitizeRafael França2016-08-161-5/+0
|\ \ \ \ \ | | | | | | | | | | | | Remove internal `sanitize` method