rails/activerecord/test/cases/clone_test.rb
Jacopo 851898114b Add ActiveRecord::Base#previously_persisted?
Returns `true` if the object has been previously persisted but now it has been deleted.

This is a follow up of https://github.com/rails/rails/pull/42256/files#r641914920
2021-06-04 13:06:51 +02:00

47 lines
1.3 KiB
Ruby

# frozen_string_literal: true
require "cases/helper"
require "models/topic"
module ActiveRecord
class CloneTest < ActiveRecord::TestCase
fixtures :topics
def test_persisted
topic = Topic.first
cloned = topic.clone
assert topic.persisted?, "topic persisted"
assert cloned.persisted?, "topic persisted"
assert_not cloned.new_record?, "topic is not new"
assert_not cloned.previously_new_record?, "topic was not previously new"
assert_not cloned.previously_persisted?, "topic was not previously persisted"
end
def test_stays_frozen
topic = Topic.first
topic.freeze
cloned = topic.clone
assert cloned.persisted?, "topic persisted"
assert_not cloned.new_record?, "topic is not new"
assert cloned.frozen?, "topic should be frozen"
assert_raise(FrozenError) { cloned.author_name = "Aaron" }
end
def test_shallow
topic = Topic.first
cloned = topic.clone
topic.author_name = "Aaron"
assert_equal "Aaron", cloned.author_name
end
def test_freezing_a_cloned_model_does_not_freeze_clone
cloned = Topic.new
clone = cloned.clone
cloned.freeze
assert_not_predicate clone, :frozen?
assert_raise(FrozenError) { cloned.author_name = "Aaron" }
end
end
end