momomoto 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/lib/momomoto/base.rb CHANGED
@@ -147,7 +147,7 @@ module Momomoto
147
147
  end
148
148
 
149
149
  # defines row setter and getter in the module StandardMethods which
150
- # is later included in the Row class
150
+ # is later included in the Row class
151
151
  def define_row_accessors( method_module, table, columns = self.columns )
152
152
  columns.each_with_index do | ( field_name, data_type ), index |
153
153
  method_module.instance_eval do
@@ -34,6 +34,10 @@ module Momomoto
34
34
  case value
35
35
  when nil then
36
36
  raise Error, "nil values not allowed for #{field_name}"
37
+ when :NULL then
38
+ field_name.to_s + ' IS NULL'
39
+ when :NOT_NULL then
40
+ field_name.to_s + ' IS NOT NULL'
37
41
  when Array then
38
42
  raise Error, "empty array conditions are not allowed for #{field_name}" if value.empty?
39
43
  raise Error, "nil values not allowed in compile_rule for #{field_name}" if value.member?( nil )
data/test/test_base.rb CHANGED
@@ -15,8 +15,11 @@ class TestBase < Test::Unit::TestCase
15
15
  assert_equal( "AND", t2.logical_operator )
16
16
  t1.logical_operator = "or"
17
17
  assert_equal( "OR", t1.logical_operator )
18
- assert_equal( " WHERE first_name = E'a' OR person_id = '1'" , t1.instance_eval do compile_where(:person_id=>'1',:first_name=>'a') end )
19
- assert_equal( " WHERE first_name = E'a' AND person_id = '1'" , t2.instance_eval do compile_where(:person_id=>'1',:first_name=>'a') end )
18
+ assert( t1.instance_eval do compile_where(:person_id=>'1',:first_name=>'a') end.match( / OR / ) )
19
+ assert( t2.instance_eval do compile_where(:person_id=>'1',:first_name=>'a') end.match( / AND / ) )
20
+ assert_raise( Momomoto::Error ) do
21
+ t1.logical_operator = "chunky"
22
+ end
20
23
  end
21
24
 
22
25
  def test_compile_where
@@ -39,6 +39,14 @@ class TestDatatype < Test::Unit::TestCase
39
39
  end
40
40
  end
41
41
 
42
+ def test_compile_rule_null
43
+ DATATYPES.each do | type |
44
+ t = type.new
45
+ assert_equal( "field_name IS NULL", t.compile_rule( :field_name, :NULL) )
46
+ assert_equal( "field_name IS NOT NULL", t.compile_rule( :field_name, :NOT_NULL) )
47
+ end
48
+ end
49
+
42
50
  def test_operator_sign
43
51
  DATATYPES.each do | type |
44
52
  assert_equal( '<=', type.operator_sign( :le ) )
data/test/test_row.rb CHANGED
@@ -43,6 +43,19 @@ class TestRow < Test::Unit::TestCase
43
43
  assert_equal( a.person_id, a['person_id'])
44
44
  end
45
45
 
46
+ def test_equal
47
+ a = Person.new
48
+ b = Person.new
49
+ assert( a == b )
50
+ assert( b == a )
51
+ a.person_id = 23
52
+ assert( a != b )
53
+ assert( b != a )
54
+ b.person_id = 23
55
+ assert( a == b )
56
+ assert( b == a )
57
+ end
58
+
46
59
  def test_primary_key_setting
47
60
  a = Person.select_single( nil, {:limit=>1})
48
61
  assert_raise( Momomoto::Error ) do
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: momomoto
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.4
7
- date: 2007-09-01 00:00:00 +02:00
6
+ version: 0.1.5
7
+ date: 2007-09-15 00:00:00 +02:00
8
8
  summary: Momomoto is an object relational mapper for PostgreSQL.
9
9
  require_paths:
10
10
  - lib
@@ -35,59 +35,59 @@ files:
35
35
  - lib/momomoto/row.rb
36
36
  - lib/momomoto/table.rb
37
37
  - lib/momomoto/procedure.rb
38
- - lib/momomoto/base.rb
39
38
  - lib/momomoto/datatype.rb
39
+ - lib/momomoto/base.rb
40
40
  - lib/momomoto/order.rb
41
41
  - lib/momomoto/information_schema/table_constraints.rb
42
42
  - lib/momomoto/information_schema/columns.rb
43
- - lib/momomoto/information_schema/fetch_procedure_columns.rb
44
43
  - lib/momomoto/information_schema/fetch_procedure_parameters.rb
44
+ - lib/momomoto/information_schema/fetch_procedure_columns.rb
45
45
  - lib/momomoto/information_schema/routines.rb
46
46
  - lib/momomoto/information_schema/key_column_usage.rb
47
- - lib/momomoto/datatype/date.rb
48
47
  - lib/momomoto/datatype/boolean.rb
48
+ - lib/momomoto/datatype/date.rb
49
49
  - lib/momomoto/datatype/smallint.rb
50
50
  - lib/momomoto/datatype/real.rb
51
51
  - lib/momomoto/datatype/text.rb
52
52
  - lib/momomoto/datatype/interval.rb
53
- - lib/momomoto/datatype/time_without_time_zone.rb
54
- - lib/momomoto/datatype/character_varying.rb
55
53
  - lib/momomoto/datatype/character.rb
56
54
  - lib/momomoto/datatype/integer.rb
55
+ - lib/momomoto/datatype/time_without_time_zone.rb
56
+ - lib/momomoto/datatype/character_varying.rb
57
57
  - lib/momomoto/datatype/inet.rb
58
- - lib/momomoto/datatype/timestamp_without_time_zone.rb
59
- - lib/momomoto/datatype/time_with_time_zone.rb
60
58
  - lib/momomoto/datatype/numeric.rb
61
59
  - lib/momomoto/datatype/bytea.rb
62
- - lib/momomoto/datatype/timestamp_with_time_zone.rb
60
+ - lib/momomoto/datatype/timestamp_without_time_zone.rb
61
+ - lib/momomoto/datatype/time_with_time_zone.rb
63
62
  - lib/momomoto/datatype/base.rb
64
63
  - lib/momomoto/datatype/bigint.rb
64
+ - lib/momomoto/datatype/timestamp_with_time_zone.rb
65
+ - sql/procedures.sql
65
66
  - sql/types.sql
66
67
  - sql/install.sql
67
- - sql/procedures.sql
68
+ - test/test_procedure.rb
68
69
  - test/test_boolean.rb
69
70
  - test/test_real.rb
70
71
  - test/test_smallint.rb
71
72
  - test/test_interval.rb
72
73
  - test/test_text.rb
73
74
  - test/test_table.rb
74
- - test/test_procedure.rb
75
+ - test/test_numeric.rb
76
+ - test/test_inet.rb
75
77
  - test/test_time_without_time_zone.rb
76
78
  - test/test_character_varying.rb
77
79
  - test/test_character.rb
78
80
  - test/test_integer.rb
79
- - test/test_inet.rb
81
+ - test/test_datatype.rb
82
+ - test/test_row.rb
80
83
  - test/test_timestamp_without_time_zone.rb
81
- - test/test_numeric.rb
82
84
  - test/test_time_with_time_zone.rb
83
85
  - test/test_database.rb
84
86
  - test/test_bytea.rb
85
87
  - test/test_information_schema.rb
86
- - test/test_row.rb
87
- - test/test_timestamp_with_time_zone.rb
88
88
  - test/test_base.rb
89
- - test/test_datatype.rb
90
89
  - test/test_bigint.rb
90
+ - test/test_timestamp_with_time_zone.rb
91
91
  - test/test_date.rb
92
92
  - test/test_functions.sql
93
93
  - test/test.sql