class TestDefaultAutosaveAssociationOnAHasOneAssociation

Public Instance Methods

test_assignment_before_either_saved() click to toggle source
# File activerecord/test/cases/autosave_association_test.rb, line 167
def test_assignment_before_either_saved
  firm = Firm.new("name" => "GlobalMegaCorp")
  firm.account = a = Account.new("credit_limit" => 1000)
  assert !firm.persisted?
  assert !a.persisted?
  assert_equal a, firm.account
  assert firm.save
  assert firm.persisted?
  assert a.persisted?
  assert_equal a, firm.account
  firm.association(:account).reload
  assert_equal a, firm.account
end
test_assignment_before_parent_saved() click to toggle source
# File activerecord/test/cases/autosave_association_test.rb, line 156
def test_assignment_before_parent_saved
  firm = Firm.new("name" => "GlobalMegaCorp")
  firm.account = a = Account.find(1)
  assert !firm.persisted?
  assert_equal a, firm.account
  assert firm.save
  assert_equal a, firm.account
  firm.association(:account).reload
  assert_equal a, firm.account
end
test_build_before_child_saved() click to toggle source
# File activerecord/test/cases/autosave_association_test.rb, line 134
def test_build_before_child_saved
  firm = Firm.find(1)

  account = firm.build_account("credit_limit" => 1000)
  assert_equal account, firm.account
  assert !account.persisted?
  assert firm.save
  assert_equal account, firm.account
  assert account.persisted?
end
test_build_before_either_saved() click to toggle source
# File activerecord/test/cases/autosave_association_test.rb, line 145
def test_build_before_either_saved
  firm = Firm.new("name" => "GlobalMegaCorp")

  firm.account = account = Account.new("credit_limit" => 1000)
  assert_equal account, firm.account
  assert !account.persisted?
  assert firm.save
  assert_equal account, firm.account
  assert account.persisted?
end
test_callbacks_firing_order_on_create() click to toggle source
# File activerecord/test/cases/autosave_association_test.rb, line 199
def test_callbacks_firing_order_on_create
  eye = Eye.create(iris_attributes: { color: "honey" })
  assert_equal [true, false], eye.after_create_callbacks_stack
end
test_callbacks_firing_order_on_save() click to toggle source
# File activerecord/test/cases/autosave_association_test.rb, line 210
def test_callbacks_firing_order_on_save
  eye = Eye.create(iris_attributes: { color: "honey" })
  assert_equal [false, false], eye.after_save_callbacks_stack

  eye.update(iris_attributes: { color: "blue" })
  assert_equal [false, false, false, false], eye.after_save_callbacks_stack
end
test_callbacks_firing_order_on_update() click to toggle source
# File activerecord/test/cases/autosave_association_test.rb, line 204
def test_callbacks_firing_order_on_update
  eye = Eye.create(iris_attributes: { color: "honey" })
  eye.update(iris_attributes: { color: "green" })
  assert_equal [true, false], eye.after_update_callbacks_stack
end
test_not_resaved_when_unchanged() click to toggle source
# File activerecord/test/cases/autosave_association_test.rb, line 181
def test_not_resaved_when_unchanged
  firm = Firm.all.merge!(includes: :account).first
  firm.name += "-changed"
  assert_queries(1) { firm.save! }

  firm = Firm.first
  firm.account = Account.first
  assert_queries(Firm.partial_writes? ? 0 : 1) { firm.save! }

  firm = Firm.first.dup
  firm.account = Account.first
  assert_queries(2) { firm.save! }

  firm = Firm.first.dup
  firm.account = Account.first.dup
  assert_queries(2) { firm.save! }
end
test_save_fails_for_invalid_has_one() click to toggle source
# File activerecord/test/cases/autosave_association_test.rb, line 111
def test_save_fails_for_invalid_has_one
  firm = Firm.first
  assert firm.valid?

  firm.build_account

  assert !firm.account.valid?
  assert !firm.valid?
  assert !firm.save
  assert_equal ["is invalid"], firm.errors["account"]
end
test_save_succeeds_for_invalid_has_one_with_validate_false() click to toggle source
# File activerecord/test/cases/autosave_association_test.rb, line 123
def test_save_succeeds_for_invalid_has_one_with_validate_false
  firm = Firm.first
  assert firm.valid?

  firm.build_unvalidated_account

  assert !firm.unvalidated_account.valid?
  assert firm.valid?
  assert firm.save
end
test_should_save_parent_but_not_invalid_child() click to toggle source
# File activerecord/test/cases/autosave_association_test.rb, line 100
def test_should_save_parent_but_not_invalid_child
  firm = Firm.new(name: "GlobalMegaCorp")
  assert firm.valid?

  firm.build_account_using_primary_key
  assert !firm.build_account_using_primary_key.valid?

  assert firm.save
  assert !firm.account_using_primary_key.persisted?
end