diff options
Diffstat (limited to 'activerecord/test')
25 files changed, 127 insertions, 100 deletions
diff --git a/activerecord/test/cases/arel/collectors/sql_string_test.rb b/activerecord/test/cases/arel/collectors/sql_string_test.rb index 380573494d..443c7eb54b 100644 --- a/activerecord/test/cases/arel/collectors/sql_string_test.rb +++ b/activerecord/test/cases/arel/collectors/sql_string_test.rb @@ -19,27 +19,21 @@ module Arel          collect(node).value        end -      def ast_with_binds(bv) +      def ast_with_binds          table = Table.new(:users)          manager = Arel::SelectManager.new table -        manager.where(table[:age].eq(bv)) -        manager.where(table[:name].eq(bv)) +        manager.where(table[:age].eq(Nodes::BindParam.new("hello"))) +        manager.where(table[:name].eq(Nodes::BindParam.new("world")))          manager.ast        end        def test_compile -        bv = Nodes::BindParam.new(1) -        collector = collect ast_with_binds bv - -        sql = collector.compile ["hello", "world"] +        sql = compile(ast_with_binds)          assert_equal 'SELECT FROM "users" WHERE "users"."age" = ? AND "users"."name" = ?', sql        end        def test_returned_sql_uses_utf8_encoding -        bv = Nodes::BindParam.new(1) -        collector = collect ast_with_binds bv - -        sql = collector.compile ["hello", "world"] +        sql = compile(ast_with_binds)          assert_equal sql.encoding, Encoding::UTF_8        end      end diff --git a/activerecord/test/cases/arel/delete_manager_test.rb b/activerecord/test/cases/arel/delete_manager_test.rb index 17a5271039..0bad02f4d2 100644 --- a/activerecord/test/cases/arel/delete_manager_test.rb +++ b/activerecord/test/cases/arel/delete_manager_test.rb @@ -15,6 +15,7 @@ module Arel        dm = Arel::DeleteManager.new        dm.take 10        dm.from table +      dm.key = table[:id]        assert_match(/LIMIT 10/, dm.to_sql)      end diff --git a/activerecord/test/cases/arel/visitors/to_sql_test.rb b/activerecord/test/cases/arel/visitors/to_sql_test.rb index e8ac50bfa3..b6426a211e 100644 --- a/activerecord/test/cases/arel/visitors/to_sql_test.rb +++ b/activerecord/test/cases/arel/visitors/to_sql_test.rb @@ -221,7 +221,7 @@ module Arel          sql.must_be_like "foo AS bar"        end -      it "should visit_Bignum" do +      it "should visit_Integer" do          compile 8787878092        end diff --git a/activerecord/test/cases/associations/belongs_to_associations_test.rb b/activerecord/test/cases/associations/belongs_to_associations_test.rb index 8b205f0b85..d520919332 100644 --- a/activerecord/test/cases/associations/belongs_to_associations_test.rb +++ b/activerecord/test/cases/associations/belongs_to_associations_test.rb @@ -616,8 +616,10 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase      debate.touch(time: time)      debate2.touch(time: time) -    reply.parent_title = "debate" -    reply.save! +    assert_queries(3) do +      reply.parent_title = "debate" +      reply.save! +    end      assert_operator debate.reload.updated_at, :>, time      assert_operator debate2.reload.updated_at, :>, time @@ -625,8 +627,10 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase      debate.touch(time: time)      debate2.touch(time: time) -    reply.topic_with_primary_key = debate2 -    reply.save! +    assert_queries(3) do +      reply.topic_with_primary_key = debate2 +      reply.save! +    end      assert_operator debate.reload.updated_at, :>, time      assert_operator debate2.reload.updated_at, :>, time @@ -690,7 +694,7 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase      line_item = LineItem.create!      Invoice.create!(line_items: [line_item]) -    assert_queries(0) { line_item.save } +    assert_no_queries { line_item.save }    end    def test_belongs_to_with_touch_option_on_destroy @@ -785,7 +789,7 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase    def test_dont_find_target_when_foreign_key_is_null      tagging = taggings(:thinking_general) -    assert_queries(0) { tagging.super_tag } +    assert_no_queries { tagging.super_tag }    end    def test_dont_find_target_when_saving_foreign_key_after_stale_association_loaded diff --git a/activerecord/test/cases/associations/cascaded_eager_loading_test.rb b/activerecord/test/cases/associations/cascaded_eager_loading_test.rb index ba2104eb26..a9e22c7643 100644 --- a/activerecord/test/cases/associations/cascaded_eager_loading_test.rb +++ b/activerecord/test/cases/associations/cascaded_eager_loading_test.rb @@ -160,6 +160,16 @@ class CascadedEagerLoadingTest < ActiveRecord::TestCase      end    end +  def test_preload_through_missing_records +    post = Post.where.not(author_id: Author.select(:id)).preload(author: { comments: :post }).first! +    assert_no_queries { assert_nil post.author } +  end + +  def test_eager_association_loading_with_missing_first_record +    posts = Post.where(id: 3).preload(author: { comments: :post }).to_a +    assert_equal posts.size, 1 +  end +    def test_eager_association_loading_with_recursive_cascading_four_levels_has_many_through      source = Vertex.all.merge!(includes: { sinks: { sinks: { sinks: :sinks } } }, order: "vertices.id").first      assert_equal vertices(:vertex_4), assert_no_queries { source.sinks.first.sinks.first.sinks.first } diff --git a/activerecord/test/cases/associations/eager_load_nested_include_test.rb b/activerecord/test/cases/associations/eager_load_nested_include_test.rb index c5b2b77bd4..525ad3197a 100644 --- a/activerecord/test/cases/associations/eager_load_nested_include_test.rb +++ b/activerecord/test/cases/associations/eager_load_nested_include_test.rb @@ -92,7 +92,7 @@ class EagerLoadPolyAssocsTest < ActiveRecord::TestCase    def test_include_query      res = ShapeExpression.all.merge!(includes: [ :shape, { paint: :non_poly } ]).to_a      assert_equal NUM_SHAPE_EXPRESSIONS, res.size -    assert_queries(0) do +    assert_no_queries do        res.each do |se|          assert_not_nil se.paint.non_poly, "this is the association that was loading incorrectly before the change"          assert_not_nil se.shape, "just making sure other associations still work" diff --git a/activerecord/test/cases/associations/eager_test.rb b/activerecord/test/cases/associations/eager_test.rb index 79b3b4a6ad..39034746c9 100644 --- a/activerecord/test/cases/associations/eager_test.rb +++ b/activerecord/test/cases/associations/eager_test.rb @@ -1346,7 +1346,7 @@ class EagerAssociationTest < ActiveRecord::TestCase    def test_joins_with_includes_should_preload_via_joins      post = assert_queries(1) { Post.includes(:comments).joins(:comments).order("posts.id desc").to_a.first } -    assert_queries(0) do +    assert_no_queries do        assert_not_equal 0, post.comments.to_a.count      end    end diff --git a/activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb b/activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb index 482302055d..a90dcc0576 100644 --- a/activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb +++ b/activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb @@ -310,7 +310,7 @@ class HasAndBelongsToManyAssociationsTest < ActiveRecord::TestCase    def test_build      devel = Developer.find(1) -    proj = assert_no_queries(ignore_none: false) { devel.projects.build("name" => "Projekt") } +    proj = assert_no_queries { devel.projects.build("name" => "Projekt") }      assert_not_predicate devel.projects, :loaded?      assert_equal devel.projects.last, proj @@ -325,7 +325,7 @@ class HasAndBelongsToManyAssociationsTest < ActiveRecord::TestCase    def test_new_aliased_to_build      devel = Developer.find(1) -    proj = assert_no_queries(ignore_none: false) { devel.projects.new("name" => "Projekt") } +    proj = assert_no_queries { devel.projects.new("name" => "Projekt") }      assert_not_predicate devel.projects, :loaded?      assert_equal devel.projects.last, proj @@ -546,7 +546,7 @@ class HasAndBelongsToManyAssociationsTest < ActiveRecord::TestCase      developer = project.developers.first -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        assert_predicate project.developers, :loaded?        assert_includes project.developers, developer      end @@ -741,7 +741,7 @@ class HasAndBelongsToManyAssociationsTest < ActiveRecord::TestCase    def test_get_ids_for_loaded_associations      developer = developers(:david)      developer.projects.reload -    assert_queries(0) do +    assert_no_queries do        developer.project_ids        developer.project_ids      end @@ -859,7 +859,7 @@ class HasAndBelongsToManyAssociationsTest < ActiveRecord::TestCase    def test_has_and_belongs_to_many_associations_on_new_records_use_null_relations      projects = Developer.new.projects -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        assert_equal [], projects        assert_equal [], projects.where(title: "omg")        assert_equal [], projects.pluck(:title) diff --git a/activerecord/test/cases/associations/has_many_associations_test.rb b/activerecord/test/cases/associations/has_many_associations_test.rb index 0b44515e00..036df1c31e 100644 --- a/activerecord/test/cases/associations/has_many_associations_test.rb +++ b/activerecord/test/cases/associations/has_many_associations_test.rb @@ -458,7 +458,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase    def test_finder_method_with_dirty_target      company = companies(:first_firm)      new_clients = [] -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        new_clients << company.clients_of_firm.build(name: "Another Client")        new_clients << company.clients_of_firm.build(name: "Another Client II")        new_clients << company.clients_of_firm.build(name: "Another Client III") @@ -478,7 +478,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase    def test_finder_bang_method_with_dirty_target      company = companies(:first_firm)      new_clients = [] -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        new_clients << company.clients_of_firm.build(name: "Another Client")        new_clients << company.clients_of_firm.build(name: "Another Client II")        new_clients << company.clients_of_firm.build(name: "Another Client III") @@ -955,7 +955,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase    end    def test_transactions_when_adding_to_new_record -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        firm = Firm.new        firm.clients_of_firm.concat(Client.new("name" => "Natural Company"))      end @@ -970,7 +970,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase    def test_new_aliased_to_build      company = companies(:first_firm) -    new_client = assert_no_queries(ignore_none: false) { company.clients_of_firm.new("name" => "Another Client") } +    new_client = assert_no_queries { company.clients_of_firm.new("name" => "Another Client") }      assert_not_predicate company.clients_of_firm, :loaded?      assert_equal "Another Client", new_client.name @@ -980,7 +980,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase    def test_build      company = companies(:first_firm) -    new_client = assert_no_queries(ignore_none: false) { company.clients_of_firm.build("name" => "Another Client") } +    new_client = assert_no_queries { company.clients_of_firm.build("name" => "Another Client") }      assert_not_predicate company.clients_of_firm, :loaded?      assert_equal "Another Client", new_client.name @@ -1037,7 +1037,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase    def test_build_many      company = companies(:first_firm) -    new_clients = assert_no_queries(ignore_none: false) { company.clients_of_firm.build([{ "name" => "Another Client" }, { "name" => "Another Client II" }]) } +    new_clients = assert_no_queries { company.clients_of_firm.build([{ "name" => "Another Client" }, { "name" => "Another Client II" }]) }      assert_equal 2, new_clients.size    end @@ -1063,7 +1063,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase    def test_build_via_block      company = companies(:first_firm) -    new_client = assert_no_queries(ignore_none: false) { company.clients_of_firm.build { |client| client.name = "Another Client" } } +    new_client = assert_no_queries { company.clients_of_firm.build { |client| client.name = "Another Client" } }      assert_not_predicate company.clients_of_firm, :loaded?      assert_equal "Another Client", new_client.name @@ -1073,7 +1073,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase    def test_build_many_via_block      company = companies(:first_firm) -    new_clients = assert_no_queries(ignore_none: false) do +    new_clients = assert_no_queries do        company.clients_of_firm.build([{ "name" => "Another Client" }, { "name" => "Another Client II" }]) do |client|          client.name = "changed"        end @@ -1266,7 +1266,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase    def test_calling_empty_with_counter_cache      post = posts(:welcome) -    assert_queries(0) do +    assert_no_queries do        assert_not_empty post.comments      end    end @@ -1364,7 +1364,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase    end    def test_transaction_when_deleting_new_record -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        firm = Firm.new        client = Client.new("name" => "New Client")        firm.clients_of_firm << client @@ -1800,7 +1800,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase      firm.clients = []      firm.save -    assert_queries(0, ignore_none: true) do +    assert_no_queries do        firm.clients = []      end @@ -1822,7 +1822,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase    end    def test_transactions_when_replacing_on_new_record -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        firm = Firm.new        firm.clients_of_firm = [Client.new("name" => "New Client")]      end @@ -1835,7 +1835,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase    def test_get_ids_for_loaded_associations      company = companies(:first_firm)      company.clients.reload -    assert_queries(0) do +    assert_no_queries do        company.client_ids        company.client_ids      end @@ -1862,11 +1862,11 @@ class HasManyAssociationsTest < ActiveRecord::TestCase    end    def test_get_ids_for_association_on_new_record_does_not_try_to_find_records -    Company.columns  # Load schema information so we don't query below -    Contract.columns # if running just this test. +    # Load schema information so we don't query below if running just this test. +    companies(:first_client).contract_ids      company = Company.new -    assert_queries(0) do +    assert_no_queries do        company.contract_ids      end @@ -1972,7 +1972,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase      firm.clients.load_target      assert_predicate firm.clients, :loaded? -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        firm.clients.first        assert_equal 2, firm.clients.first(2).size        firm.clients.last @@ -2385,7 +2385,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase    test "has many associations on new records use null relations" do      post = Post.new -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        assert_equal [], post.comments        assert_equal [], post.comments.where(body: "omg")        assert_equal [], post.comments.pluck(:body) diff --git a/activerecord/test/cases/associations/has_many_through_associations_test.rb b/activerecord/test/cases/associations/has_many_through_associations_test.rb index 442f4a93d4..94ad6e2d4d 100644 --- a/activerecord/test/cases/associations/has_many_through_associations_test.rb +++ b/activerecord/test/cases/associations/has_many_through_associations_test.rb @@ -274,7 +274,7 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase      assert_queries(1) { posts(:thinking) }      new_person = nil # so block binding catches it -    assert_queries(0) do +    assert_no_queries do        new_person = Person.new first_name: "bob"      end @@ -294,7 +294,7 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase    def test_associate_new_by_building      assert_queries(1) { posts(:thinking) } -    assert_queries(0) do +    assert_no_queries do        posts(:thinking).people.build(first_name: "Bob")        posts(:thinking).people.new(first_name: "Ted")      end @@ -571,10 +571,10 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase        posts(:welcome).people = [people(:david)]      end -    assert_queries(0) { +    assert_no_queries do        assert_includes posts(:welcome).people, people(:david)        assert_not_includes posts(:welcome).people, people(:michael) -    } +    end      assert_includes posts(:welcome).reload.people.reload, people(:david)      assert_not_includes posts(:welcome).reload.people.reload, people(:michael) @@ -698,7 +698,7 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase        posts(:welcome).people.clear      end -    assert_queries(0) do +    assert_no_queries do        assert_empty posts(:welcome).people      end @@ -788,7 +788,7 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase    def test_get_ids_for_loaded_associations      person = people(:michael)      person.posts.reload -    assert_queries(0) do +    assert_no_queries do        person.post_ids        person.post_ids      end @@ -1198,7 +1198,7 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase    def test_has_many_through_associations_on_new_records_use_null_relations      person = Person.new -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        assert_equal [], person.posts        assert_equal [], person.posts.where(body: "omg")        assert_equal [], person.posts.pluck(:body) diff --git a/activerecord/test/cases/associations/has_one_associations_test.rb b/activerecord/test/cases/associations/has_one_associations_test.rb index 9eea34d2b9..885d9d7c2c 100644 --- a/activerecord/test/cases/associations/has_one_associations_test.rb +++ b/activerecord/test/cases/associations/has_one_associations_test.rb @@ -37,10 +37,10 @@ class HasOneAssociationsTest < ActiveRecord::TestCase    def test_has_one_cache_nils      firm = companies(:another_firm)      assert_queries(1) { assert_nil firm.account } -    assert_queries(0) { assert_nil firm.account } +    assert_no_queries { assert_nil firm.account } -    firms = Firm.all.merge!(includes: :account).to_a -    assert_queries(0) { firms.each(&:account) } +    firms = Firm.includes(:account).to_a +    assert_no_queries { firms.each(&:account) }    end    def test_with_select @@ -231,7 +231,7 @@ class HasOneAssociationsTest < ActiveRecord::TestCase    end    def test_build_association_dont_create_transaction -    assert_no_queries(ignore_none: false) { +    assert_no_queries {        Firm.new.build_account      }    end diff --git a/activerecord/test/cases/associations/nested_through_associations_test.rb b/activerecord/test/cases/associations/nested_through_associations_test.rb index 03ed1c1d47..5821744530 100644 --- a/activerecord/test/cases/associations/nested_through_associations_test.rb +++ b/activerecord/test/cases/associations/nested_through_associations_test.rb @@ -137,7 +137,7 @@ class NestedThroughAssociationsTest < ActiveRecord::TestCase    def test_has_many_through_has_one_through_with_has_one_source_reflection_preload      members = assert_queries(4) { Member.includes(:nested_sponsors).to_a }      mustache = sponsors(:moustache_club_sponsor_for_groucho) -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        assert_equal [mustache], members.first.nested_sponsors      end    end @@ -196,7 +196,7 @@ class NestedThroughAssociationsTest < ActiveRecord::TestCase      # postgresql test if randomly executed then executes "SHOW max_identifier_length". Hence      # the need to ignore certain predefined sqls that deal with system calls. -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        assert_equal [groucho_details, other_details], members.first.organization_member_details_2.sort_by(&:id)      end    end diff --git a/activerecord/test/cases/autosave_association_test.rb b/activerecord/test/cases/autosave_association_test.rb index db3a58eba9..42d47527b2 100644 --- a/activerecord/test/cases/autosave_association_test.rb +++ b/activerecord/test/cases/autosave_association_test.rb @@ -642,7 +642,7 @@ class TestDefaultAutosaveAssociationOnAHasManyAssociation < ActiveRecord::TestCa    def test_build_before_save      company = companies(:first_firm) -    new_client = assert_no_queries(ignore_none: false) { company.clients_of_firm.build("name" => "Another Client") } +    new_client = assert_no_queries { company.clients_of_firm.build("name" => "Another Client") }      assert_not_predicate company.clients_of_firm, :loaded?      company.name += "-changed" @@ -653,7 +653,7 @@ class TestDefaultAutosaveAssociationOnAHasManyAssociation < ActiveRecord::TestCa    def test_build_many_before_save      company = companies(:first_firm) -    assert_no_queries(ignore_none: false) { company.clients_of_firm.build([{ "name" => "Another Client" }, { "name" => "Another Client II" }]) } +    assert_no_queries { company.clients_of_firm.build([{ "name" => "Another Client" }, { "name" => "Another Client II" }]) }      company.name += "-changed"      assert_queries(3) { assert company.save } @@ -662,7 +662,7 @@ class TestDefaultAutosaveAssociationOnAHasManyAssociation < ActiveRecord::TestCa    def test_build_via_block_before_save      company = companies(:first_firm) -    new_client = assert_no_queries(ignore_none: false) { company.clients_of_firm.build { |client| client.name = "Another Client" } } +    new_client = assert_no_queries { company.clients_of_firm.build { |client| client.name = "Another Client" } }      assert_not_predicate company.clients_of_firm, :loaded?      company.name += "-changed" @@ -673,7 +673,7 @@ class TestDefaultAutosaveAssociationOnAHasManyAssociation < ActiveRecord::TestCa    def test_build_many_via_block_before_save      company = companies(:first_firm) -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        company.clients_of_firm.build([{ "name" => "Another Client" }, { "name" => "Another Client II" }]) do |client|          client.name = "changed"        end @@ -1100,7 +1100,7 @@ class TestDestroyAsPartOfAutosaveAssociation < ActiveRecord::TestCase      assert @pirate.save      Pirate.transaction do -      assert_queries(0) do +      assert_no_queries do          assert @pirate.save        end      end @@ -1181,12 +1181,12 @@ class TestAutosaveAssociationOnAHasOneAssociation < ActiveRecord::TestCase    def test_changed_for_autosave_should_handle_cycles      @ship.pirate = @pirate -    assert_queries(0) { @ship.save! } +    assert_no_queries { @ship.save! }      @parrot = @pirate.parrots.create(name: "some_name")      @parrot.name = "changed_name"      assert_queries(1) { @ship.save! } -    assert_queries(0) { @ship.save! } +    assert_no_queries { @ship.save! }    end    def test_should_automatically_save_bang_the_associated_model diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb index f6311f9256..09e5517449 100644 --- a/activerecord/test/cases/base_test.rb +++ b/activerecord/test/cases/base_test.rb @@ -282,11 +282,13 @@ class BasicsTest < ActiveRecord::TestCase    end    def test_initialize_with_invalid_attribute -    Topic.new("title" => "test", -      "last_read(1i)" => "2005", "last_read(2i)" => "2", "last_read(3i)" => "31") -  rescue ActiveRecord::MultiparameterAssignmentErrors => ex +    ex = assert_raise(ActiveRecord::MultiparameterAssignmentErrors) do +      Topic.new("title" => "test", +        "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00") +    end +      assert_equal(1, ex.errors.size) -    assert_equal("last_read", ex.errors[0].attribute) +    assert_equal("written_on", ex.errors[0].attribute)    end    def test_create_after_initialize_without_block diff --git a/activerecord/test/cases/collection_cache_key_test.rb b/activerecord/test/cases/collection_cache_key_test.rb index a5d908344a..844b2b2162 100644 --- a/activerecord/test/cases/collection_cache_key_test.rb +++ b/activerecord/test/cases/collection_cache_key_test.rb @@ -91,12 +91,12 @@ module ActiveRecord        developers = Developer.where(name: "David")        assert_queries(1) { developers.cache_key } -      assert_queries(0) { developers.cache_key } +      assert_no_queries { developers.cache_key }      end      test "it doesn't trigger any query if the relation is already loaded" do        developers = Developer.where(name: "David").load -      assert_queries(0) { developers.cache_key } +      assert_no_queries { developers.cache_key }      end      test "relation cache_key changes when the sql query changes" do diff --git a/activerecord/test/cases/connection_adapters/connection_handler_test.rb b/activerecord/test/cases/connection_adapters/connection_handler_test.rb index 5e3447efde..51d0cc3d12 100644 --- a/activerecord/test/cases/connection_adapters/connection_handler_test.rb +++ b/activerecord/test/cases/connection_adapters/connection_handler_test.rb @@ -170,6 +170,11 @@ module ActiveRecord          ActiveRecord::Base.configurations = config          ActiveRecord::Base.configurations.configs_for.each do |db_config|            assert_instance_of ActiveRecord::DatabaseConfigurations::HashConfig, db_config +          assert_instance_of String, db_config.env_name +          assert_instance_of String, db_config.spec_name +          db_config.config.keys.each do |key| +            assert_instance_of String, key +          end          end        ensure          ActiveRecord::Base.configurations = @prev_configs diff --git a/activerecord/test/cases/dirty_test.rb b/activerecord/test/cases/dirty_test.rb index b1ebd20d6b..dfd74bfcb4 100644 --- a/activerecord/test/cases/dirty_test.rb +++ b/activerecord/test/cases/dirty_test.rb @@ -336,7 +336,7 @@ class DirtyTest < ActiveRecord::TestCase      end      with_partial_writes Pirate, true do -      assert_queries(0) { 2.times { pirate.save! } } +      assert_no_queries { 2.times { pirate.save! } }        assert_equal old_updated_on, pirate.reload.updated_on        assert_queries(1) { pirate.catchphrase = "bar"; pirate.save! } @@ -355,7 +355,7 @@ class DirtyTest < ActiveRecord::TestCase      old_lock_version = person.lock_version      with_partial_writes Person, true do -      assert_queries(0) { 2.times { person.save! } } +      assert_no_queries { 2.times { person.save! } }        assert_equal old_lock_version, person.reload.lock_version        assert_queries(1) { person.first_name = "bar"; person.save! } diff --git a/activerecord/test/cases/migration/change_table_test.rb b/activerecord/test/cases/migration/change_table_test.rb index 034bf32165..c108d372d1 100644 --- a/activerecord/test/cases/migration/change_table_test.rb +++ b/activerecord/test/cases/migration/change_table_test.rb @@ -164,6 +164,14 @@ module ActiveRecord          end        end +      def test_column_creates_column_with_index +        with_change_table do |t| +          @connection.expect :add_column, nil, [:delete_me, :bar, :integer, {}] +          @connection.expect :add_index, nil, [:delete_me, :bar, {}] +          t.column :bar, :integer, index: true +        end +      end +        def test_index_creates_index          with_change_table do |t|            @connection.expect :add_index, nil, [:delete_me, :bar, {}] diff --git a/activerecord/test/cases/null_relation_test.rb b/activerecord/test/cases/null_relation_test.rb index 17527568f8..c5d5ded5ab 100644 --- a/activerecord/test/cases/null_relation_test.rb +++ b/activerecord/test/cases/null_relation_test.rb @@ -10,26 +10,26 @@ class NullRelationTest < ActiveRecord::TestCase    fixtures :posts, :comments    def test_none -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        assert_equal [], Developer.none        assert_equal [], Developer.all.none      end    end    def test_none_chainable -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        assert_equal [], Developer.none.where(name: "David")      end    end    def test_none_chainable_to_existing_scope_extension_method -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        assert_equal 1, Topic.anonymous_extension.none.one      end    end    def test_none_chained_to_methods_firing_queries_straight_to_db -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        assert_equal [],    Developer.none.pluck(:id, :name)        assert_equal 0,     Developer.none.delete_all        assert_equal 0,     Developer.none.update_all(name: "David") @@ -39,7 +39,7 @@ class NullRelationTest < ActiveRecord::TestCase    end    def test_null_relation_content_size_methods -    assert_no_queries(ignore_none: false) do +    assert_no_queries do        assert_equal 0,     Developer.none.size        assert_equal 0,     Developer.none.count        assert_equal true,  Developer.none.empty? @@ -61,7 +61,7 @@ class NullRelationTest < ActiveRecord::TestCase    [:count, :sum].each do |method|      define_method "test_null_relation_#{method}" do -      assert_no_queries(ignore_none: false) do +      assert_no_queries do          assert_equal 0, Comment.none.public_send(method, :id)          assert_equal Hash.new, Comment.none.group(:post_id).public_send(method, :id)        end @@ -70,7 +70,7 @@ class NullRelationTest < ActiveRecord::TestCase    [:average, :minimum, :maximum].each do |method|      define_method "test_null_relation_#{method}" do -      assert_no_queries(ignore_none: false) do +      assert_no_queries do          assert_nil Comment.none.public_send(method, :id)          assert_equal Hash.new, Comment.none.group(:post_id).public_send(method, :id)        end diff --git a/activerecord/test/cases/persistence_test.rb b/activerecord/test/cases/persistence_test.rb index 8073cabae6..4830ff2b5f 100644 --- a/activerecord/test/cases/persistence_test.rb +++ b/activerecord/test/cases/persistence_test.rb @@ -446,19 +446,17 @@ class PersistenceTest < ActiveRecord::TestCase    end    def test_update_attribute_does_not_run_sql_if_attribute_is_not_changed -    klass = Class.new(Topic) do -      def self.name; "Topic"; end -    end -    topic = klass.create(title: "Another New Topic") -    assert_queries(0) do +    topic = Topic.create(title: "Another New Topic") +    assert_no_queries do        assert topic.update_attribute(:title, "Another New Topic")      end    end    def test_update_does_not_run_sql_if_record_has_not_changed      topic = Topic.create(title: "Another New Topic") -    assert_queries(0) { assert topic.update(title: "Another New Topic") } -    assert_queries(0) { assert topic.update(title: "Another New Topic") } +    assert_no_queries do +      assert topic.update(title: "Another New Topic") +    end    end    def test_delete diff --git a/activerecord/test/cases/query_cache_test.rb b/activerecord/test/cases/query_cache_test.rb index 3eb4e04cb7..565190c476 100644 --- a/activerecord/test/cases/query_cache_test.rb +++ b/activerecord/test/cases/query_cache_test.rb @@ -190,7 +190,7 @@ class QueryCacheTest < ActiveRecord::TestCase        Task.cache do          assert_queries(2) { Task.find(1); Task.find(2) }        end -      assert_queries(0) { Task.find(1); Task.find(1); Task.find(2) } +      assert_no_queries { Task.find(1); Task.find(1); Task.find(2) }      end    end @@ -372,7 +372,7 @@ class QueryCacheTest < ActiveRecord::TestCase      end      # Check that if the same query is run again, no queries are executed -    assert_queries(0) do +    assert_no_queries do        assert_equal 0, Post.where(title: "test").to_a.count      end @@ -427,8 +427,9 @@ class QueryCacheTest < ActiveRecord::TestCase        # Clear places where type information is cached        Task.reset_column_information        Task.initialize_find_by_cache +      Task.define_attribute_methods -      assert_queries(0) do +      assert_no_queries do          Task.find(1)        end      end diff --git a/activerecord/test/cases/relation/merging_test.rb b/activerecord/test/cases/relation/merging_test.rb index 6e7998d15a..224e4f39a8 100644 --- a/activerecord/test/cases/relation/merging_test.rb +++ b/activerecord/test/cases/relation/merging_test.rb @@ -122,6 +122,10 @@ class RelationMergingTest < ActiveRecord::TestCase      assert_not_empty relation.from_clause    end +  def test_merging_with_from_clause_on_different_class +    assert Comment.joins(:post).merge(Post.from("posts")).first +  end +    def test_merging_with_order_with_binds      relation = Post.all.merge(Post.order([Arel.sql("title LIKE ?"), "%suffix"]))      assert_equal ["title LIKE '%suffix'"], relation.order_values diff --git a/activerecord/test/cases/relation_test.rb b/activerecord/test/cases/relation_test.rb index fbeb617b29..68161f6a84 100644 --- a/activerecord/test/cases/relation_test.rb +++ b/activerecord/test/cases/relation_test.rb @@ -232,7 +232,7 @@ module ActiveRecord        assert_equal 3, nb_inner_join, "Wrong amount of INNER JOIN in query"        # using `\W` as the column separator -      assert queries.any? { |sql| %r[INNER\s+JOIN\s+#{Author.quoted_table_name}\s+\Wauthors_categorizations\W]i.match?(sql) }, "Should be aliasing the child INNER JOINs in query" +      assert queries.any? { |sql| %r[INNER\s+JOIN\s+#{Regexp.escape(Author.quoted_table_name)}\s+\Wauthors_categorizations\W]i.match?(sql) }, "Should be aliasing the child INNER JOINs in query"      end      def test_relation_with_merged_joins_aliased_works diff --git a/activerecord/test/cases/tasks/postgresql_rake_test.rb b/activerecord/test/cases/tasks/postgresql_rake_test.rb index 0cb90781f1..065ba7734c 100644 --- a/activerecord/test/cases/tasks/postgresql_rake_test.rb +++ b/activerecord/test/cases/tasks/postgresql_rake_test.rb @@ -366,7 +366,7 @@ if current_adapter?(:PostgreSQLAdapter)          assert_called_with(            Kernel,            :system, -          ["pg_dump", "-s", "-X", "-x", "-O", "-f", @filename, "my-app-db"], +          ["pg_dump", "-s", "-x", "-O", "-f", @filename, "my-app-db"],            returns: true          ) do            ActiveRecord::Tasks::DatabaseTasks.structure_dump(@configuration, @filename) @@ -383,7 +383,7 @@ if current_adapter?(:PostgreSQLAdapter)        end        def test_structure_dump_with_extra_flags -        expected_command = ["pg_dump", "-s", "-X", "-x", "-O", "-f", @filename, "--noop", "my-app-db"] +        expected_command = ["pg_dump", "-s", "-x", "-O", "-f", @filename, "--noop", "my-app-db"]          assert_called_with(Kernel, :system, expected_command, returns: true) do            with_structure_dump_flags(["--noop"]) do @@ -401,7 +401,7 @@ if current_adapter?(:PostgreSQLAdapter)            assert_called_with(              Kernel,              :system, -            ["pg_dump", "-s", "-X", "-x", "-O", "-f", @filename, "-T", "foo", "-T", "bar", "my-app-db"], +            ["pg_dump", "-s", "-x", "-O", "-f", @filename, "-T", "foo", "-T", "bar", "my-app-db"],              returns: true            ) do              ActiveRecord::Tasks::DatabaseTasks.structure_dump(@configuration, @filename) @@ -415,7 +415,7 @@ if current_adapter?(:PostgreSQLAdapter)          assert_called_with(            Kernel,            :system, -          ["pg_dump", "-s", "-X", "-x", "-O", "-f", @filename, "--schema=foo", "--schema=bar", "my-app-db"], +          ["pg_dump", "-s", "-x", "-O", "-f", @filename, "--schema=foo", "--schema=bar", "my-app-db"],            returns: true          ) do            ActiveRecord::Tasks::DatabaseTasks.structure_dump(@configuration, @filename) @@ -428,7 +428,7 @@ if current_adapter?(:PostgreSQLAdapter)          assert_called_with(            Kernel,            :system, -          ["pg_dump", "-s", "-X", "-x", "-O", "-f", @filename,  "my-app-db"], +          ["pg_dump", "-s", "-x", "-O", "-f", @filename,  "my-app-db"],            returns: true          ) do            with_dump_schemas(:all) do @@ -441,7 +441,7 @@ if current_adapter?(:PostgreSQLAdapter)          assert_called_with(            Kernel,            :system, -          ["pg_dump", "-s", "-X", "-x", "-O", "-f", @filename, "--schema=foo", "--schema=bar", "my-app-db"], +          ["pg_dump", "-s", "-x", "-O", "-f", @filename, "--schema=foo", "--schema=bar", "my-app-db"],            returns: true          ) do            with_dump_schemas("foo,bar") do @@ -455,7 +455,7 @@ if current_adapter?(:PostgreSQLAdapter)          assert_called_with(            Kernel,            :system, -          ["pg_dump", "-s", "-X", "-x", "-O", "-f", filename, "my-app-db"], +          ["pg_dump", "-s", "-x", "-O", "-f", filename, "my-app-db"],            returns: nil          ) do            e = assert_raise(RuntimeError) do @@ -496,7 +496,7 @@ if current_adapter?(:PostgreSQLAdapter)          assert_called_with(            Kernel,            :system, -          ["psql", "-v", "ON_ERROR_STOP=1", "-q", "-f", filename, @configuration["database"]], +          ["psql", "-v", "ON_ERROR_STOP=1", "-q", "-X", "-f", filename, @configuration["database"]],            returns: true          ) do            ActiveRecord::Tasks::DatabaseTasks.structure_load(@configuration, filename) @@ -505,7 +505,7 @@ if current_adapter?(:PostgreSQLAdapter)        def test_structure_load_with_extra_flags          filename = "awesome-file.sql" -        expected_command = ["psql", "-v", "ON_ERROR_STOP=1", "-q", "-f", filename, "--noop", @configuration["database"]] +        expected_command = ["psql", "-v", "ON_ERROR_STOP=1", "-q", "-X", "-f", filename, "--noop", @configuration["database"]]          assert_called_with(Kernel, :system, expected_command, returns: true) do            with_structure_load_flags(["--noop"]) do @@ -519,7 +519,7 @@ if current_adapter?(:PostgreSQLAdapter)          assert_called_with(            Kernel,            :system, -          ["psql", "-v", "ON_ERROR_STOP=1", "-q", "-f", filename, @configuration["database"]], +          ["psql", "-v", "ON_ERROR_STOP=1", "-q", "-X", "-f", filename, @configuration["database"]],            returns: true          ) do            ActiveRecord::Tasks::DatabaseTasks.structure_load(@configuration, filename) diff --git a/activerecord/test/cases/touch_later_test.rb b/activerecord/test/cases/touch_later_test.rb index 925a4609a2..cd3d5ed7d1 100644 --- a/activerecord/test/cases/touch_later_test.rb +++ b/activerecord/test/cases/touch_later_test.rb @@ -100,7 +100,7 @@ class TouchLaterTest < ActiveRecord::TestCase    def test_touch_later_dont_hit_the_db      invoice = Invoice.create! -    assert_queries(0) do +    assert_no_queries do        invoice.touch_later      end    end  | 
