aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | | | | | | | `source_type_scope` should respect correct table aliasRyuta Kamizono2017-10-301-0/+14
| |_|_|/ / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `join_scopes` in `PolymorphicReflection` is passed aliased `table`, so it should be respected for `source_type_scope`. Closes #13969. Fixes #13920. Fixes #15190.
* | | | | | | | | | removed unnecessary semicolonsShuhei Kitagawa2017-10-282-2/+2
| | | | | | | | | |
* | | | | | | | | | Fix all `s/trough/through/`Ryuta Kamizono2017-10-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ``` % git grep -n trough activerecord/test/cases/associations/has_many_through_associations_test.rb:1253: def test_has_many_trough_with_scope_that_has_joined_same_table_with_parent_relation ```
* | | | | | | | | | Fix typo `s/trough/through/`Ryuta Kamizono2017-10-271-1/+1
| | | | | | | | | |
* | | | | | | | | | Merge pull request #30682 from ahorek/fix_scope_forRyuta Kamizono2017-10-275-0/+10
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | delegate scope_for on PolymorphicReflection
| * | | | | | | | | | delegate scope forpavel2017-10-275-0/+10
| | | | | | | | | | |
* | | | | | | | | | | fix initial countpavel2017-10-271-0/+4
|/ / / / / / / / / /
* | | | | | | | | | Third party adapters doesn't support index orders yetRyuta Kamizono2017-10-261-2/+2
| | | | | | | | | |
* | | | | | | | | | Merge pull request #30970 from rohitpaulk/fix-sqlite-3-index-order-dumpRafael França2017-10-251-1/+1
|\ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / |/| | | | | | | | | Save index order :desc to schema.rb (sqlite). Fixes #30902
| * | | | | | | | | Save index order :desc to schema.rb (sqlite). Fixes #30902Paul Kuruvilla2017-10-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Although the sqlite adapter supports index sort orders, they weren't being written to db/schema.rb.
* | | | | | | | | | `supports_extensions?` return always true since PostgreSQL 9.1Yasuo Honda2017-10-245-479/+463
|/ / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | since the minimum version of PostgreSQL currently Rails supports is 9.1, there is no need to handle if `supports_extensions?` Refer https://www.postgresql.org/docs/9.1/static/sql-createextension.html "CREATE EXTENSION"
* | | | | | | | | Ensure associations doesn't table name collide with aliased joinsRyuta Kamizono2017-10-241-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently alias tracker only refer a table name, doesn't respect an alias name. Should use `join.left.name` rather than `join.left.table_name`.
* | | | | | | | | Remove deprecated methd `#scope_chain`Rafael Mendonça França2017-10-231-38/+0
| | | | | | | | |
* | | | | | | | | Remove deprecated configuration `.error_on_ignored_order_or_limit`Rafael Mendonça França2017-10-231-28/+0
| | | | | | | | |
* | | | | | | | | Remove deprecated arguments from `#verify!`Rafael Mendonça França2017-10-231-12/+0
| | | | | | | | |
* | | | | | | | | Remove deprecated argument `name` from `#indexes`Rafael Mendonça França2017-10-232-9/+1
| | | | | | | | |
* | | | | | | | | Remove deprecated method `ActiveRecord::Migrator.schema_migrations_table_name`Rafael Mendonça França2017-10-231-4/+0
| | | | | | | | |
* | | | | | | | | Remove deprecated method `supports_primary_key?`Rafael Mendonça França2017-10-231-4/+0
| | | | | | | | |
* | | | | | | | | Remove deprecated method `supports_migrations?`Rafael Mendonça França2017-10-231-4/+0
| | | | | | | | |
* | | | | | | | | Remove deprecated methods `initialize_schema_migrations_table` and ↵Rafael Mendonça França2017-10-231-5/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `initialize_internal_metadata_table`
* | | | | | | | | Rase when calling `lock!` in a dirty recordRafael Mendonça França2017-10-231-11/+11
| | | | | | | | |
* | | | | | | | | Remove deprecated support to passing a class to `:class_name` on associationsRafael Mendonça França2017-10-232-15/+3
| | | | | | | | |
* | | | | | | | | Remove deprecated argument `default` from `index_name_exists?`Rafael Mendonça França2017-10-231-4/+2
| | | | | | | | |
* | | | | | | | | Remove deprecated support to `quoted_id` when typecasting an Active Record ↵Rafael Mendonça França2017-10-232-49/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | object
* | | | | | | | | Fix duplicate aliases when using both INNER/LEFT JOINsRyuta Kamizono2017-10-231-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It should be shared the count of alias tracking in both INNER/LEFT JOINs to avoid duplicate aliases. Fixes #30504. Closes #30410.
* | | | | | | | | Ensure associations doesn't table name collide with string joinsRyuta Kamizono2017-10-231-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently we have no test for alias tracking with string joins. I've add test case for that to catch a future regression.
* | | | | | | | | Place `MocktailDesigner` in `test/models/drink_designer.rb`Ryuta Kamizono2017-10-233-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since `MocktailDesigner` inherits `DrinkDesigner` and can not be used alone.
* | | | | | | | | Add test cases for `type` and `foreign_type` in the reflectionsRyuta Kamizono2017-10-211-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It should be initialized only when polymorphic associations.
* | | | | | | | | Convert ignored_columns to a list of stringAltech2017-10-202-0/+20
| | | | | | | | |
* | | | | | | | | Test `ignored_columns` value is inheritable by subclassesRyuta Kamizono2017-10-192-0/+10
| | | | | | | | |
* | | | | | | | | Enable `hstore` extention disabled at the end of ↵Yasuo Honda2017-10-181-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `InvertibleMigrationTest#test_migrate_enable_and_disable_extension` to avoid failure of `PostgresqlArrayTest#test_schema_dump_with_shorthand` which expects `hstore` extension enabled.
* | | | | | | | | Should test `LegacyPrimaryKeyTest` to both `V5_0` and `V4_2`Ryuta Kamizono2017-10-181-15/+34
| | | | | | | | |
* | | | | | | | | compatibility - use int instead of bigintpavel2017-10-181-0/+3
| | | | | | | | |
* | | | | | | | | Add a test case that eager-loading with a polymorphic association and using ↵Ryuta Kamizono2017-10-161-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `exists?` This test covers the case of 02da8aea. Previously `exists?` was always eager-loading the includes values. But now it is eager-loaded only when necessary since 07a611e0. So the case of the eager-loading had not covered in the test.
* | | | | | | | | Fix longer sequence name detection for serial columns (#28339)Ryuta Kamizono2017-10-151-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We already found the longer sequence name, but we could not consider whether it was the sequence name created by serial type due to missed a max identifier length limitation. I've addressed the sequence name consideration to respect the max identifier length. Fixes #28332.
* | | | | | | | | MySQL: Don't lose `auto_increment: true` in the `db/schema.rb`Ryuta Kamizono2017-10-151-0/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently `AUTO_INCREMENT` is implicitly used in the default primary key definition. But `AUTO_INCREMENT` is not only used for single column primary key, but also for composite primary key. In that case, `auto_increment: true` should be dumped explicitly in the `db/schema.rb`. Fixes #30894.
* | | | | | | | | Fix `COUNT(DISTINCT ...)` for `GROUP BY` with `ORDER BY` and `LIMIT`Ryuta Kamizono2017-10-141-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the fix for the regression of #29848. In #29848, I've kept existing select list in the subquery for the count if ORDER BY is given. But it had accidentally affect to GROUP BY queries also. It should keep the previous behavior in that case. Fixes #30886.
* | | | | | | | | Show the failed queries in `test_has_one_does_not_use_order_by`Ryuta Kamizono2017-10-141-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For investigating the cause of failure. https://travis-ci.org/rails/rails/jobs/287474883#L797-L799
* | | | | | | | | Merge pull request #30836 from ↵Matthew Draper2017-10-101-0/+5
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | shioyama/generated_attribute_methods_include_mutex Include Mutex_m into GeneratedAttributeMethods instead of extending instance
| * | | | | | | | | Add test for class of GeneratedAttributeMethods instance in ancestorsChris Salzberg2017-10-091-0/+5
| | | | | | | | | |
* | | | | | | | | | Joined tables in association scope doesn't use the same aliases with the ↵Ryuta Kamizono2017-10-092-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | parent relation's aliases Building association scope in join dependency should respect the parent relation's aliases to avoid using the same alias name more than once. Fixes #30681.
* | | | | | | | | | All test cases for `exists?` places in `finder_test.rb` to ease to find the ↵Ryuta Kamizono2017-10-092-26/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | test cases
* | | | | | | | | | Fix `relation.exists?` with has_many through associationsRyuta Kamizono2017-10-091-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `relation.exists?` should reference correct aliases while joining tables of has_many through associations.
* | | | | | | | | | Distinguish missing adapter gems from load errors within the adapterJeremy Daer2017-10-081-1/+1
|/ / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * When the adapter is missing, raise an exception that points out config typos and missing Gemfile entries. (We can assume that a non-builtin adapter was used since these are always available.) * When loading an adapter raises a LoadError, prefix its error message to indicate that the adapter is likely missing an optional dependency.
* | | | | | | | | Add JSON attribute test cases for SQLite3 adapterRyuta Kamizono2017-10-052-0/+31
| | | | | | | | |
* | | | | | | | | Ensure `AliasTracker` respects a custom table nameRyuta Kamizono2017-09-301-4/+8
| | | | | | | | |
* | | | | | | | | Add test case for `arel_attribute` with a custom tableRyuta Kamizono2017-09-272-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since #29301, `arel_attribute` respects a custom table name.
* | | | | | | | | `Postgres::OID::Range` serializes to a `Range`, quote in `Quoting`Thomas Cannon2017-09-262-1/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PostgreSQL 9.1+ introduced range types, and Rails added support for using this datatype in ActiveRecord. However, the serialization of `PostgreSQL::OID::Range` was incomplete, because it did not properly quote the bounds that make up the range. A clear example of this is a `tsrange`. Normally, ActiveRecord quotes Date/Time objects to include the milliseconds. However, the way `PostgreSQL::OID::Range` serialized its bounds, the milliseconds were dropped. This meant that the value was incomplete and not equal to the submitted value. An example of normal timestamps vs. a `tsrange`. Note how the bounds for the range do not include their milliseconds (they were present in the ruby Range): UPDATE "iterations" SET "updated_at" = $1, "range" = $2 WHERE "iterations"."id" = $3 [["updated_at", "2017-09-23 17:07:01.304864"], ["range", "[2017-09-23 00:00:00 UTC,2017-09-23 23:59:59 UTC]"], ["id", 1234]] `PostgreSQL::OID::Range` serialized the range by interpolating a string for the range, which works for most cases, but does not work for timestamps: def serialize(value) if value.is_a?(::Range) from = type_cast_single_for_database(value.begin) to = type_cast_single_for_database(value.end) "[#{from},#{to}#{value.exclude_end? ? ')' : ']'}" else super end end (byebug) from = type_cast_single_for_database(value.begin) 2010-01-01 13:30:00 UTC (byebug) to = type_cast_single_for_database(value.end) 2011-02-02 19:30:00 UTC (byebug) "[#{from},#{to}#{value.exclude_end? ? ')' : ']'}" "[2010-01-01 13:30:00 UTC,2011-02-02 19:30:00 UTC)" @sgrif (the original implementer for Postgres Range support) provided some feedback about where the quoting should occur: Yeah, quoting at all is definitely wrong here. I'm not sure what I was thinking in 02579b5, but what this is doing is definitely in the wrong place. It should probably just be returning a range of subtype.serialize(value.begin) and subtype.serialize(value.end), and letting the adapter handle the rest. `Postgres::OID::Range` now returns a `Range` object, and `ActiveRecord::ConnectionAdapters::PostgreSQL::Quoting` can now encode and quote a `Range`: def encode_range(range) "[#{type_cast(range.first)},#{type_cast(range.last)}#{range.exclude_end? ? ')' : ']'}" end ... encode_range(range) #=> "['2010-01-01 13:30:00.670277','2011-02-02 19:30:00.745125')" This commit includes tests to make sure the milliseconds are preserved in `tsrange` and `tstzrange` columns
* | | | | | | | | Remove unused `cached_columns` and `time_related_columns_on_topic` in ↵Ryuta Kamizono2017-09-271-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `AttributeMethodsTest` These are no longer used since 66736c8e.
* | | | | | | | | Treat `Set` as an `Array` in `Relation#where`Sean Griffin2017-09-261-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I do not want to set the expectation that any enumerable object should behave this way, but this case in particular comes up frequently enough that I'm caving on this one. Fixes #30684.