Sha256: 96d6c333f26068540adf17d980b0123293af7b9ece0966ae0861605c5c5dc4e7

Contents?: true

Size: 1.78 KB

Versions: 4

Compression:

Stored size: 1.78 KB

Contents

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

require 'rubygems'
require 'facets'
require 'test/unit'
require 'og'

# 'testreverse' is a legacy database schema. Og's advanced
# reverse engineering features allows us to map any schema
# to our objects.


# create a 'legacy' schema.
    
$og2.store.exec "create table my_users (thename VARCHAR(32) PRIMARY KEY, password TEXT, age3 INTEGER);"
$og2.store.exec "create table my_comments (cid MEDIUMINT NOT NULL AUTO_INCREMENT, body TEXT, user VARCHAR(32), PRIMARY KEY(cid));"

class TestReverse < Test::Unit::TestCase # :nodoc: all
  include Og
  
  class User
    property :name, String, :field => :thename, :uniq => true
    property :password, String
    property :age, Fixnum, :field => :age3    
    has_many Comment, :foreign_field => :user
    set_table :my_users
    set_primary_key :name, String
    
    def initialize(name, password, age)
      @name, @password, @age = name, password, age
    end
  end

  class Comment
    property :cid, Fixnum
    property :body, String
    belongs_to User, :field => :user
    set_table :my_comments
    set_primary_key :cid
    
    def initialize(body)
      @body = body
    end
  end

  $og2.manage_classes(User, Comment)

  def test_all
    assert_equal 'my_users', User.table
    assert_equal 'my_comments', Comment.table
    
    User.new('gmosx', 'navel', 30).insert
    User.new('Helen', 'kontesa', 25).insert
    
    gmosx = User.find_by_name('gmosx')
    assert_equal 'gmosx', gmosx.name
    
    helen = User.find_all_by_age(25).first
    assert_equal 'Helen', helen.name
    
    c = Comment.new('hello')
    c.insert
    helen.comments << c
  
    assert_equal 1, helen.comments(:reload => true).size
    assert_equal 'hello', helen.comments[0].body
  end
end

# * George Moschovitis <gm@navel.gr>

Version data entries

4 entries across 4 versions & 1 rubygems

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