marjoree 0.0.1 → 0.0.9
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/Marjoree.iml +14 -0
- data/README +9 -36
- data/bin/create_marj_structure.rb +75 -0
- data/bin/create_odbc_connections.rb +39 -0
- data/bin/odbc_connection_finder.rb +46 -0
- data/examples/contains_example.rb +1 -1
- data/examples/count_and_insert_example.rb +1 -1
- data/examples/select_example.rb +1 -1
- data/html/classes/ExpectedResultSet.html +60 -33
- data/html/classes/ExpectedResultSet.src/M000002.html +6 -5
- data/html/classes/ExpectedResultSet.src/M000003.html +5 -5
- data/html/classes/ExpectedResultSet.src/M000004.html +5 -5
- data/html/classes/ExpectedResultSet.src/M000005.html +18 -0
- data/html/classes/ExpectedResultSet.src/M000006.html +24 -0
- data/html/classes/ExpectedResultSet.src/M000007.html +23 -0
- data/html/classes/ExpectedResultSet.src/M000008.html +29 -0
- data/html/classes/Fixnum.html +287 -0
- data/html/classes/Fixnum.src/M000031.html +18 -0
- data/html/classes/Fixnum.src/M000034.html +18 -0
- data/html/classes/Fixnum.src/M000037.html +18 -0
- data/html/classes/Fixnum.src/M000039.html +18 -0
- data/html/classes/Fixnum.src/M000041.html +18 -0
- data/html/classes/Hash.html +156 -0
- data/html/classes/Hash.src/M000009.html +21 -0
- data/html/classes/Hash.src/M000010.html +20 -0
- data/html/classes/Marjoree.html +268 -151
- data/html/classes/Marjoree.src/M000057.html +19 -0
- data/html/classes/Marjoree.src/M000058.html +18 -0
- data/html/classes/{ExpectedResultSet.src/M000001.html → Marjoree.src/M000059.html} +4 -4
- data/html/classes/Marjoree.src/{M000024.html → M000060.html} +4 -4
- data/html/classes/Marjoree.src/{M000031.html → M000061.html} +4 -4
- data/html/classes/Marjoree.src/{M000026.html → M000062.html} +3 -3
- data/html/classes/Marjoree.src/{M000027.html → M000063.html} +3 -3
- data/html/classes/Marjoree.src/{M000028.html → M000064.html} +3 -3
- data/html/classes/Marjoree.src/{M000029.html → M000065.html} +5 -6
- data/html/classes/Marjoree.src/{M000030.html → M000066.html} +5 -5
- data/html/classes/Marjoree.src/M000067.html +19 -0
- data/html/classes/Marjoree.src/{M000032.html → M000068.html} +3 -3
- data/html/classes/{ResultSetWrapper.src/M000009.html → Marjoree.src/M000069.html} +4 -4
- data/html/classes/{ResultSetWrapper.src/M000010.html → Marjoree.src/M000070.html} +4 -4
- data/html/classes/{ResultSetWrapper.src/M000011.html → Marjoree.src/M000071.html} +4 -4
- data/html/classes/Marjoree.src/M000072.html +20 -0
- data/html/classes/Marjoree.src/M000073.html +20 -0
- data/html/classes/Marjoree.src/M000074.html +20 -0
- data/html/classes/Marjoree.src/{M000033.html → M000075.html} +3 -3
- data/html/classes/Marjoree.src/{M000034.html → M000076.html} +4 -4
- data/html/classes/Marjoree.src/{M000035.html → M000077.html} +2 -2
- data/html/classes/Marjoree.src/{M000036.html → M000078.html} +4 -3
- data/html/classes/Marjoree.src/{M000037.html → M000079.html} +1 -1
- data/html/classes/Marjoree.src/{M000038.html → M000080.html} +3 -3
- data/html/classes/Marjoree.src/{M000039.html → M000081.html} +3 -4
- data/html/classes/Marjoree.src/{M000040.html → M000082.html} +3 -3
- data/html/classes/Marjoree.src/{M000041.html → M000083.html} +3 -3
- data/html/classes/{ResultSetWrapper.src/M000008.html → Marjoree.src/M000084.html} +4 -4
- data/html/classes/ODBC.html +4 -0
- data/html/classes/ODBC/Error.html +12 -12
- data/html/classes/ODBC/Error.src/M000047.html +21 -0
- data/html/classes/ODBC/Error.src/{M000021.html → M000048.html} +2 -2
- data/html/classes/ODBC/TimeStamp.html +48 -18
- data/html/classes/ODBC/TimeStamp.src/{M000017.html → M000042.html} +2 -2
- data/html/classes/ODBC/TimeStamp.src/M000043.html +22 -0
- data/html/classes/ODBC/TimeStamp.src/{M000019.html → M000044.html} +2 -3
- data/html/classes/ODBC/TimeStamp.src/M000045.html +18 -0
- data/html/classes/ODBC/TimeStamp.src/M000046.html +18 -0
- data/html/classes/OdbcConnectionWrapper.html +244 -0
- data/html/classes/OdbcConnectionWrapper.src/M000023.html +18 -0
- data/html/classes/OdbcConnectionWrapper.src/M000024.html +18 -0
- data/html/classes/OdbcConnectionWrapper.src/M000025.html +22 -0
- data/html/classes/OdbcConnectionWrapper.src/M000026.html +25 -0
- data/html/classes/OdbcConnectionWrapper.src/M000027.html +20 -0
- data/html/classes/OdbcConnectionWrapper.src/M000028.html +28 -0
- data/html/classes/OdbcConnectionWrapper.src/M000029.html +24 -0
- data/html/classes/OdbcConnectionWrapper.src/M000030.html +30 -0
- data/html/classes/{ResultSetWrapper.html → ResultSet.html} +71 -94
- data/html/classes/ResultSet.src/M000011.html +27 -0
- data/html/classes/ResultSet.src/M000012.html +21 -0
- data/html/classes/ResultSet.src/M000013.html +23 -0
- data/html/classes/ResultSet.src/M000014.html +18 -0
- data/html/classes/ResultSet.src/M000015.html +18 -0
- data/html/classes/ResultSet.src/M000016.html +18 -0
- data/html/classes/ResultSet.src/M000017.html +18 -0
- data/html/classes/ResultSet.src/M000018.html +20 -0
- data/html/classes/ResultSet.src/M000019.html +18 -0
- data/html/classes/ResultSet.src/M000020.html +22 -0
- data/html/classes/ResultSet.src/M000021.html +23 -0
- data/html/classes/ResultSet.src/M000022.html +22 -0
- data/html/classes/Test.html +107 -0
- data/html/classes/Test/Unit.html +107 -0
- data/html/classes/Test/Unit/TestCase.html +257 -0
- data/html/classes/Test/Unit/TestCase.src/M000049.html +18 -0
- data/html/classes/Test/Unit/TestCase.src/M000050.html +18 -0
- data/html/classes/Test/Unit/TestCase.src/M000051.html +17 -0
- data/html/classes/Test/Unit/TestCase.src/M000052.html +17 -0
- data/html/classes/Test/Unit/TestCase.src/M000053.html +25 -0
- data/html/classes/Test/Unit/TestCase.src/M000054.html +18 -0
- data/html/classes/Test/Unit/TestCase.src/M000055.html +18 -0
- data/html/classes/Test/Unit/TestCase.src/M000056.html +35 -0
- data/html/created.rid +1 -1
- data/html/files/README.html +2 -51
- data/html/files/lib/expected_result_set_rb.html +1 -16
- data/html/files/lib/marjoree/core_rb.html +111 -0
- data/html/files/lib/marjoree/fixtures_rb.html +111 -0
- data/html/files/lib/marjoree/odbc_connection_wrapper_rb.html +109 -0
- data/html/files/lib/marjoree/odbc_rb.html +108 -0
- data/html/files/lib/{odbc_overrides_rb.html → marjoree/result_set_rb.html} +5 -5
- data/html/files/lib/{result_set_wrapper_rb.html → marjoree/time_rb.html} +5 -5
- data/html/files/lib/marjoree_rb.html +3 -4
- data/html/files/lib/run_marjoree_rb.html +145 -0
- data/html/files/lib/run_marjoree_rb.src/M000001.html +34 -0
- data/html/fr_class_index.html +7 -1
- data/html/fr_file_index.html +7 -2
- data/html/fr_method_index.html +84 -42
- data/lib/Marjoree.iml +12 -0
- data/lib/expected_result_set.rb +51 -24
- data/lib/marjoree.rb +2 -344
- data/lib/marjoree/core.rb +388 -0
- data/lib/marjoree/fixtures.rb +156 -0
- data/lib/marjoree/odbc.rb +45 -0
- data/lib/marjoree/odbc_connection_wrapper.rb +79 -0
- data/lib/marjoree/result_set.rb +165 -0
- data/lib/marjoree/sybase_definitions.rb +223 -0
- data/lib/marjoree/time.rb +31 -0
- data/lib/proc_param_info.txt +20 -0
- data/lib/run_marjoree.rb +31 -0
- data/pkg/marjoree-0.0.9.gem +0 -0
- data/rakefile.rb +3 -3
- data/tests/all_cruby_tests.rb +24 -0
- data/tests/all_jruby_tests.rb +22 -0
- data/tests/all_tests.rb +9 -6
- data/tests/fixtures/A.yml +3 -0
- data/tests/fixtures/B.yml +5 -0
- data/tests/fixtures/first_db/FIRST.yml +8 -0
- data/tests/fixtures/second_db/SECOND.yml +9 -0
- data/tests/marjoree/test_assert_results.rb +82 -0
- data/tests/marjoree/test_connection_details.rb +44 -0
- data/tests/{test_contains.rb → marjoree/test_contains.rb} +0 -0
- data/tests/{test_delete.rb → marjoree/test_delete.rb} +0 -0
- data/tests/marjoree/test_drop_user_objects.rb +52 -0
- data/tests/marjoree/test_expected_result_set.rb +111 -0
- data/tests/marjoree/test_fixtures.rb +112 -0
- data/tests/{test_insert.rb → marjoree/test_insert.rb} +0 -0
- data/tests/{test_marjoree.rb → marjoree/test_marjoree.rb} +14 -2
- data/tests/marjoree/test_multiple_db_fixtures.rb +35 -0
- data/tests/{test_num_rows.rb → marjoree/test_num_rows.rb} +0 -0
- data/tests/marjoree/test_odbc_connection_wrapper.rb +47 -0
- data/tests/{test_result_set_wrapper.rb → marjoree/test_result_set_wrapper.rb} +8 -8
- data/tests/marjoree/test_select.rb +55 -0
- data/tests/marjoree/test_single_odbc_connection_wrapper.rb +39 -0
- data/tests/{test_sproc.rb → marjoree/test_sproc.rb} +3 -4
- data/tests/marjoree/test_time.rb +25 -0
- data/tests/{test_time_stamp.rb → marjoree/test_time_stamp.rb} +10 -1
- data/tests/{test_truncate.rb → marjoree/test_truncate.rb} +0 -0
- data/tests/{test_update.rb → marjoree/test_update.rb} +14 -14
- data/tests/multiple_odbc_config/connections.yml +13 -0
- data/tests/single_odbc_config/connections.yml +3 -0
- metadata +214 -112
- data/html/classes/Marjoree.src/M000022.html +0 -19
- data/html/classes/Marjoree.src/M000023.html +0 -20
- data/html/classes/Marjoree.src/M000025.html +0 -18
- data/html/classes/Marjoree.src/M000042.html +0 -25
- data/html/classes/ODBC/Error.src/M000020.html +0 -21
- data/html/classes/ODBC/TimeStamp.src/M000018.html +0 -22
- data/html/classes/ResultSetWrapper.src/M000005.html +0 -27
- data/html/classes/ResultSetWrapper.src/M000006.html +0 -24
- data/html/classes/ResultSetWrapper.src/M000007.html +0 -23
- data/html/classes/ResultSetWrapper.src/M000012.html +0 -20
- data/html/classes/ResultSetWrapper.src/M000013.html +0 -18
- data/html/classes/ResultSetWrapper.src/M000014.html +0 -22
- data/html/classes/ResultSetWrapper.src/M000015.html +0 -23
- data/html/classes/ResultSetWrapper.src/M000016.html +0 -27
- data/lib/odbc_overrides.rb +0 -33
- data/lib/result_set_wrapper.rb +0 -193
- data/tests/test_expected_result_set.rb +0 -40
- data/tests/test_select.rb +0 -30
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'marjoree'
|
|
3
|
+
require 'marjoree/fixtures'
|
|
4
|
+
require 'marjoree/odbc_connection_wrapper'
|
|
5
|
+
|
|
6
|
+
#Test::Unit::TestCase.fixture_path = File.join(File.dirname(__FILE__), '../fixtures')
|
|
7
|
+
#Test::Unit::TestCase.odbc_config_path = File.join(File.dirname(__FILE__), '../odbc_config')
|
|
8
|
+
|
|
9
|
+
class TestConnectionDetails < Test::Unit::TestCase
|
|
10
|
+
include Marjoree
|
|
11
|
+
|
|
12
|
+
def setup
|
|
13
|
+
@original_odbc_config_path = OdbcConnectionWrapper.odbc_config_path
|
|
14
|
+
OdbcConnectionWrapper.odbc_config_path = './tests/multiple_odbc_config/connections.yml'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_connection_details
|
|
18
|
+
path = OdbcConnectionWrapper.odbc_config_path
|
|
19
|
+
puts path
|
|
20
|
+
|
|
21
|
+
yaml = IO.read(path)
|
|
22
|
+
yaml_contents = YAML.load(ERB.new(yaml).result(binding))
|
|
23
|
+
|
|
24
|
+
assert_equal( 4, yaml_contents.size )
|
|
25
|
+
|
|
26
|
+
assert_contains_username_and_password( yaml_contents['first_db'] )
|
|
27
|
+
assert_contains_username_and_password( yaml_contents['second_db'] )
|
|
28
|
+
|
|
29
|
+
default_db_map = yaml_contents['default']
|
|
30
|
+
assert( 'first_db', default_db_map['obdc_connection'] )
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def teardown
|
|
34
|
+
OdbcConnectionWrapper.odbc_config_path = @original_odbc_config_path
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
private
|
|
38
|
+
|
|
39
|
+
def assert_contains_username_and_password( details_map )
|
|
40
|
+
assert( details_map.keys.include?( 'username' ) )
|
|
41
|
+
assert( details_map.keys.include?( 'password' ) )
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
|
|
3
|
+
class TestDropUserObjects < Test::Unit::TestCase
|
|
4
|
+
include Marjoree
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
|
|
8
|
+
$db.do( "CREATE TABLE TEST_TABLE( id int NOT NULL, value int NOT NULL )" )
|
|
9
|
+
$db.do( "CREATE VIEW VW_TEST_TABLE AS SELECT * FROM TEST_TABLE" )
|
|
10
|
+
load_sproc 'test_sproc.sp'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_drop_user_tables
|
|
14
|
+
drop_user_tables
|
|
15
|
+
assert_equal 0, count( :sysobjects, {:type => 'U'} )
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_drop_user_tables
|
|
19
|
+
drop_user_views
|
|
20
|
+
assert_equal 0, count( :sysobjects, {:type => 'V'} )
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_drop_user_sprocs
|
|
24
|
+
drop_user_sprocs
|
|
25
|
+
assert_equal 0, count( :sysobjects, {:type => 'P'} )
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def teardown
|
|
29
|
+
begin
|
|
30
|
+
$db.do( "DROP PROCEDURE test_sproc" )
|
|
31
|
+
rescue
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
begin
|
|
35
|
+
$db.do( "DROP VIEW VW_TEST_TABLE" )
|
|
36
|
+
rescue
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
begin
|
|
40
|
+
$db.do( "DROP TABLE TEST_TABLE" )
|
|
41
|
+
rescue
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
private
|
|
46
|
+
|
|
47
|
+
def load_sproc( sproc_name )
|
|
48
|
+
dir = File.dirname(__FILE__)
|
|
49
|
+
sproc_contents = IO.readlines( "#{dir}/../sprocs/#{sproc_name}" ).join
|
|
50
|
+
$db.do sproc_contents
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
$:.unshift File.dirname(__FILE__) + "/../../lib"
|
|
2
|
+
|
|
3
|
+
require 'test/unit'
|
|
4
|
+
require 'expected_result_set'
|
|
5
|
+
|
|
6
|
+
class TestExpectedResultSet < Test::Unit::TestCase
|
|
7
|
+
|
|
8
|
+
def setup
|
|
9
|
+
@testee = ExpectedResultSet.new
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_row_hashes_with_one_entry
|
|
13
|
+
@testee.columns = ["firstColumn"]
|
|
14
|
+
@testee.rows << [2]
|
|
15
|
+
|
|
16
|
+
assert_equal( [{"firstColumn"=>2}], @testee.row_hashes )
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_columns_are_strings
|
|
20
|
+
@testee.columns = ["firstColumn"]
|
|
21
|
+
assert_equal ['firstColumn'], @testee.columns
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_row_hash_with_one_row_and_one_column
|
|
25
|
+
@testee.columns = ["firstColumn"]
|
|
26
|
+
@testee.rows << [2]
|
|
27
|
+
assert_equal( {"firstColumn"=>2}, @testee.row_hash( 0 ) )
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_row_hash_with_one_rows_and_two_columns
|
|
31
|
+
@testee.columns = ["firstColumn", "secondColumn"]
|
|
32
|
+
@testee.rows << [123, 456]
|
|
33
|
+
assert_equal( {"firstColumn"=>123, "secondColumn"=>456}, @testee.row_hash( 0 ) )
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_row_hash_with_two_rows_and_two_columns
|
|
37
|
+
@testee.columns = ["firstColumn", "secondColumn"]
|
|
38
|
+
@testee.rows << [123, 234]
|
|
39
|
+
@testee.rows << [345, 567]
|
|
40
|
+
assert_equal( {"firstColumn"=>123, "secondColumn"=>234}, @testee.row_hash( 0 ) )
|
|
41
|
+
assert_equal( {"firstColumn"=>345, "secondColumn"=>567}, @testee.row_hash( 1 ) )
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_adding_row_as_hash
|
|
45
|
+
@testee.with_row :first=>1, :second=>2
|
|
46
|
+
assert_equal({"first" => 1, "second"=>2}, @testee.row_hash(0))
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def test_adding_multiple_rows_as_hash
|
|
50
|
+
@testee.with_row(:first=>1, :second=>2).with_row(:first=>10, :second=>20)
|
|
51
|
+
assert_equal({"first" => 1, "second"=>2}, @testee.row_hash(0))
|
|
52
|
+
assert_equal({"first" => 10, "second"=>20}, @testee.row_hash(1))
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_adding_a_key_to_a_row_adds_that_to_previously_added_rows_with_nil_value
|
|
56
|
+
@testee.with_row :first=>1
|
|
57
|
+
@testee.with_row :first=>10, :second=>20
|
|
58
|
+
assert_equal({"first" => 1, "second"=>nil}, @testee.row_hash(0))
|
|
59
|
+
assert_equal({"first" => 10, "second"=>20}, @testee.row_hash(1))
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def test_adding_a_fixture
|
|
63
|
+
fixture_map = { "firstColumn" => "first", "secondColumn" => "last" }
|
|
64
|
+
|
|
65
|
+
@testee.columns = [ "firstColumn", "secondColumn"]
|
|
66
|
+
assert( @testee.rows.empty? )
|
|
67
|
+
|
|
68
|
+
@testee.add_fixture( fixture_map )
|
|
69
|
+
assert( !@testee.rows.empty? )
|
|
70
|
+
|
|
71
|
+
assert_equal( [ "first", "last" ], @testee.rows[0] )
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_adding_a_fixture_which_has_more_columns_than_expected_is_interested_in
|
|
75
|
+
fixture_map = { "firstColumn" => "first", "secondColumn" => "last", "not very interesting column" => "value" }
|
|
76
|
+
|
|
77
|
+
@testee.columns = [ "firstColumn", "secondColumn"]
|
|
78
|
+
@testee.add_fixture( fixture_map )
|
|
79
|
+
|
|
80
|
+
assert_equal( [ "first", "last" ], @testee.rows[0] )
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def test_adding_a_fixture_which_has_less_columns_than_expected
|
|
84
|
+
fixture_map = { "firstColumn" => "first" }
|
|
85
|
+
|
|
86
|
+
@testee.columns = [ "firstColumn", "secondColumn"]
|
|
87
|
+
@testee.add_fixture( fixture_map )
|
|
88
|
+
|
|
89
|
+
assert_equal( [ "first", nil ], @testee.rows[0] )
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def test_adding_two_fixtures_with_two_calls
|
|
93
|
+
@testee.columns = [ :one, :two ]
|
|
94
|
+
@testee.add_fixture( {:one => "first fixture first value", :two => "first fixture second value"} )
|
|
95
|
+
@testee.add_fixture( {:one => "second fixture first value", :two => "second fixture second value"} )
|
|
96
|
+
|
|
97
|
+
assert_equal( [ "first fixture first value", "first fixture second value" ], @testee.rows[0] )
|
|
98
|
+
assert_equal( [ "second fixture first value", "second fixture second value" ], @testee.rows[1] )
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def test_adding_two_fixtures_that_join
|
|
102
|
+
@testee.columns = [ :parent_name, :child_name ]
|
|
103
|
+
parent_fixture_map = {:parent_name => "I am the parent table record", :id_join => 5 }
|
|
104
|
+
child_fixture_map = {:child_name => "I am the child table record", :id_join => 5 }
|
|
105
|
+
@testee.add_fixture parent_fixture_map, child_fixture_map
|
|
106
|
+
|
|
107
|
+
assert_equal( 1, @testee.rows.length )
|
|
108
|
+
assert_equal( [ "I am the parent table record", "I am the child table record" ], @testee.rows[0] )
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
end
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'marjoree'
|
|
3
|
+
require 'marjoree/fixtures'
|
|
4
|
+
require 'expected_result_set'
|
|
5
|
+
|
|
6
|
+
Test::Unit::TestCase.fixture_path = File.join(File.dirname(__FILE__), '../fixtures')
|
|
7
|
+
|
|
8
|
+
include Marjoree
|
|
9
|
+
|
|
10
|
+
class TestFixtureSql < Test::Unit::TestCase
|
|
11
|
+
|
|
12
|
+
def self.stub_fixtures(*tables)
|
|
13
|
+
execute( "CREATE TABLE A( id INT, name VARCHAR(255) )" ) if( !get_user_tables.include?( 'A' ) )
|
|
14
|
+
execute( "CREATE TABLE B( id_b INT )" ) if( !get_user_tables.include?( 'B' ) )
|
|
15
|
+
fixtures(*tables)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
stub_fixtures :A, :B
|
|
19
|
+
|
|
20
|
+
# tests are numbered to ensure the running order
|
|
21
|
+
|
|
22
|
+
def test_1 # That A and B are inserted into the db from yml files
|
|
23
|
+
assert_A_initialisation
|
|
24
|
+
|
|
25
|
+
#from yml file
|
|
26
|
+
assert_equal( 1, A(:one).id )
|
|
27
|
+
assert_equal( 'Marvin', A(:one).name )
|
|
28
|
+
|
|
29
|
+
assert_B_initialisation
|
|
30
|
+
|
|
31
|
+
#from yml file
|
|
32
|
+
assert_equal( 1, B(:one).id_b)
|
|
33
|
+
assert_equal( 2, B(:two).id_b)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_2 # this test will update the fixture data
|
|
37
|
+
update "B", {:id_b => 2}, {:id_b => 100}
|
|
38
|
+
delete "B", {:id_b => 1}
|
|
39
|
+
|
|
40
|
+
expected = ExpectedResultSet.new( :id_b )
|
|
41
|
+
expected.rows << [100]
|
|
42
|
+
|
|
43
|
+
assert_results( expected, select( "B" ) )
|
|
44
|
+
assert_equal( 1, select( "B" ).size )
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_3 # the fixtures code should have completely truncated table A & B and reinitialised them from the yml.
|
|
48
|
+
assert_A_initialisation
|
|
49
|
+
assert_B_initialisation
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
private
|
|
53
|
+
|
|
54
|
+
def assert_A_initialisation
|
|
55
|
+
actual_a = select "A"
|
|
56
|
+
assert_equal( 1, actual_a.size )
|
|
57
|
+
|
|
58
|
+
assert_equal( 1, actual_a.hashes[0][:id] )
|
|
59
|
+
assert_equal( 'Marvin', actual_a.hashes[0][:name] )
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def assert_B_initialisation
|
|
63
|
+
actual_b = select "B"
|
|
64
|
+
assert_equal( 2, actual_b.size )
|
|
65
|
+
|
|
66
|
+
expected = ExpectedResultSet.new( :id_b )
|
|
67
|
+
expected.rows << [1]
|
|
68
|
+
expected.rows << [2]
|
|
69
|
+
assert_results( expected, actual_b )
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
class TestFixtures < Test::Unit::TestCase
|
|
74
|
+
fixtures :A, :B
|
|
75
|
+
|
|
76
|
+
def test_hash_to_sql
|
|
77
|
+
testee = { :key1 => 'value1', :key2 => 3.14, :key3 => 12 }
|
|
78
|
+
table_name = :ABC
|
|
79
|
+
|
|
80
|
+
sql = testee.to_sql(table_name)
|
|
81
|
+
assert sql =~ /^INSERT INTO ABC\((.*)\) VALUES\((.*)\)$/
|
|
82
|
+
keys = $1
|
|
83
|
+
values = $2
|
|
84
|
+
|
|
85
|
+
assert_equal "key1,key2,key3", keys.split(/,/).sort.join(',')
|
|
86
|
+
assert_equal "'value1',12,3.14", values.split(/,/).sort.join(',')
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def test_retrieving_yaml_defined_value
|
|
90
|
+
a = A(:one)
|
|
91
|
+
b1 = B(:one)
|
|
92
|
+
b2 = B(:two)
|
|
93
|
+
|
|
94
|
+
assert_equal({ 'id' => 1, 'name' => 'Marvin' }, a)
|
|
95
|
+
assert_equal({ 'id_b' => 1 }, b1)
|
|
96
|
+
assert_equal({ 'id_b' => 2 }, b2)
|
|
97
|
+
|
|
98
|
+
assert_equal 1, a.id
|
|
99
|
+
assert_equal 'Marvin', a.name
|
|
100
|
+
|
|
101
|
+
assert_equal 1, b1.id
|
|
102
|
+
assert_equal 2, b2.id
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def test_retrieving_value_not_defined_in_yaml_is_nil
|
|
106
|
+
assert_equal nil, A(:one).superhero_name
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def test_defining_a_default_on_map
|
|
110
|
+
assert_equal "Captain Marvel", A(:one).with_defaults(:superhero_name=>"Captain Marvel").superhero_name
|
|
111
|
+
end
|
|
112
|
+
end
|
|
File without changes
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
$:.unshift File.dirname(__FILE__) + "/../../lib"
|
|
2
|
+
|
|
1
3
|
require 'test/unit'
|
|
2
|
-
require '
|
|
4
|
+
require 'marjoree'
|
|
3
5
|
|
|
4
6
|
class TestMarjoree < Test::Unit::TestCase
|
|
5
7
|
include Marjoree
|
|
6
8
|
|
|
7
9
|
def setup
|
|
8
|
-
$db.do( "CREATE TABLE TEST_TABLE( id int NOT NULL, value int
|
|
10
|
+
$db.do( "CREATE TABLE TEST_TABLE( id int NOT NULL, value int NULL )" )
|
|
9
11
|
$db.do( "INSERT INTO TEST_TABLE ( id, value ) VALUES( 0, 10 )" )
|
|
10
12
|
$db.do( "INSERT INTO TEST_TABLE ( id, value ) VALUES( 1, 11 )" )
|
|
11
13
|
end
|
|
@@ -36,6 +38,16 @@ class TestMarjoree < Test::Unit::TestCase
|
|
|
36
38
|
end
|
|
37
39
|
end
|
|
38
40
|
|
|
41
|
+
def test_display_value_for
|
|
42
|
+
update( "TEST_TABLE", { :id => 0 }, :value => nil )
|
|
43
|
+
sql = "SELECT value FROM TEST_TABLE WHERE id = 0"
|
|
44
|
+
result = []
|
|
45
|
+
execute( sql ).collect do |hash|
|
|
46
|
+
result << hash[:value]
|
|
47
|
+
end
|
|
48
|
+
assert_equal( 'NULL', display_value_for(result[0]))
|
|
49
|
+
end
|
|
50
|
+
|
|
39
51
|
def test_contains?
|
|
40
52
|
assert( contains?( "TEST_TABLE", :id => 0, :value => 10 ) )
|
|
41
53
|
assert( contains?( "TEST_TABLE", :id => 1, :value => 11 ) )
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'marjoree'
|
|
3
|
+
require 'marjoree/fixtures'
|
|
4
|
+
require 'expected_result_set'
|
|
5
|
+
|
|
6
|
+
Test::Unit::TestCase.fixture_path = File.join(File.dirname(__FILE__), '../fixtures')
|
|
7
|
+
|
|
8
|
+
class TestMultipleDBFixtures < Test::Unit::TestCase
|
|
9
|
+
include Marjoree
|
|
10
|
+
|
|
11
|
+
# `odbcconf /A {configdsn "SYBASE ASE ODBC Driver" "DSN=first_db|NA=LGLAIB9Y2Y33J,5000|Uid=sa|Pwd=|Database=CRDMGR"}`
|
|
12
|
+
# `odbcconf /A {configdsn "SYBASE ASE ODBC Driver" "DSN=second_db|NA=LGLAIB9Y2Y33J,5000|Uid=sa|Pwd=|Database=CRDMGR_TEST"}`
|
|
13
|
+
|
|
14
|
+
def self.stub_fixtures(*tables)
|
|
15
|
+
connect_me_to 'first_db'
|
|
16
|
+
execute( "CREATE TABLE FIRST( id INT, name VARCHAR(255) )" ) if( !get_user_tables.include?( 'FIRST' ) )
|
|
17
|
+
|
|
18
|
+
connect_me_to 'second_db'
|
|
19
|
+
execute( "CREATE TABLE SECOND( id INT )" ) if( !get_user_tables.include?( 'SECOND' ) )
|
|
20
|
+
|
|
21
|
+
connect_me_to 'first_db'
|
|
22
|
+
fixtures(*tables)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
stub_fixtures :FIRST, :SECOND
|
|
26
|
+
|
|
27
|
+
def test_fixtures_inserted_into_correct_db
|
|
28
|
+
connect_me_to 'first_db'
|
|
29
|
+
assert_equal( 2, count( "FIRST" ) )
|
|
30
|
+
|
|
31
|
+
connect_me_to 'second_db'
|
|
32
|
+
assert_equal( 3, count( "SECOND" ) )
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
File without changes
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
|
|
3
|
+
class TestMultipleOdbcConnectionWrapper < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@original_odbc_config_path = OdbcConnectionWrapper.odbc_config_path
|
|
7
|
+
OdbcConnectionWrapper.odbc_config_path = './tests/multiple_odbc_config/connections.yml'
|
|
8
|
+
@testee = OdbcConnectionWrapper.new
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def test_single_db_connections_is_also_used_as_default
|
|
12
|
+
@testee.connect_me_to( "first_db" )
|
|
13
|
+
@testee.execute( "CREATE TABLE WRAPPER_TEST_TABLE( id INT )")
|
|
14
|
+
assert( table_in_db?( "WRAPPER_TEST_TABLE" ) )
|
|
15
|
+
|
|
16
|
+
@testee.connect_me_to( "second_db" )
|
|
17
|
+
assert( !table_in_db?( "WRAPPER_TEST_TABLE" ) )
|
|
18
|
+
|
|
19
|
+
@testee.connect_me_to( "default" )
|
|
20
|
+
assert( table_in_db?( "WRAPPER_TEST_TABLE" ) )
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def teardown
|
|
24
|
+
@testee.connect_me_to( "first_db" )
|
|
25
|
+
@testee.execute( "DROP TABLE WRAPPER_TEST_TABLE" ) if ( table_in_db?( "WRAPPER_TEST_TABLE" ) )
|
|
26
|
+
@testee.disconnect_me
|
|
27
|
+
|
|
28
|
+
OdbcConnectionWrapper.odbc_config_path = @original_odbc_config_path
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_connections_are_lazily_loaded
|
|
33
|
+
assert_raise(ODBC::Error) {@testee.connect_me_to("i_do_not_exist")}
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
private
|
|
38
|
+
|
|
39
|
+
def table_in_db?( table_name )
|
|
40
|
+
result_set = @testee.execute( "SELECT * FROM sysobjects WHERE type = 'U'" )
|
|
41
|
+
object_names = []
|
|
42
|
+
result_set.hashes.each do |row|
|
|
43
|
+
object_names << row[:name]
|
|
44
|
+
end
|
|
45
|
+
return object_names.include?( table_name )
|
|
46
|
+
end
|
|
47
|
+
end
|