Sha256: dd651e48a1d19650919a49a31d35d739875fd1d8130f09d3478c12d858b9dbb8

Contents?: true

Size: 1.73 KB

Versions: 1

Compression:

Stored size: 1.73 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.

$og = Og.setup($og_config)

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

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

$og.manage_classes

class TestReverse < Test::Unit::TestCase # :nodoc: all
  include Og
  
  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_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

1 entries across 1 versions & 1 rubygems

Version Path
og-0.27.0 test/og/tc_reverse.rb