Sha256: 5d4a1b102e600b6ab9806e288f7ba37656eae22e021aa6eee231c1939c5fcc85

Contents?: true

Size: 1.14 KB

Versions: 5

Compression:

Stored size: 1.14 KB

Contents

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

require 'rubygems'
require 'facets'

require 'test/unit'
require 'og'

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

  # This class is a polymorphic parent. Ie' it acts as template
  # to generate customized versions of this class.
  
  class Comment
    property :body, String
    belongs_to :parent, Object # polymorphic marker !
    
    def initialize(body)
      @body = body
    end
  end

  class Article
    property :title, String
    has_many Comment

    def initialize(title)
      @title = title
    end    
  end
  
  class User
    property :name, String
    has_many Comment

    def initialize(name)
      @name = name
    end    
  end

  $og1.manage_classes(Comment, Article, User)

  def test_all
    u = User.create('gmosx')
    
    u.comments << User::Comment.create('Hello')
    u.comments << User::Comment.create('World')

    assert_equal 2, u.comments.size
    
    a = Article.create('test')
    
    a.comments << Article::Comment.create('Hello2')
    a.comments << Article::Comment.create('World2')    
    
    assert_equal 2, a.comments.size
  end
  
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
og-0.28.0 test/og/tc_polymorphic.rb
og-0.29.0 test/og/tc_polymorphic.rb
og-0.30.0 test/og/tc_polymorphic.rb
og-0.31.0 test/og/tc_polymorphic.rb
og-0.40.0 test/og/tc_polymorphic.rb