Methods
T
Instance Public methods
test_dup()
# File activerecord/test/cases/dup_test.rb, line 9
def test_dup
  assert !Topic.new.freeze.dup.frozen?
end
test_dup_after_initialize_callbacks()
# File activerecord/test/cases/dup_test.rb, line 111
def test_dup_after_initialize_callbacks
  topic = Topic.new
  assert Topic.after_initialize_called
  Topic.after_initialize_called = false
  topic.dup
  assert Topic.after_initialize_called
end
test_dup_attributes_are_independent()
# File activerecord/test/cases/dup_test.rb, line 82
def test_dup_attributes_are_independent
  topic = Topic.first
  duped = topic.dup

  duped.author_name = 'meow'
  topic.author_name = 'Aaron'

  assert_equal 'Aaron', topic.author_name
  assert_equal 'meow', duped.author_name
end
test_dup_has_no_id()
# File activerecord/test/cases/dup_test.rb, line 44
def test_dup_has_no_id
  topic = Topic.first
  duped = topic.dup
  assert_nil duped.id
end
test_dup_not_destroyed()
# File activerecord/test/cases/dup_test.rb, line 36
def test_dup_not_destroyed
  topic = Topic.first
  topic.destroy

  duped = topic.dup
  assert_not duped.destroyed?
end
test_dup_not_persisted()
# File activerecord/test/cases/dup_test.rb, line 28
def test_dup_not_persisted
  topic = Topic.first
  duped = topic.dup

  assert !duped.persisted?, 'topic not persisted'
  assert duped.new_record?, 'topic is new'
end
test_dup_timestamps_are_cleared()
# File activerecord/test/cases/dup_test.rb, line 93
def test_dup_timestamps_are_cleared
  topic = Topic.first
  assert_not_nil topic.updated_at
  assert_not_nil topic.created_at

  # temporary change to the topic object
  topic.updated_at -= 3.days

  #dup should not preserve the timestamps if present
  new_topic = topic.dup
  assert_nil new_topic.updated_at
  assert_nil new_topic.created_at

  new_topic.save
  assert_not_nil new_topic.updated_at
  assert_not_nil new_topic.created_at
end
test_dup_topics_are_independent()
# File activerecord/test/cases/dup_test.rb, line 72
def test_dup_topics_are_independent
  topic = Topic.first
  topic.author_name = 'Aaron'
  duped = topic.dup

  duped.author_name = 'meow'

  assert_not_equal topic.changes, duped.changes
end
test_dup_validity_is_independent()
# File activerecord/test/cases/dup_test.rb, line 119
def test_dup_validity_is_independent
  repair_validations(Topic) do
    Topic.validates_presence_of :title
    topic = Topic.new("title" => "Literature")
    topic.valid?

    duped = topic.dup
    duped.title = nil
    assert duped.invalid?

    topic.title = nil
    duped.title = 'Mathematics'
    assert topic.invalid?
    assert duped.valid?
  end
end
test_dup_with_changes()
# File activerecord/test/cases/dup_test.rb, line 57
def test_dup_with_changes
  dbtopic = Topic.first
  topic = Topic.new

  topic.attributes = dbtopic.attributes.except("id")

  #duped has no timestamp values
  duped = dbtopic.dup

  #clear topic timestamp values
  topic.send(:clear_timestamp_attributes)

  assert_equal topic.changes, duped.changes
end
test_dup_with_default_scope()
# File activerecord/test/cases/dup_test.rb, line 136
def test_dup_with_default_scope
  prev_default_scopes = Topic.default_scopes
  Topic.default_scopes = [proc { Topic.where(:approved => true) }]
  topic = Topic.new(:approved => false)
  assert !topic.dup.approved?, "should not be overridden by default scopes"
ensure
  Topic.default_scopes = prev_default_scopes
end
test_dup_with_modified_attributes()
# File activerecord/test/cases/dup_test.rb, line 50
def test_dup_with_modified_attributes
  topic = Topic.first
  topic.author_name = 'Aaron'
  duped = topic.dup
  assert_equal 'Aaron', duped.author_name
end
test_dup_without_primary_key()
# File activerecord/test/cases/dup_test.rb, line 145
def test_dup_without_primary_key
  klass = Class.new(ActiveRecord::Base) do
    self.table_name = 'parrots_pirates'
  end

  record = klass.create!

  assert_nothing_raised do
    record.dup
  end
end
test_is_readonly()
# File activerecord/test/cases/dup_test.rb, line 20
def test_is_readonly
  topic = Topic.first
  topic.readonly!

  duped = topic.dup
  assert duped.readonly?, 'should be readonly'
end
test_not_readonly()
# File activerecord/test/cases/dup_test.rb, line 13
def test_not_readonly
  topic = Topic.first

  duped = topic.dup
  assert !duped.readonly?, 'should not be readonly'
end