dbexpect 0.11.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.
- data/.document +5 -0
- data/.rspec +1 -0
- data/.rvmrc +41 -0
- data/COPYING +674 -0
- data/Gemfile +20 -0
- data/Gemfile.lock +45 -0
- data/LICENSE.txt +2 -0
- data/README.md +106 -0
- data/Rakefile +65 -0
- data/VERSION +1 -0
- data/bin/dbexpect +33 -0
- data/bin/great-expectations +28 -0
- data/bin/ready-rig +27 -0
- data/database.yml +9 -0
- data/lib/dbexpect.rb +19 -0
- data/lib/dbexpect/command_runner.rb +21 -0
- data/lib/dbexpect/console_formatter.rb +40 -0
- data/lib/dbexpect/d_s_l_parser.rb +124 -0
- data/lib/dbexpect/database.rb +59 -0
- data/lib/dbexpect/db_null.rb +25 -0
- data/lib/dbexpect/db_sequence.rb +26 -0
- data/lib/dbexpect/db_string.rb +29 -0
- data/lib/dbexpect/dbexpect.rb +87 -0
- data/lib/dbexpect/defaulting_row_set.rb +68 -0
- data/lib/dbexpect/expectation_checker.rb +32 -0
- data/lib/dbexpect/expectation_tree_node.rb +67 -0
- data/lib/dbexpect/expectations/expectation.rb +45 -0
- data/lib/dbexpect/expectations/row_count_expectation.rb +32 -0
- data/lib/dbexpect/expectations/row_expectation.rb +32 -0
- data/lib/dbexpect/odbc_connection.rb +47 -0
- data/lib/dbexpect/row.rb +43 -0
- data/lib/dbexpect/table.rb +71 -0
- data/spec/dbexpect_integration_spec.rb +131 -0
- data/spec/defaulting_row_set_spec.rb +37 -0
- data/spec/expectation_checker_spec.rb +47 -0
- data/spec/expectations/row_expectation_spec.rb +51 -0
- data/spec/fixtures/basic_test_expected_inserts.sql +6 -0
- data/spec/fixtures/cleanup_db.sql +2 -0
- data/spec/fixtures/expected_output.txt +11 -0
- data/spec/fixtures/sample_db.sql +12 -0
- data/spec/fixtures/sample_project/database.yml +9 -0
- data/spec/fixtures/sample_project/defaults/defaults.rb +5 -0
- data/spec/fixtures/sample_project/tests/basic_test.rb +41 -0
- data/spec/fixtures/sample_project/tests/test2.rb +3 -0
- data/spec/spec_helper.rb +28 -0
- metadata +186 -0
@@ -0,0 +1,51 @@
|
|
1
|
+
# Copyright 2012 C3 Business Solutions
|
2
|
+
#
|
3
|
+
# This file is part of dbexpect.
|
4
|
+
#
|
5
|
+
# dbexpect is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# dbexpect is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with dbexpect. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
18
|
+
|
19
|
+
describe RowExpectation do
|
20
|
+
describe "validating expectations against the database" do
|
21
|
+
def stub_row(where_clause)
|
22
|
+
mock(:where_clause => where_clause)
|
23
|
+
end
|
24
|
+
|
25
|
+
before :each do
|
26
|
+
@db = {:dbname => mock}
|
27
|
+
@expected_row = stub_row('clause1')
|
28
|
+
|
29
|
+
@it = RowExpectation.new(:dbname,'schema','tablename',@expected_row)
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
it "should gather failure messages for failed expectations" do
|
34
|
+
@db[:dbname].should_receive(:num_rows_match).with('schema','tablename','clause1').
|
35
|
+
and_return(2)
|
36
|
+
|
37
|
+
@it.validate_expectation(@db)
|
38
|
+
@it.failed_validation?.should be_true
|
39
|
+
@it.failure_message.should == "Expected schema.tablename to contain a row where clause1, got 2"
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should gather failure messages for exception-causing" do
|
43
|
+
@db[:dbname].should_receive(:num_rows_match).with('schema','tablename','clause1').
|
44
|
+
and_raise(OdbcConnection::DatabaseException.new('error message'))
|
45
|
+
|
46
|
+
@it.validate_expectation(@db)
|
47
|
+
@it.failed_validation?.should be_true
|
48
|
+
@it.failure_message.should == "Expected schema.tablename to contain a row where clause1, instead database raised error: error message"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
->:
|
2
|
+
our basic test definition test:
|
3
|
+
Expected target.tgt_table to contain 5 rows, got 0
|
4
|
+
test case 1:
|
5
|
+
Expected target.tgt_table to contain a row where str_column = 'defaulted in script' AND int_column = '1' AND nullable_col is null, got 0
|
6
|
+
Expected target.tgt_table to contain a row where str_column = 'defaulted in script' AND int_column = '2' AND nullable_col is null, got 0
|
7
|
+
Expected target.tgt_table to contain a row where str_column = 'defaulted in script' AND int_column = '3' AND nullable_col is null, got 0
|
8
|
+
Expected target.tgt_table to contain a row where str_column = 'defaulted in script' AND int_column = '4' AND nullable_col = '4', got 0
|
9
|
+
nested definition:
|
10
|
+
Expected target.tgt_table to contain a row where str_column = 'special row' AND int_column = '5' AND nullable_col = '6', got 0
|
11
|
+
Failed to meet expectations
|
@@ -0,0 +1,12 @@
|
|
1
|
+
create schema source;
|
2
|
+
create schema target;
|
3
|
+
|
4
|
+
create table source.src_table (
|
5
|
+
str_column varchar(255),
|
6
|
+
int_column integer,
|
7
|
+
nullable_col varchar(255) null);
|
8
|
+
|
9
|
+
create table target.tgt_table (
|
10
|
+
str_column varchar(255),
|
11
|
+
int_column integer,
|
12
|
+
nullable_col integer null );
|
@@ -0,0 +1,41 @@
|
|
1
|
+
requires 'spec/fixtures/sample_project/defaults/defaults.rb'
|
2
|
+
|
3
|
+
describe "our basic test definition test" do
|
4
|
+
@src = table(:dbexpect_src,:source,:src_table)
|
5
|
+
@tgt = table(:dbexpect_tgt,:target,:tgt_table)
|
6
|
+
|
7
|
+
etl_run_command "echo 400"
|
8
|
+
|
9
|
+
expected_defaults @tgt,
|
10
|
+
:str_column => 'defaulted in script',
|
11
|
+
:int_column => 5
|
12
|
+
|
13
|
+
expect_total_rows @tgt, 5
|
14
|
+
|
15
|
+
describe "test case 1" do
|
16
|
+
insert_into @src,
|
17
|
+
[:int_column],
|
18
|
+
[[7]]
|
19
|
+
|
20
|
+
expect_rows @tgt,
|
21
|
+
[:int_column,:nullable_col],
|
22
|
+
[
|
23
|
+
[1,NULL],
|
24
|
+
[2,nil],
|
25
|
+
[3,null],
|
26
|
+
[4,4] ]
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "nested definition" do
|
30
|
+
insert_into @src,
|
31
|
+
[:str_column,:int_column,:nullable_col],
|
32
|
+
[
|
33
|
+
['overridden string',1,'not null'] ]
|
34
|
+
|
35
|
+
expect_rows @tgt,
|
36
|
+
[:str_column,:nullable_col],
|
37
|
+
[
|
38
|
+
['special row',6]]
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# Copyright 2012 C3 Business Solutions
|
2
|
+
#
|
3
|
+
# This file is part of dbexpect.
|
4
|
+
#
|
5
|
+
# dbexpect is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# dbexpect is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with dbexpect. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
18
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
19
|
+
require 'rspec'
|
20
|
+
require 'dbexpect'
|
21
|
+
|
22
|
+
# Requires supporting files with custom matchers and macros, etc,
|
23
|
+
# in ./support/ and its subdirectories.
|
24
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
25
|
+
|
26
|
+
RSpec.configure do |config|
|
27
|
+
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,186 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dbexpect
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.11.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Beau Fabry
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-09-21 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: ruby-odbc
|
16
|
+
requirement: &18938120 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *18938120
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rdoc
|
27
|
+
requirement: &18952680 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3.12'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *18952680
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: bundler
|
38
|
+
requirement: &18951800 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *18951800
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: jeweler
|
49
|
+
requirement: &18950800 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.8.3
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *18950800
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: rspec
|
60
|
+
requirement: &18949940 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 2.8.0
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *18949940
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pg
|
71
|
+
requirement: &18948480 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *18948480
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: pry
|
82
|
+
requirement: &18947260 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *18947260
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: ZenTest
|
93
|
+
requirement: &18962060 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *18962060
|
102
|
+
description: As above
|
103
|
+
email: beau.fabry@c3businesssolutions.com
|
104
|
+
executables:
|
105
|
+
- dbexpect
|
106
|
+
- great-expectations
|
107
|
+
- ready-rig
|
108
|
+
extensions: []
|
109
|
+
extra_rdoc_files:
|
110
|
+
- LICENSE.txt
|
111
|
+
- README.md
|
112
|
+
files:
|
113
|
+
- .document
|
114
|
+
- .rspec
|
115
|
+
- .rvmrc
|
116
|
+
- COPYING
|
117
|
+
- Gemfile
|
118
|
+
- Gemfile.lock
|
119
|
+
- LICENSE.txt
|
120
|
+
- README.md
|
121
|
+
- Rakefile
|
122
|
+
- VERSION
|
123
|
+
- bin/dbexpect
|
124
|
+
- bin/great-expectations
|
125
|
+
- bin/ready-rig
|
126
|
+
- database.yml
|
127
|
+
- lib/dbexpect.rb
|
128
|
+
- lib/dbexpect/command_runner.rb
|
129
|
+
- lib/dbexpect/console_formatter.rb
|
130
|
+
- lib/dbexpect/d_s_l_parser.rb
|
131
|
+
- lib/dbexpect/database.rb
|
132
|
+
- lib/dbexpect/db_null.rb
|
133
|
+
- lib/dbexpect/db_sequence.rb
|
134
|
+
- lib/dbexpect/db_string.rb
|
135
|
+
- lib/dbexpect/dbexpect.rb
|
136
|
+
- lib/dbexpect/defaulting_row_set.rb
|
137
|
+
- lib/dbexpect/expectation_checker.rb
|
138
|
+
- lib/dbexpect/expectation_tree_node.rb
|
139
|
+
- lib/dbexpect/expectations/expectation.rb
|
140
|
+
- lib/dbexpect/expectations/row_count_expectation.rb
|
141
|
+
- lib/dbexpect/expectations/row_expectation.rb
|
142
|
+
- lib/dbexpect/odbc_connection.rb
|
143
|
+
- lib/dbexpect/row.rb
|
144
|
+
- lib/dbexpect/table.rb
|
145
|
+
- spec/dbexpect_integration_spec.rb
|
146
|
+
- spec/defaulting_row_set_spec.rb
|
147
|
+
- spec/expectation_checker_spec.rb
|
148
|
+
- spec/expectations/row_expectation_spec.rb
|
149
|
+
- spec/fixtures/basic_test_expected_inserts.sql
|
150
|
+
- spec/fixtures/cleanup_db.sql
|
151
|
+
- spec/fixtures/expected_output.txt
|
152
|
+
- spec/fixtures/sample_db.sql
|
153
|
+
- spec/fixtures/sample_project/database.yml
|
154
|
+
- spec/fixtures/sample_project/defaults/defaults.rb
|
155
|
+
- spec/fixtures/sample_project/tests/basic_test.rb
|
156
|
+
- spec/fixtures/sample_project/tests/test2.rb
|
157
|
+
- spec/spec_helper.rb
|
158
|
+
homepage: http://github.com/bfabry/dbexpect
|
159
|
+
licenses:
|
160
|
+
- PRIVATE
|
161
|
+
post_install_message:
|
162
|
+
rdoc_options: []
|
163
|
+
require_paths:
|
164
|
+
- lib
|
165
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
166
|
+
none: false
|
167
|
+
requirements:
|
168
|
+
- - ! '>='
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
version: '0'
|
171
|
+
segments:
|
172
|
+
- 0
|
173
|
+
hash: 4552705897019438332
|
174
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
175
|
+
none: false
|
176
|
+
requirements:
|
177
|
+
- - ! '>='
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '0'
|
180
|
+
requirements: []
|
181
|
+
rubyforge_project:
|
182
|
+
rubygems_version: 1.8.11
|
183
|
+
signing_key:
|
184
|
+
specification_version: 3
|
185
|
+
summary: Generates inserts for test data from DSL
|
186
|
+
test_files: []
|