person_test.rb 823 Bytes
require File.dirname(__FILE__) + '/../test_helper'

class PersonTest < Test::Unit::TestCase
  fixtures :profiles, :users

  def test_can_have_user
    p = Person.new(:name => 'John', :identfier => 'john')
    p = profiles(:johndoe)
    assert_kind_of User, p.user
  end

  def test_may_have_no_user
    p = profiles(:john_and_joe)
    assert_nil p.user
    assert p.valid?
  end

  def test_only_one_profile_per_user
    p1 = profiles(:johndoe)
    assert_equal users(:johndoe), p1.user
    
    p2 = Person.new
    p2.user = users(:johndoe)
    assert !p2.valid?
    assert p2.errors.invalid?(:user_id)
  end

  def test_several_profiles_without_user
    p1 = profiles(:john_and_joe)
    assert p1.valid?
    assert_nil p1.user

    p2 = Person.new
    assert !p2.valid?
    assert !p2.errors.invalid?(:user_id)
  end
end