aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | 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
| * | | | | Remove internal `sanitize` methodRyuta Kamizono2016-07-311-5/+0
| | |_|/ / | |/| | | | | | | | | | | | | | | | | | Currently internal `sanitize`/`quote_value` method is only used for `quoted_id`. Simply it is enough to use `connection.quote` public API instead.
* | | | | Merge pull request #26183 from Shopify/fix-no-touching-touch-laterRafael França2016-08-161-0/+9
|\ \ \ \ \ | |_|/ / / |/| | | | Makes touch_later respects no_touching policy
| * | | | Makes touch_later respects no_touching policyJean Boussier2016-08-161-0/+9
| | | | |
* | | | | Merge pull request #26074 from kamipo/where_by_attribute_with_array_or_rangeRafael França2016-08-162-0/+12
|\ \ \ \ \ | | | | | | | | | | | | `where` by `array|range` attribute with array or range value
| * | | | | `where` by `array|range` attribute with array or range valueRyuta Kamizono2016-08-112-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently predicate builder cannot build a predicate for `array|range` attribute. This commit fixes the issue. Related #25671.
* | | | | | Merge pull request #26097 from Dagnan/fix_recordnotfound_args_rebasedRafael França2016-08-162-0/+22
|\ \ \ \ \ \ | | | | | | | | | | | | | | When calling association.find RecordNotFound is now raised with the s…
| * | | | | | When calling association.find RecordNotFound is now raised with the same ↵Michel Pigassou2016-08-132-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | argument as when we do it in Record.find (primary_key, id and model).
* | | | | | | Merge pull request #26151 from kamipo/avoid_to_allow_unused_splat_argsRafael França2016-08-161-1/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Avoid to allow unused splat args for `t.timestamps` in `create_table`
| * | | | | | | Avoid to allow unused splat args for `t.timestamps` in `create_table`Ryuta Kamizono2016-08-141-1/+1
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Unfortunately `t.timestamps` in `create_table` allows unused splat args. But the same one in `change_table` does not allow them. This commit fixes the inconsistent behavior.
* | | | | | | Merge pull request #26162 from kamipo/take_respects_dirty_targetRafael França2016-08-161-4/+8
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | `CollectionProxy#take` should respect dirty target
| * | | | | | | `CollectionProxy#take` should respect dirty targetRyuta Kamizono2016-08-141-4/+8
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | `#first`, `#second`, ..., `#last` methods respects dirty target. But `#take` doesn't respect it. This commit fixes the inconsistent behavior.
* | | | | | | Merge pull request #26019 from agrobbin/schema-load-unique-column-indicesRafael França2016-08-161-0/+16
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Support multiple indexes on the same column when loading the schema
| * | | | | | | support multiple indexes on the same column when loading the schemaAlex Robbin2016-08-021-0/+16
| | |_|_|/ / / | |/| | | | |
* | | | | | | Add three new rubocop rulesRafael Mendonça França2016-08-1693-512/+512
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Style/SpaceBeforeBlockBraces Style/SpaceInsideBlockBraces Style/SpaceInsideHashLiteralBraces Fix all violations in the repository.
* | | | | | | Merge pull request #26150 from kamipo/consolidate_ar_test_case_and_as_test_caseSean Griffin2016-08-142-17/+16
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Consolidate `ActiveRecord::TestCase` and `ActiveSupport::TestCase` in AR test cases
| * | | | | | | Consolidate `ActiveRecord::TestCase` and `ActiveSupport::TestCase` in AR ↵Ryuta Kamizono2016-08-142-17/+16
| | |/ / / / / | |/| | | | | | | | | | | | | | | | | | | test cases
* / | | | | | Pass along original attribute to save later recursionAaron Patterson2016-08-141-0/+7
|/ / / / / / | | | | | | | | | | | | | | | | | | Fixes #26122
* | | | | | Merge pull request #26113 from kamipo/use_ar_test_case_instead_of_as_test_caseRafael França2016-08-122-2/+2
|\ \ \ \ \ \ | | | | | | | | | | | | | | Use `ActiveRecord::TestCase` rather than `ActiveSupport::TestCase` in AR test cases
| * | | | | | Use `ActiveRecord::TestCase` rather than `ActiveSupport::TestCase` in AR ↵Ryuta Kamizono2016-08-112-2/+2
| | |/ / / / | |/| | | | | | | | | | | | | | | | test cases
* | | | | | Merge pull request #26124 from yahonda/diag26099Sean Griffin2016-08-111-4/+2
|\ \ \ \ \ \ | | | | | | | | | | | | | | Creating a new Topic class instead of class_eval for the existing one
| * | | | | | Creating a new Topic class instead of class_eval for the existing oneYasuo Honda2016-08-111-4/+2
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | since it affects another test `ReflectionTest#test_read_attribute_names` Address #26099
* / / / / / Fix warning: ambiguous first argumentRyuta Kamizono2016-08-121-1/+1
|/ / / / /
* | | | | Fix a NoMethodError schema_statements.rbGenadi Samokovarov2016-08-101-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you call `remove_index` with wrong options, say a type, like I did, you get: ``` == 20160810072541 RemoveUniqueIndexOnGoals: migrating ========================= -- remove_index(:goal, {:coulmn=>:kid_id, :unique=>true}) rails aborted! StandardError: An error has occurred, this and all later migrations canceled: undefined method `ArgumentError' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter:0x007fb7dec91b28> ``` What happened is that I mistyped column (coulmn) and got a `NoMethodError`, because of a missing comma during the raise. This made Ruby think we're calling the method `ArgumentError`.
* | | | | Fix broken alignments caused by auto-correct commit 411ccbdRyuta Kamizono2016-08-104-4/+8
| | | | | | | | | | | | | | | | | | | | Hash syntax auto-correcting breaks alignments. 411ccbdab2608c62aabdb320d52cb02d446bb39c
* | | | | Use `FETCH FIRST` for Oracle12 database and Arel Oracle12 visitorYasuo Honda2016-08-082-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | also test `ROWNUM <=` for Oracle 11g or older version of Oracle and Oracle visitor Oracle 12c database and Arel Oracle12 visitor supports better top N query.
* | | | | code gardening: removes redundant selfsXavier Noria2016-08-087-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A few have been left for aesthetic reasons, but have made a pass and removed most of them. Note that if the method `foo` returns an array, `foo << 1` is a regular push, nothing to do with assignments, so no self required.
* | | | | revises most Lint/EndAlignment offensesXavier Noria2016-08-072-6/+7
| | | | | | | | | | | | | | | | | | | | Some case expressions remain, need to think about those ones.
* | | | | Add `Style/EmptyLines` in `.rubocop.yml` and remove extra empty linesRyuta Kamizono2016-08-0719-21/+0
| | | | |
* | | | | applies remaining conventions across the projectXavier Noria2016-08-0644-57/+25
| | | | |
* | | | | normalizes indentation and whitespace across the projectXavier Noria2016-08-0668-2165/+2163
| | | | |
* | | | | remove redundant curlies from hash argumentsXavier Noria2016-08-0622-93/+85
| | | | |
* | | | | modernizes hash syntax in activerecordXavier Noria2016-08-06173-2309/+2305
| | | | |
* | | | | applies new string literal convention in activerecord/testXavier Noria2016-08-06280-5678/+5678
| | | | | | | | | | | | | | | | | | | | | | | | | The current code base is not uniform. After some discussion, we have chosen to go with double quotes by default.
* | | | | Merge pull request #25998 from kamipo/enum_with_alias_attributeEileen M. Uchitelle2016-08-061-0/+16
|\ \ \ \ \ | |_|_|/ / |/| | | | Fix `enum` with `alias_attribute`
| * | | | Fix `enum` with `alias_attribute`Ryuta Kamizono2016-07-311-0/+16
| |/ / / | | | | | | | | | | | | Fixes #25892.
* | | | Don't assume all hashes are from multiparameter assignment in `composed_of`Sean Griffin2016-08-052-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So this bug is kinda funky. The code path is basically "if we weren't passed an instance of the class we compose to, and we have a converter, call that". Ignoring the hash case for a moment, everything after that was roughly intended to be the "else" clause, meaning that we are expected to have an instance of the class we compose to. Really, we should be blowing up in that case, as we can give a much better error message than what they user will likely get (e.g. `NameError: No method first for String` or something). Still, Ruby is duck typed, so if the object you're assigning responds to the same methods as the type you compose to, knock yourself out. The hash case was added in 36e9be8 to remove a bunch of special cased code from multiparameter assignment. I wrongly assumed that the only time we'd get a hash there is in that case. Multiparameter assignment will construct a very specific hash though, where the keys are integers, and we will have a set of keys covering `1..part.size` exactly. I'm pretty sure this could actually be passed around as an array, but that's a different story. Really I should convert this to something like `class MultiParameterAssignment < Hash; end`, which I might do soon. However for a change that I'm willing to backport to 4-2-stable, this is what I want to go with for the time being. Fixes #25978
* | | | The problem isn't the detection but the deadlock itselfDavid Heinemeier Hansson2016-08-042-4/+4
| |_|/ |/| |
* | | Merge pull request #25107 from Erol/introduce-new-ar-transaction-error-classesRafael Mendonça França2016-08-032-22/+40
|\ \ \ | |/ / |/| | | | | | | | | | | Introduce new ActiveRecord transaction error classes Closes #26018
| * | Introduce new ActiveRecord transaction error classesErol Fornoles2016-05-242-22/+40
| | |
* | | Merge pull request #25941 from kamipo/finder_methods_uses_load_targetRafael França2016-07-281-0/+2
|\ \ \ | | | | | | | | `FinderMethods` uses `records` (`load_target`) when `loaded?` is true
| * | | `FinderMethods` uses `records` (`load_target`) when `loaded?` is trueRyuta Kamizono2016-07-281-0/+2
| | | |