og 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,107 @@
1
+ #! /usr/bin/env ruby
2
+ # vim:sw=2:ai
3
+
4
+ # code:
5
+ # * Thomas Quas <tquas@yahoo.com>
6
+ # * George Moschovitis <gm@navel.gr>
7
+ #
8
+ # $Id$
9
+
10
+ $LOAD_PATH.unshift 'lib'
11
+
12
+ require "test/unit"
13
+ require 'glue/logger'
14
+ require 'og/mock'
15
+
16
+ $DBG = false
17
+ $log = Logger.new( STDERR ) unless $log
18
+
19
+ class Dummy
20
+ prop_accessor :date
21
+ attr_reader :call_stack
22
+
23
+ def og_pre_insert( oid )
24
+ @call_stack << "pre_insert"
25
+ end
26
+
27
+ def og_post_insert( oid )
28
+ @call_stack << "post_insert"
29
+ end
30
+
31
+ def og_pre_update( oid )
32
+ @call_stack << "pre_update"
33
+ end
34
+
35
+ def og_post_update( oid )
36
+ @call_stack << "post_update"
37
+ end
38
+
39
+ def self.og_pre_delete( conn, oid )
40
+ raise "undeletable"
41
+ end
42
+
43
+ def initialize
44
+ @call_stack = []
45
+ end
46
+ end
47
+
48
+ # Tests the Og managed objects lifecycle.
49
+ class TC_CallbackTest < ::Test::Unit::TestCase
50
+ def test_insert
51
+ obj = Dummy.new
52
+ obj.save!
53
+
54
+ assert( obj.call_stack.shift == "pre_insert" )
55
+ assert( obj.call_stack.shift == "post_insert" )
56
+ assert( obj.call_stack.empty? )
57
+ end
58
+
59
+ def test_update
60
+ obj = Dummy.new
61
+ obj.save!
62
+ obj.call_stack.shift
63
+ obj.call_stack.shift
64
+
65
+ obj.date = Time.now
66
+ obj.save
67
+ assert( obj.call_stack.shift == "pre_update" )
68
+ assert( obj.call_stack.shift == "post_update" )
69
+ assert( obj.call_stack.empty? )
70
+ end
71
+
72
+ def test_delete
73
+ obj = Dummy.new
74
+ obj.save!
75
+ obj.call_stack.shift
76
+ obj.call_stack.shift
77
+
78
+ assert_raise( RuntimeError, "undeletable" ) { obj.delete! }
79
+ end
80
+
81
+ def setup
82
+ psql = true
83
+
84
+ if psql
85
+ config = {
86
+ :backend => "psql",
87
+ :address => "localhost",
88
+ :database => "test",
89
+ :user => "postgres",
90
+ :password => "navelrulez",
91
+ :connection_count => 1
92
+ }
93
+ else
94
+ config = {
95
+ :backend => "mysql",
96
+ :address => "localhost",
97
+ :database => "test",
98
+ :user => "root",
99
+ :password => "navelrulez",
100
+ :connection_count => 1
101
+ }
102
+ end
103
+ Og::Database.drop_db!( config )
104
+ $og = Og::Database.new( config )
105
+ $og.get_connection()
106
+ end
107
+ end
data/test/tc_og.rb CHANGED
@@ -46,7 +46,7 @@ class Article
46
46
  end
47
47
 
48
48
  class Comment
49
- belongs_to :article, Test::Article
49
+ belongs_to :article, Test::Article, :extra_sql => 'NOT NULL'
50
50
  belongs_to :author, Test::User
51
51
  prop_accessor :body, String
52
52
  prop_accessor :create_time, Time
@@ -65,6 +65,14 @@ class Comment
65
65
  end
66
66
  end
67
67
 
68
+ module MyMixin
69
+ prop_accessor :title, String
70
+ end
71
+
72
+ class MyClass
73
+ include Test::MyMixin
74
+ end
75
+
68
76
  class TC_N_OG < Test::Unit::TestCase
69
77
 
70
78
  def setup
@@ -148,16 +156,17 @@ class TC_N_OG < Test::Unit::TestCase
148
156
 
149
157
  article = Article.new("Title", "Body")
150
158
  article.save!
151
-
159
+
152
160
  comment = Comment.new("This is a comment")
153
161
  comment.article = article
154
162
  comment.author = User["gmosx"]
155
163
  comment.save!
156
164
 
165
+
166
+ # test automatically generated add_commnet
157
167
  comment = Comment.new("This is another comment")
158
- comment.article = article.oid
159
168
  comment.author = User["gmosx"]
160
- comment.save!
169
+ article.add_comment(comment)
161
170
 
162
171
  assert_equal(article.oid, comment.article_oid)
163
172
 
@@ -172,6 +181,24 @@ class TC_N_OG < Test::Unit::TestCase
172
181
  assert_equal(nil, Comment.all)
173
182
 
174
183
  comment.delete!
184
+
185
+ # test extra_sql
186
+
187
+ for p in Comment.__props
188
+ if :article_oid == p.symbol
189
+ assert_equal('NOT NULL', p.meta[:extra_sql])
190
+ break
191
+ end
192
+ end
193
+
194
+ assert($og.managed_classes.include?(Test::Article))
195
+
196
+ # bug: indirectly managed (includes managed Module)
197
+ assert($og.managed_classes.include?(Test::MyClass))
198
+
199
+ # test create
200
+ article = Article.create("title", "body")
201
+ assert_equal(3, article.oid)
175
202
  end
176
203
 
177
204
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.1
2
+ rubygems_version: 0.8.3
3
3
  specification_version: 1
4
4
  name: og
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.6.0
7
- date: 2004-12-10
6
+ version: 0.7.0
7
+ date: 2004-12-27
8
8
  summary: Og (ObjectGraph)
9
9
  require_paths:
10
10
  - lib
11
- author: George Moschovitis
12
11
  email: gm@navel.gr
13
12
  homepage: http://www.navel.gr/og
14
13
  rubyforge_project: og-rml
@@ -25,35 +24,44 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
25
24
  version: 1.8.1
26
25
  version:
27
26
  platform: ruby
27
+ authors:
28
+ - George Moschovitis
28
29
  files:
29
30
  - README.og
30
31
  - RELEASES.og
31
32
  - LICENSE
32
33
  - AUTHORS
34
+ - Rakefile
35
+ - ChangeLog.1
36
+ - ChangeLog
33
37
  - examples/og/run.rb
38
+ - examples/og/mock_example.rb
34
39
  - examples/og/README
35
40
  - lib/glue.rb
41
+ - lib/glue/mixins.rb
42
+ - lib/glue/logger.rb
36
43
  - lib/glue/pool.rb
37
- - lib/glue/time.rb
38
- - lib/glue/macro.rb
39
44
  - lib/glue/inflector.rb
40
- - lib/glue/array.rb
45
+ - lib/glue/hash.rb
41
46
  - lib/glue/number.rb
42
- - lib/glue/cache.rb
43
- - lib/glue/mixins.rb
47
+ - lib/glue/time.rb
44
48
  - lib/glue/property.rb
49
+ - lib/glue/property.rb.old
50
+ - lib/glue/macro.rb
51
+ - lib/glue/cache.rb
45
52
  - lib/glue/string.rb
46
- - lib/glue/hash.rb
47
- - lib/glue/logger.rb
53
+ - lib/glue/array.rb
48
54
  - lib/og/backends
55
+ - lib/og/version.rb
49
56
  - lib/og/connection.rb
50
- - lib/og/backend.rb
57
+ - lib/og/mock.rb
51
58
  - lib/og/meta.rb
52
- - lib/og/version.rb
53
- - lib/og/backends/psql.rb
59
+ - lib/og/backend.rb
54
60
  - lib/og/backends/mysql.rb
61
+ - lib/og/backends/psql.rb
55
62
  - lib/og.rb
56
63
  - test/tc_og.rb
64
+ - test/og/tc_lifecycle.rb
57
65
  test_files: []
58
66
  rdoc_options:
59
67
  - "--main"