db_mod 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,90 @@
1
+ require 'spec_helper'
2
+
3
+ class DbModTest
4
+ include DbMod
5
+
6
+ def connect(options = {})
7
+ db_connect options
8
+ end
9
+
10
+ def query!
11
+ query 'SELECT 1'
12
+ end
13
+
14
+ def conn!
15
+ conn
16
+ end
17
+
18
+ def use_conn(conn)
19
+ self.conn = conn
20
+ end
21
+ end
22
+
23
+ describe DbMod do
24
+ subject { DbModTest.new }
25
+
26
+ before do
27
+ @conn = instance_double 'PGconn'
28
+ allow(subject).to receive(:db_connect!).and_return @conn
29
+ end
30
+
31
+ describe '#db_connect' do
32
+ it 'accepts connection options' do
33
+ options = {
34
+ db: 'testdb',
35
+ host: 'testhost',
36
+ port: 5432,
37
+ user: 'testuser',
38
+ pass: 'testpass'
39
+ }
40
+
41
+ expect(subject).to receive(:db_connect).with(options)
42
+ subject.connect(options)
43
+ end
44
+
45
+ it 'fills in default values' do
46
+ expect(subject).to receive(:db_connect!).with(
47
+ db: 'testdb',
48
+ port: 5432,
49
+ user: ENV['USER'],
50
+ pass: 'trusted?'
51
+ )
52
+ subject.connect(db: 'testdb')
53
+ end
54
+
55
+ specify ':db is mandatory' do
56
+ expect { subject.connect }.to raise_exception ArgumentError
57
+ end
58
+
59
+ it 'is protected' do
60
+ expect { subject.db_connect }.to raise_exception NoMethodError
61
+ end
62
+
63
+ it 'must be called before the connection can be used' do
64
+ expect { subject.query! }.to raise_exception(
65
+ DbMod::Exceptions::ConnectionNotSet
66
+ )
67
+ expect(subject.conn!).to be_nil
68
+
69
+ subject.connect db: 'testdb'
70
+
71
+ expect(@conn).to receive(:query).with('SELECT 1')
72
+ expect { subject.query! }.not_to raise_exception
73
+ expect(subject.conn!).to be(@conn)
74
+ end
75
+ end
76
+
77
+ describe '#conn=' do
78
+ it 'is protected' do
79
+ expect { subject.conn = @conn }.to raise_exception NoMethodError
80
+ end
81
+
82
+ it 'can be used instead of db_connect for initialization' do
83
+ subject.use_conn(@conn)
84
+ expect(subject.conn!).to be(@conn)
85
+
86
+ expect(@conn).to receive(:query).with('SELECT 1')
87
+ expect { subject.query! }.not_to raise_exception
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,15 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+
4
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
+
7
+ require 'db_mod'
8
+
9
+ require 'bundler'
10
+ Bundler.setup :default, :test
11
+ require 'pg'
12
+ require 'byebug' unless RUBY_VERSION < '2.0.0'
13
+
14
+ # This is used as a default value
15
+ ENV['USER'] ||= 'env_user'
metadata ADDED
@@ -0,0 +1,177 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: db_mod
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Doug Hammond
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-10-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pg
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: docile
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: simplecov
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec-mocks
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: yard
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: bundler
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Organize your database-intensive batch scripts with db_mod.
112
+ email:
113
+ - d.lakehammond@gmail.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - ".gitignore"
119
+ - ".rspec"
120
+ - ".rubocop.yml"
121
+ - ".travis.yml"
122
+ - CODE_OF_CONDUCT.md
123
+ - Gemfile
124
+ - Guardfile
125
+ - LICENSE
126
+ - README.md
127
+ - Rakefile
128
+ - db_mod.gemspec
129
+ - lib/db_mod.rb
130
+ - lib/db_mod/create.rb
131
+ - lib/db_mod/exceptions.rb
132
+ - lib/db_mod/exceptions/already_in_transaction.rb
133
+ - lib/db_mod/exceptions/base.rb
134
+ - lib/db_mod/exceptions/connection_not_set.rb
135
+ - lib/db_mod/exceptions/duplicate_statement_name.rb
136
+ - lib/db_mod/statements.rb
137
+ - lib/db_mod/statements/params.rb
138
+ - lib/db_mod/statements/prepared.rb
139
+ - lib/db_mod/statements/statement.rb
140
+ - lib/db_mod/transaction.rb
141
+ - lib/db_mod/version.rb
142
+ - spec/db_mod/create_spec.rb
143
+ - spec/db_mod/statements/prepared_spec.rb
144
+ - spec/db_mod/transaction_spec.rb
145
+ - spec/db_mod_spec.rb
146
+ - spec/spec_helper.rb
147
+ homepage:
148
+ licenses:
149
+ - MIT
150
+ metadata: {}
151
+ post_install_message:
152
+ rdoc_options: []
153
+ require_paths:
154
+ - lib
155
+ required_ruby_version: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ required_rubygems_version: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ requirements: []
166
+ rubyforge_project:
167
+ rubygems_version: 2.4.8
168
+ signing_key:
169
+ specification_version: 4
170
+ summary: Ruby framework for building modular db-access libs.
171
+ test_files:
172
+ - spec/db_mod/create_spec.rb
173
+ - spec/db_mod/statements/prepared_spec.rb
174
+ - spec/db_mod/transaction_spec.rb
175
+ - spec/db_mod_spec.rb
176
+ - spec/spec_helper.rb
177
+ has_rdoc: