Sha256: 01fbe9448904b5f2af1a1ee0c9afed55df3ce38a40a5e8b61ebe0136f5b1ff72

Contents?: true

Size: 1.8 KB

Versions: 2

Compression:

Stored size: 1.8 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

    joins_many Tag

    def to_s
      @name
    end
  end

  class Tag
    property :name, String

    def to_s
      @name
    end
  end
  
  def setup
    $og1.manage_classes(Item, Tag)
    @conn = $og1.conn
  end
  
  def test_all
    (1..3).each do |n|
      t = Tag.new
      t.name = "Tag_#{n}"
      t.save
    end
    
    assert_equal 3, Tag.all.size
    
    # see if i can get a tag back from th db
    t = Tag.find_by_name("Tag_1")
    
    assert_not_nil t

    i1 = Item.new
    i1.name = "Item_1"
    i1.save
    i1.add_tag(Tag.find_by_name("Tag_1"))
    i1.add_tag(Tag.find_by_name("Tag_2"))
    i1.save

    i2 = Item.new
    i2.name = "Item_2"
    i2.save
    i2.add_tag(Tag.find_by_name("Tag_2"))
    i2.add_tag(Tag.find_by_name("Tag_3"))
    i2.save
    
    # count SQL, note that the join table will change when test class changes
    
    sql = 'SELECT count(*) FROM ogj_tc_joinsmany_item_tc_joinsmany_tag'
    
    # after inserting 2 tags into the each of the 2 items, 4 relations
    
    assert_equal 4, @conn.query(sql).first_value.to_i
    
    i1.delete(true)
    i2.delete(true)
    
    # after deleting the 2 items, the relations are invalid
    
    assert_equal 0, @conn.query(sql).first_value.to_i

    # the following code is new and should not trigger an exception due to
    # existing items in the mapping table
    
    assert_nothing_raised do
      i3 = Item.new
      i3.name = "Item_3"
      i3.save
      i3.add_tag(Tag.find_by_name("Tag_1"))
      i3.add_tag(Tag.find_by_name("Tag_2"))
      i3.save
    end
    
  end
  
end

Version data entries

2 entries across 2 versions & 1 rubygems

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