marjoree 0.0.1
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.
- data/README +50 -0
- data/examples/contains_example.rb +23 -0
- data/examples/count_and_insert_example.rb +20 -0
- data/examples/select_example.rb +27 -0
- data/html/classes/ExpectedResultSet.html +220 -0
- data/html/classes/ExpectedResultSet.src/M000001.html +18 -0
- data/html/classes/ExpectedResultSet.src/M000002.html +18 -0
- data/html/classes/ExpectedResultSet.src/M000003.html +18 -0
- data/html/classes/ExpectedResultSet.src/M000004.html +18 -0
- data/html/classes/Marjoree.html +568 -0
- data/html/classes/Marjoree.src/M000022.html +19 -0
- data/html/classes/Marjoree.src/M000023.html +20 -0
- data/html/classes/Marjoree.src/M000024.html +22 -0
- data/html/classes/Marjoree.src/M000025.html +18 -0
- data/html/classes/Marjoree.src/M000026.html +20 -0
- data/html/classes/Marjoree.src/M000027.html +18 -0
- data/html/classes/Marjoree.src/M000028.html +18 -0
- data/html/classes/Marjoree.src/M000029.html +21 -0
- data/html/classes/Marjoree.src/M000030.html +20 -0
- data/html/classes/Marjoree.src/M000031.html +19 -0
- data/html/classes/Marjoree.src/M000032.html +18 -0
- data/html/classes/Marjoree.src/M000033.html +18 -0
- data/html/classes/Marjoree.src/M000034.html +19 -0
- data/html/classes/Marjoree.src/M000035.html +21 -0
- data/html/classes/Marjoree.src/M000036.html +26 -0
- data/html/classes/Marjoree.src/M000037.html +22 -0
- data/html/classes/Marjoree.src/M000038.html +23 -0
- data/html/classes/Marjoree.src/M000039.html +24 -0
- data/html/classes/Marjoree.src/M000040.html +18 -0
- data/html/classes/Marjoree.src/M000041.html +18 -0
- data/html/classes/Marjoree.src/M000042.html +25 -0
- data/html/classes/ODBC/Error.html +152 -0
- data/html/classes/ODBC/Error.src/M000020.html +21 -0
- data/html/classes/ODBC/Error.src/M000021.html +18 -0
- data/html/classes/ODBC/TimeStamp.html +182 -0
- data/html/classes/ODBC/TimeStamp.src/M000017.html +18 -0
- data/html/classes/ODBC/TimeStamp.src/M000018.html +22 -0
- data/html/classes/ODBC/TimeStamp.src/M000019.html +19 -0
- data/html/classes/ODBC.html +108 -0
- data/html/classes/ResultSetWrapper.html +345 -0
- data/html/classes/ResultSetWrapper.src/M000005.html +27 -0
- data/html/classes/ResultSetWrapper.src/M000006.html +24 -0
- data/html/classes/ResultSetWrapper.src/M000007.html +23 -0
- data/html/classes/ResultSetWrapper.src/M000008.html +18 -0
- data/html/classes/ResultSetWrapper.src/M000009.html +18 -0
- data/html/classes/ResultSetWrapper.src/M000010.html +18 -0
- data/html/classes/ResultSetWrapper.src/M000011.html +18 -0
- data/html/classes/ResultSetWrapper.src/M000012.html +20 -0
- data/html/classes/ResultSetWrapper.src/M000013.html +18 -0
- data/html/classes/ResultSetWrapper.src/M000014.html +22 -0
- data/html/classes/ResultSetWrapper.src/M000015.html +23 -0
- data/html/classes/ResultSetWrapper.src/M000016.html +27 -0
- data/html/created.rid +1 -0
- data/html/files/README.html +159 -0
- data/html/files/lib/expected_result_set_rb.html +116 -0
- data/html/files/lib/marjoree_rb.html +110 -0
- data/html/files/lib/odbc_overrides_rb.html +101 -0
- data/html/files/lib/result_set_wrapper_rb.html +101 -0
- data/html/fr_class_index.html +32 -0
- data/html/fr_file_index.html +31 -0
- data/html/fr_method_index.html +68 -0
- data/html/index.html +24 -0
- data/html/rdoc-style.css +208 -0
- data/lib/expected_result_set.rb +35 -0
- data/lib/marjoree.rb +344 -0
- data/lib/odbc_overrides.rb +33 -0
- data/lib/result_set_wrapper.rb +193 -0
- data/rakefile.rb +38 -0
- data/tests/all_tests.rb +15 -0
- data/tests/sprocs/test_error_sproc.sp +11 -0
- data/tests/sprocs/test_sproc.sp +5 -0
- data/tests/sprocs/test_sproc_with_mixed_params.sp +15 -0
- data/tests/sprocs/test_sproc_with_output_params.sp +10 -0
- data/tests/sprocs/test_sproc_with_params.sp +9 -0
- data/tests/sprocs/test_sproc_with_select_and_ops.sp +12 -0
- data/tests/test_contains.rb +27 -0
- data/tests/test_delete.rb +47 -0
- data/tests/test_expected_result_set.rb +40 -0
- data/tests/test_insert.rb +47 -0
- data/tests/test_marjoree.rb +91 -0
- data/tests/test_num_rows.rb +32 -0
- data/tests/test_result_set_wrapper.rb +162 -0
- data/tests/test_select.rb +30 -0
- data/tests/test_sproc.rb +99 -0
- data/tests/test_time_stamp.rb +52 -0
- data/tests/test_truncate.rb +31 -0
- data/tests/test_update.rb +56 -0
- metadata +137 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'odbc'
|
|
3
|
+
require 'result_set_wrapper'
|
|
4
|
+
|
|
5
|
+
class TestResultSetWrapper < Test::Unit::TestCase
|
|
6
|
+
include Marjoree
|
|
7
|
+
|
|
8
|
+
class StubStatement
|
|
9
|
+
def initialize( result_set_rows )
|
|
10
|
+
@result_set_rows = result_set_rows
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def each_hash
|
|
14
|
+
@result_set_rows.each { |row| yield row }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def columns
|
|
18
|
+
return {"first"=>"val", "second"=>"val", "third"=>"val" }
|
|
19
|
+
#return ["first", "second", "third"]
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def setup
|
|
24
|
+
$db.do( "CREATE TABLE TEST_TABLE( id int NOT NULL, value int NOT NULL )" )
|
|
25
|
+
$db.do( "INSERT INTO TEST_TABLE ( id, value ) VALUES( 0, 10 )" )
|
|
26
|
+
$db.do( "INSERT INTO TEST_TABLE ( id, value ) VALUES( 1, 11 )" )
|
|
27
|
+
|
|
28
|
+
statement_rows = [{"id"=>1},{"id"=>2},{"id"=>3},{"id"=>4},{"id"=>5},{"id"=>6}]
|
|
29
|
+
@statement = StubStatement.new( statement_rows )
|
|
30
|
+
@result_set = ResultSetWrapper.new @statement
|
|
31
|
+
load_sproc 'test_sproc.sp'
|
|
32
|
+
load_sproc 'test_sproc_with_output_params.sp'
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def teardown
|
|
36
|
+
$db.do( "TRUNCATE TABLE TEST_TABLE" )
|
|
37
|
+
$db.do( "DROP TABLE TEST_TABLE" )
|
|
38
|
+
$db.do( "DROP PROCEDURE test_sproc")
|
|
39
|
+
$db.do( "DROP PROCEDURE test_sproc_with_output_params")
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_contains_where_expected_has_more_than_one_item
|
|
43
|
+
result_set = run_sproc 'test_sproc'
|
|
44
|
+
assert( result_set.contains?( { :id => 0, :value => 10 } ) )
|
|
45
|
+
assert( result_set.contains?( { :id => 1, :value => 11 } ) )
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_error_thrown_when_output_param_does_not_exist
|
|
49
|
+
result_set = run_sproc 'test_sproc'
|
|
50
|
+
|
|
51
|
+
begin
|
|
52
|
+
result_set.non_existant_sproc_output_param
|
|
53
|
+
fail
|
|
54
|
+
rescue NoMethodError
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_contains_sunny_case
|
|
60
|
+
expected_row = {:id => 5}
|
|
61
|
+
assert( @result_set.contains?( expected_row ) )
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def test_columns
|
|
65
|
+
assert_equal( @statement.columns, @result_set.columns )
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def test_does_not_contain_bad_value
|
|
69
|
+
actual_row = [{"id" => 1}]
|
|
70
|
+
unexpected_row = {"id" => 10}
|
|
71
|
+
assert( !@result_set.contains?( actual_row, unexpected_row ) )
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_does_not_contain_bad_column_name
|
|
75
|
+
actual_result = [{:id => 1}]
|
|
76
|
+
unexpected_row = {:rubbish => 1}
|
|
77
|
+
|
|
78
|
+
assert( !@result_set.contains?( actual_result, unexpected_row ) )
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def test_does_not_contain_bad_value_type
|
|
82
|
+
actual_result = [{:id => 1}]
|
|
83
|
+
unexpected_row = {"id" => '1'}
|
|
84
|
+
|
|
85
|
+
assert( !@result_set.contains?( actual_result, unexpected_row ) )
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def test_sunny_case_with_larger_map
|
|
89
|
+
result_set_rows = [{"id" => 1, "value" => 'Hello'}]
|
|
90
|
+
expected_row = {:id => 1, :value => 'Hello' }
|
|
91
|
+
@result_set = ResultSetWrapper.new( StubStatement.new( result_set_rows ) )
|
|
92
|
+
|
|
93
|
+
assert( @result_set.contains?( expected_row ) )
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def test_sunny_case_with_subset_of_larger_map
|
|
97
|
+
result_set_rows = [{"id" => 1, "value" => 'Hello'}]
|
|
98
|
+
expected_row = {:id => 1 }
|
|
99
|
+
@result_set = ResultSetWrapper.new( StubStatement.new( result_set_rows ) )
|
|
100
|
+
|
|
101
|
+
assert( @result_set.contains?( expected_row ) )
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def test_invalid_case_with_larger_map
|
|
105
|
+
result_set_rows = [{"id" => 1, "value" => 'Hello'}]
|
|
106
|
+
unexpected_row = {"id" => 1, "value" => 'Monkey Hell' }
|
|
107
|
+
@result_set = ResultSetWrapper.new( StubStatement.new( result_set_rows ) )
|
|
108
|
+
|
|
109
|
+
assert( !@result_set.contains?( unexpected_row ) )
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def test_invalid_case_with_multiple_rows
|
|
113
|
+
expected_rows = [{:id => 1}, {:id => 2 }]
|
|
114
|
+
assert( @result_set.contains?( expected_rows ) )
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def test_with_valid_expected_result_set
|
|
118
|
+
expected = ExpectedResultSet.new
|
|
119
|
+
expected.columns = ["id"]
|
|
120
|
+
expected.rows << [1]
|
|
121
|
+
|
|
122
|
+
assert( @result_set.contains?({:id => 1}) )
|
|
123
|
+
assert_equal({"id" => 1}, expected.row_hash(0))
|
|
124
|
+
|
|
125
|
+
assert( @result_set.has?( expected ) )
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def test_with_valid_expected_result_set_2
|
|
129
|
+
expected = ExpectedResultSet.new
|
|
130
|
+
expected.columns = ["id"]
|
|
131
|
+
expected.rows << [1]
|
|
132
|
+
expected.rows << [3]
|
|
133
|
+
|
|
134
|
+
assert( @result_set.contains?({:id => 1}) )
|
|
135
|
+
assert_equal({"id" => 1}, expected.row_hash(0))
|
|
136
|
+
assert( @result_set.has?( expected ) )
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def test_to_s
|
|
140
|
+
result_set_rows = [{"first" => 1, "second" => 'first row', "third" => "first value"},
|
|
141
|
+
{"first" => 2, "second" => 'second row', "third" => "second value"}]
|
|
142
|
+
|
|
143
|
+
@result_set = ResultSetWrapper.new( StubStatement.new( result_set_rows ) )
|
|
144
|
+
|
|
145
|
+
expected = "| third | second | first |"
|
|
146
|
+
expected << "\n -------------- ------------ ------- "
|
|
147
|
+
expected << "\n| first value | first row | 1 |"
|
|
148
|
+
expected << "\n| second value | second row | 2 |"
|
|
149
|
+
|
|
150
|
+
assert_equal( expected, @result_set.to_s )
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
private
|
|
155
|
+
|
|
156
|
+
def load_sproc( sproc_name )
|
|
157
|
+
dir = File.dirname(__FILE__)
|
|
158
|
+
sproc_contents = IO.readlines( "#{dir}/sprocs/#{sproc_name}" ).join
|
|
159
|
+
$db.do sproc_contents
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
|
|
3
|
+
class TestSelect < Test::Unit::TestCase
|
|
4
|
+
include Marjoree
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
$db.do( "CREATE TABLE TEST_TABLE( id int NOT NULL, value int NOT NULL )" )
|
|
8
|
+
$db.do( "INSERT INTO TEST_TABLE ( id, value ) VALUES( 0, 10 )" )
|
|
9
|
+
$db.do( "INSERT INTO TEST_TABLE ( id, value ) VALUES( 1, 11 )" )
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_select
|
|
13
|
+
result_set = select( "TEST_TABLE" )
|
|
14
|
+
|
|
15
|
+
assert_equal( 2, result_set.count )
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_select_with_bad_table
|
|
19
|
+
begin
|
|
20
|
+
resultSet = select( "TABLE_NOT_INT_DB" )
|
|
21
|
+
fail
|
|
22
|
+
rescue ODBC::Error
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def teardown
|
|
27
|
+
$db.do( "TRUNCATE TABLE TEST_TABLE" )
|
|
28
|
+
$db.do( "DROP TABLE TEST_TABLE" )
|
|
29
|
+
end
|
|
30
|
+
end
|
data/tests/test_sproc.rb
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
|
|
3
|
+
class TestSproc < Test::Unit::TestCase
|
|
4
|
+
include Marjoree
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
$db.do( "CREATE TABLE TEST_TABLE( id int NOT NULL, value int NOT NULL )" )
|
|
8
|
+
$db.do( "INSERT INTO TEST_TABLE ( id, value ) VALUES( 0, 10 )" )
|
|
9
|
+
$db.do( "INSERT INTO TEST_TABLE ( id, value ) VALUES( 1, 11 )" )
|
|
10
|
+
load_sproc 'test_sproc.sp'
|
|
11
|
+
load_sproc 'test_sproc_with_params.sp'
|
|
12
|
+
load_sproc 'test_error_sproc.sp'
|
|
13
|
+
load_sproc 'test_sproc_with_output_params.sp'
|
|
14
|
+
load_sproc 'test_sproc_with_mixed_params.sp'
|
|
15
|
+
load_sproc 'test_sproc_with_select_and_ops.sp'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_result_set
|
|
19
|
+
expectedResultSet = ExpectedResultSet.new
|
|
20
|
+
expectedResultSet.columns = [:id, :value]
|
|
21
|
+
expectedResultSet.rows << [0, 10]
|
|
22
|
+
expectedResultSet.rows << [1, 11]
|
|
23
|
+
|
|
24
|
+
result_set = run_sproc( "test_sproc" )
|
|
25
|
+
assert( result_set.is_a?( ResultSetWrapper ) )
|
|
26
|
+
assert_results( expectedResultSet, result_set )
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_calling_sproc_with_params
|
|
30
|
+
expectedResultSet = ExpectedResultSet.new
|
|
31
|
+
expectedResultSet.columns = ["id", "value"]
|
|
32
|
+
expectedResultSet.rows << [0, 10]
|
|
33
|
+
|
|
34
|
+
assert_results( expectedResultSet, run_sproc( "test_sproc_with_params", :id => 0, :value => 10 ) )
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_getting_error_codes_from_result
|
|
38
|
+
begin
|
|
39
|
+
run_sproc 'test_error_sproc', {:error_code => 20000, :error_message => "Catstrophic Failure" }
|
|
40
|
+
rescue ODBC::Error
|
|
41
|
+
exception = $!
|
|
42
|
+
|
|
43
|
+
assert_equal( 20000, exception.error_code )
|
|
44
|
+
assert_equal( "Catstrophic Failure", exception.error_message )
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_using_new_assert_method_with_block
|
|
49
|
+
assert_error_thrown( 20202, 'my error' ) do
|
|
50
|
+
run_sproc 'test_error_sproc', {:error_code => 20202, :error_message => "my error" }
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_output_params_put_onto_result_object
|
|
55
|
+
sql = "DECLARE @number int \n"
|
|
56
|
+
sql << "DECLARE @text varchar(10) \n"
|
|
57
|
+
sql << "EXEC test_sproc_with_output_params @output_number = @number output, @output_text = @text output \n"
|
|
58
|
+
sql << "select @number \n"
|
|
59
|
+
sql << "select @text \n"
|
|
60
|
+
response = execute( sql )
|
|
61
|
+
results = ResultSetWrapper.new( response, ["@output_number", "@output_text" ] )
|
|
62
|
+
|
|
63
|
+
assert_equal( 15, results.output_number )
|
|
64
|
+
assert_equal( 'results', results.output_text )
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_run_sproc_applies_output_params_to_result_object
|
|
68
|
+
result_set = run_sproc 'test_sproc_with_output_params'
|
|
69
|
+
assert_equal( 15, result_set.output_number )
|
|
70
|
+
assert_equal( 'results', result_set.output_text )
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def test_output_params_put_onto_result_object_when_sproc_has_input_params
|
|
74
|
+
result_set = run_sproc( 'test_sproc_with_mixed_params', { :input_text => "INPUT", :input_first_number => 50, :input_second_number => 60} )
|
|
75
|
+
|
|
76
|
+
assert_equal( 15, result_set.output_number )
|
|
77
|
+
assert_equal( 'results', result_set.output_text )
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def teardown
|
|
82
|
+
$db.do( "TRUNCATE TABLE TEST_TABLE" )
|
|
83
|
+
$db.do( "DROP TABLE TEST_TABLE" )
|
|
84
|
+
$db.do( "DROP PROCEDURE test_sproc")
|
|
85
|
+
$db.do( "DROP PROCEDURE test_sproc_with_params")
|
|
86
|
+
$db.do( "DROP PROCEDURE test_error_sproc")
|
|
87
|
+
$db.do( "DROP PROCEDURE test_sproc_with_output_params")
|
|
88
|
+
$db.do( "DROP PROCEDURE test_sproc_with_mixed_params")
|
|
89
|
+
$db.do( "DROP PROCEDURE test_sproc_with_select_and_ops")
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
private
|
|
93
|
+
|
|
94
|
+
def load_sproc( sproc_name )
|
|
95
|
+
dir = File.dirname(__FILE__)
|
|
96
|
+
sproc_contents = IO.readlines( "#{dir}/sprocs/#{sproc_name}" ).join
|
|
97
|
+
$db.do sproc_contents
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
|
|
3
|
+
class TestTimeStamp < Test::Unit::TestCase
|
|
4
|
+
include Marjoree
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
@timestamp = '2006-09-22 11:31:35.923'
|
|
8
|
+
$db.do( "CREATE TABLE TEST_TABLE( time DATETIME NOT NULL )" )
|
|
9
|
+
$db.do( "INSERT INTO TEST_TABLE ( time ) VALUES( '#{@timestamp}' )" )
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_timestamp_correct
|
|
13
|
+
expected = ExpectedResultSet.new
|
|
14
|
+
expected.columns = [:time]
|
|
15
|
+
expected.rows << [ODBC::TimeStamp.new( @timestamp )]
|
|
16
|
+
|
|
17
|
+
result_set = select "TEST_TABLE"
|
|
18
|
+
assert_results( expected, result_set)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_timestamp_incorrect
|
|
22
|
+
expected = ExpectedResultSet.new
|
|
23
|
+
expected.columns = [:time]
|
|
24
|
+
expected.rows << [ODBC::TimeStamp.new( '2006-09-23' )]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
result_set = select "TEST_TABLE"
|
|
28
|
+
assert_not_equal_results( expected, result_set)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_timestamp_formatting
|
|
32
|
+
time_text = '2006-09-22 11:31:35'
|
|
33
|
+
testee = ODBC::TimeStamp.new( time_text )
|
|
34
|
+
assert_equal( time_text, testee.to_s )
|
|
35
|
+
|
|
36
|
+
time_text = '2006-09-22 11:31:35.923'
|
|
37
|
+
testee = ODBC::TimeStamp.new( time_text )
|
|
38
|
+
assert_equal( time_text, testee.to_s )
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_from_date
|
|
42
|
+
date = Time.parse '10/10/06'
|
|
43
|
+
|
|
44
|
+
testee = ODBC::TimeStamp.from_date(date)
|
|
45
|
+
|
|
46
|
+
assert_equal '2006-10-10 00:00:00', testee.to_s
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def teardown
|
|
50
|
+
$db.do( "DROP TABLE TEST_TABLE" )
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
|
|
3
|
+
class TestTruncateOnMarjoree < Test::Unit::TestCase
|
|
4
|
+
include Marjoree
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
$db.do( "CREATE TABLE TEST_TABLE( id int NOT NULL, value int NOT NULL )" )
|
|
8
|
+
$db.do( "INSERT INTO TEST_TABLE ( id, value ) VALUES( 0, 10 )" )
|
|
9
|
+
$db.do( "INSERT INTO TEST_TABLE ( id, value ) VALUES( 1, 11 )" )
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_truncate
|
|
13
|
+
assert( num_rows( "TEST_TABLE" ) > 0 )
|
|
14
|
+
|
|
15
|
+
truncate( "TEST_TABLE" )
|
|
16
|
+
assert_equal( 0, num_rows( "TEST_TABLE" ) )
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_truncate_with_bad_table
|
|
20
|
+
begin
|
|
21
|
+
truncate( "TABLE_NOT_IN_DB" )
|
|
22
|
+
fail
|
|
23
|
+
rescue ODBC::Error
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def teardown
|
|
28
|
+
$db.do( "TRUNCATE TABLE TEST_TABLE" )
|
|
29
|
+
$db.do( "DROP TABLE TEST_TABLE" )
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
|
|
3
|
+
class TestUpdateOnMarjoree < Test::Unit::TestCase
|
|
4
|
+
include Marjoree
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
$db.do( "CREATE TABLE TEST_TABLE( id int NOT NULL, value int NOT NULL )" )
|
|
8
|
+
$db.do( "INSERT INTO TEST_TABLE ( id, value ) VALUES( 0, 10 )" )
|
|
9
|
+
$db.do( "INSERT INTO TEST_TABLE ( id, value ) VALUES( 1, 11 )" )
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_update
|
|
13
|
+
assert( contains?( "TEST_TABLE", :id => 0, :value => 10 ) )
|
|
14
|
+
|
|
15
|
+
update( "TEST_TABLE", { :id => 0 }, :value => 20 )
|
|
16
|
+
assert( !contains?( "TEST_TABLE", :id => 0, :value => 10 ) )
|
|
17
|
+
assert( contains?( "TEST_TABLE", :id => 0, :value => 20 ) )
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_update_with_no_where_clause
|
|
21
|
+
assert( contains?( "TEST_TABLE", :id => 0, :value => 10 ) )
|
|
22
|
+
|
|
23
|
+
update( "TEST_TABLE", {}, :value => 20 )
|
|
24
|
+
assert( !contains?( "TEST_TABLE", :id => 0, :value => 10 ) )
|
|
25
|
+
assert( contains?( "TEST_TABLE", :id => 0, :value => 20 ) )
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_update_with_bad_table
|
|
29
|
+
begin
|
|
30
|
+
update( "TABLE_NOT_INT_DB", { :id => 0 }, :value => 20 )
|
|
31
|
+
fail
|
|
32
|
+
rescue ODBC::Error
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_update_with_bad_column_header
|
|
37
|
+
begin
|
|
38
|
+
update( "TEST_TABLE", { :jimmy => 0 }, :value => 20 )
|
|
39
|
+
fail
|
|
40
|
+
rescue ODBC::Error
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_update_with_column_value_type
|
|
45
|
+
begin
|
|
46
|
+
update( "TEST_TABLE", { :id => 'bad' }, :value => 20 )
|
|
47
|
+
fail
|
|
48
|
+
rescue ODBC::Error
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def teardown
|
|
53
|
+
$db.do( "TRUNCATE TABLE TEST_TABLE" )
|
|
54
|
+
$db.do( "DROP TABLE TEST_TABLE" )
|
|
55
|
+
end
|
|
56
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
rubygems_version: 0.8.10
|
|
3
|
+
specification_version: 1
|
|
4
|
+
name: marjoree
|
|
5
|
+
version: !ruby/object:Gem::Version
|
|
6
|
+
version: 0.0.1
|
|
7
|
+
date: 2006-11-14
|
|
8
|
+
summary: Marjoree is the Stored Procedure Testing Library
|
|
9
|
+
require_paths:
|
|
10
|
+
- lib
|
|
11
|
+
email: jiggypete@googlemail.com
|
|
12
|
+
homepage: http://www.jiggypete.com
|
|
13
|
+
rubyforge_project:
|
|
14
|
+
description:
|
|
15
|
+
autorequire:
|
|
16
|
+
default_executable:
|
|
17
|
+
bindir: bin
|
|
18
|
+
has_rdoc: true
|
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
|
20
|
+
requirements:
|
|
21
|
+
-
|
|
22
|
+
- ">"
|
|
23
|
+
- !ruby/object:Gem::Version
|
|
24
|
+
version: 0.0.0
|
|
25
|
+
version:
|
|
26
|
+
platform: ruby
|
|
27
|
+
authors:
|
|
28
|
+
- "Peter Aitken, Ian Davies, Gus MacCuish"
|
|
29
|
+
files:
|
|
30
|
+
- "./examples"
|
|
31
|
+
- "./html"
|
|
32
|
+
- "./lib"
|
|
33
|
+
- "./rakefile.rb"
|
|
34
|
+
- "./README"
|
|
35
|
+
- "./tests"
|
|
36
|
+
- "./examples/contains_example.rb"
|
|
37
|
+
- "./examples/count_and_insert_example.rb"
|
|
38
|
+
- "./examples/select_example.rb"
|
|
39
|
+
- "./html/classes"
|
|
40
|
+
- "./html/created.rid"
|
|
41
|
+
- "./html/files"
|
|
42
|
+
- "./html/fr_class_index.html"
|
|
43
|
+
- "./html/fr_file_index.html"
|
|
44
|
+
- "./html/fr_method_index.html"
|
|
45
|
+
- "./html/index.html"
|
|
46
|
+
- "./html/rdoc-style.css"
|
|
47
|
+
- "./html/classes/ExpectedResultSet.html"
|
|
48
|
+
- "./html/classes/ExpectedResultSet.src"
|
|
49
|
+
- "./html/classes/Marjoree.html"
|
|
50
|
+
- "./html/classes/Marjoree.src"
|
|
51
|
+
- "./html/classes/ODBC"
|
|
52
|
+
- "./html/classes/ODBC.html"
|
|
53
|
+
- "./html/classes/ResultSetWrapper.html"
|
|
54
|
+
- "./html/classes/ResultSetWrapper.src"
|
|
55
|
+
- "./html/classes/ExpectedResultSet.src/M000001.html"
|
|
56
|
+
- "./html/classes/ExpectedResultSet.src/M000002.html"
|
|
57
|
+
- "./html/classes/ExpectedResultSet.src/M000003.html"
|
|
58
|
+
- "./html/classes/ExpectedResultSet.src/M000004.html"
|
|
59
|
+
- "./html/classes/Marjoree.src/M000022.html"
|
|
60
|
+
- "./html/classes/Marjoree.src/M000023.html"
|
|
61
|
+
- "./html/classes/Marjoree.src/M000024.html"
|
|
62
|
+
- "./html/classes/Marjoree.src/M000025.html"
|
|
63
|
+
- "./html/classes/Marjoree.src/M000026.html"
|
|
64
|
+
- "./html/classes/Marjoree.src/M000027.html"
|
|
65
|
+
- "./html/classes/Marjoree.src/M000028.html"
|
|
66
|
+
- "./html/classes/Marjoree.src/M000029.html"
|
|
67
|
+
- "./html/classes/Marjoree.src/M000030.html"
|
|
68
|
+
- "./html/classes/Marjoree.src/M000031.html"
|
|
69
|
+
- "./html/classes/Marjoree.src/M000032.html"
|
|
70
|
+
- "./html/classes/Marjoree.src/M000033.html"
|
|
71
|
+
- "./html/classes/Marjoree.src/M000034.html"
|
|
72
|
+
- "./html/classes/Marjoree.src/M000035.html"
|
|
73
|
+
- "./html/classes/Marjoree.src/M000036.html"
|
|
74
|
+
- "./html/classes/Marjoree.src/M000037.html"
|
|
75
|
+
- "./html/classes/Marjoree.src/M000038.html"
|
|
76
|
+
- "./html/classes/Marjoree.src/M000039.html"
|
|
77
|
+
- "./html/classes/Marjoree.src/M000040.html"
|
|
78
|
+
- "./html/classes/Marjoree.src/M000041.html"
|
|
79
|
+
- "./html/classes/Marjoree.src/M000042.html"
|
|
80
|
+
- "./html/classes/ODBC/Error.html"
|
|
81
|
+
- "./html/classes/ODBC/Error.src"
|
|
82
|
+
- "./html/classes/ODBC/TimeStamp.html"
|
|
83
|
+
- "./html/classes/ODBC/TimeStamp.src"
|
|
84
|
+
- "./html/classes/ODBC/Error.src/M000020.html"
|
|
85
|
+
- "./html/classes/ODBC/Error.src/M000021.html"
|
|
86
|
+
- "./html/classes/ODBC/TimeStamp.src/M000017.html"
|
|
87
|
+
- "./html/classes/ODBC/TimeStamp.src/M000018.html"
|
|
88
|
+
- "./html/classes/ODBC/TimeStamp.src/M000019.html"
|
|
89
|
+
- "./html/classes/ResultSetWrapper.src/M000005.html"
|
|
90
|
+
- "./html/classes/ResultSetWrapper.src/M000006.html"
|
|
91
|
+
- "./html/classes/ResultSetWrapper.src/M000007.html"
|
|
92
|
+
- "./html/classes/ResultSetWrapper.src/M000008.html"
|
|
93
|
+
- "./html/classes/ResultSetWrapper.src/M000009.html"
|
|
94
|
+
- "./html/classes/ResultSetWrapper.src/M000010.html"
|
|
95
|
+
- "./html/classes/ResultSetWrapper.src/M000011.html"
|
|
96
|
+
- "./html/classes/ResultSetWrapper.src/M000012.html"
|
|
97
|
+
- "./html/classes/ResultSetWrapper.src/M000013.html"
|
|
98
|
+
- "./html/classes/ResultSetWrapper.src/M000014.html"
|
|
99
|
+
- "./html/classes/ResultSetWrapper.src/M000015.html"
|
|
100
|
+
- "./html/classes/ResultSetWrapper.src/M000016.html"
|
|
101
|
+
- "./html/files/lib"
|
|
102
|
+
- "./html/files/README.html"
|
|
103
|
+
- "./html/files/lib/expected_result_set_rb.html"
|
|
104
|
+
- "./html/files/lib/marjoree_rb.html"
|
|
105
|
+
- "./html/files/lib/odbc_overrides_rb.html"
|
|
106
|
+
- "./html/files/lib/result_set_wrapper_rb.html"
|
|
107
|
+
- "./lib/expected_result_set.rb"
|
|
108
|
+
- "./lib/marjoree.rb"
|
|
109
|
+
- "./lib/odbc_overrides.rb"
|
|
110
|
+
- "./lib/result_set_wrapper.rb"
|
|
111
|
+
- "./tests/all_tests.rb"
|
|
112
|
+
- "./tests/sprocs"
|
|
113
|
+
- "./tests/test_contains.rb"
|
|
114
|
+
- "./tests/test_delete.rb"
|
|
115
|
+
- "./tests/test_expected_result_set.rb"
|
|
116
|
+
- "./tests/test_insert.rb"
|
|
117
|
+
- "./tests/test_marjoree.rb"
|
|
118
|
+
- "./tests/test_num_rows.rb"
|
|
119
|
+
- "./tests/test_result_set_wrapper.rb"
|
|
120
|
+
- "./tests/test_select.rb"
|
|
121
|
+
- "./tests/test_sproc.rb"
|
|
122
|
+
- "./tests/test_time_stamp.rb"
|
|
123
|
+
- "./tests/test_truncate.rb"
|
|
124
|
+
- "./tests/test_update.rb"
|
|
125
|
+
- "./tests/sprocs/test_error_sproc.sp"
|
|
126
|
+
- "./tests/sprocs/test_sproc.sp"
|
|
127
|
+
- "./tests/sprocs/test_sproc_with_mixed_params.sp"
|
|
128
|
+
- "./tests/sprocs/test_sproc_with_output_params.sp"
|
|
129
|
+
- "./tests/sprocs/test_sproc_with_params.sp"
|
|
130
|
+
- "./tests/sprocs/test_sproc_with_select_and_ops.sp"
|
|
131
|
+
test_files: []
|
|
132
|
+
rdoc_options: []
|
|
133
|
+
extra_rdoc_files: []
|
|
134
|
+
executables: []
|
|
135
|
+
extensions: []
|
|
136
|
+
requirements: []
|
|
137
|
+
dependencies: []
|