Sha256: 8491c4482128c7a2d5aa559fa0225075e45f49f071bce6b03503c132ce6d5b4b

Contents?: true

Size: 1.77 KB

Versions: 2

Compression:

Stored size: 1.77 KB

Contents

require File.join(File.dirname(__FILE__), 'CONFIG.rb')

require 'rubygems'
require 'facets'

require 'test/unit'
require 'og'
require 'glue/timestamped'

class TC_JoinsMany < Test::Unit::TestCase # :nodoc: all
  include Og

  class Item
    property :name, String

    has_many Tag
  end

  class Tag
    property :name, String
    
    belongs_to Item
  end
  
  $og1.manage_classes(Item, Tag)
  
  def setup
    @conn = $og1.conn
    
    @name = 'George'
  end
  
  def teardown
    Item.delete_all
    Tag.delete_all
  end
  
  def test_assign_with_name
    i = Item.create_with(:name => @name)
    
    assert_equal @name, i.name
  end
  
  def test_concat
    tag = Tag.create_with(:name => 'Nitro')
    i = Item.create_with(:name => @name)
    
    i.tags << tag
    
    assert_equal 1, i.tags.size
    assert_equal tag, i.tags.first
  end
  
  def test_add
    tag = Tag.create_with(:name => 'Facets')
    i = Item.create_with(:name => @name)
    
    i.add_tag tag
    
    assert_equal 1, i.tags.size
    assert_equal tag, i.tags.first
  end
  
  def test_assign_with_tag
    tag = Tag.create_with(:name => 'Nitro')
    
    assert_not_nil tag.saved?
    
    i = Item.create_with(:name => @name, :tags => tag)
    
    assert_not_nil i.saved?
    assert_equal tag, i.tags.first
  end
  
  def test_assign_with_tags
    tags = [Tag.create_with(:name => 'Glue'), Tag.create_with(:name => 'Og')]
    i = Item.create_with(:name => @name, :tags => tags)
    
    assert_equal tags, i.tags.to_ary
  end
  
  def test_assign_with_collection
    coll = HasManyCollection.new(
      Item, 
      Tag,
      :add_tag,
      :remove_tag,
      :find_tags,
      :count_tags
    )
    i = Item.create_with(:name => @name, :tags => coll)
    
    assert_equal coll, i.instance_variable_get("@tags")
  end
  
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
og-0.41.0 test/og/tc_has_many.rb
og-0.40.0 test/og/tc_has_many.rb