pod4 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.hgtags +1 -0
- data/.ruby-version +1 -1
- data/Gemfile +5 -5
- data/lib/pod4/errors.rb +5 -0
- data/lib/pod4/nebulous_interface.rb +10 -11
- data/lib/pod4/pg_interface.rb +2 -2
- data/lib/pod4/tds_interface.rb +4 -2
- data/lib/pod4/typecasting.rb +1 -1
- data/lib/pod4/version.rb +1 -1
- data/pod4.gemspec +1 -21
- data/spec/common/basic_model_spec.rb +37 -45
- data/spec/common/model_plus_typecasting_spec.rb +16 -16
- data/spec/common/model_spec.rb +96 -103
- data/spec/common/nebulous_interface_spec.rb +78 -74
- data/spec/common/sequel_interface_pg_spec.rb +23 -19
- data/spec/common/sql_helper_spec.rb +24 -14
- data/spec/jruby/sequel_interface_jdbc_ms_spec.rb +24 -17
- data/spec/jruby/sequel_interface_jdbc_pg_spec.rb +30 -4
- data/spec/mri/pg_interface_spec.rb +50 -41
- data/spec/mri/sequel_interface_spec.rb +48 -53
- data/spec/mri/tds_interface_spec.rb +51 -42
- data/tags +186 -47
- metadata +3 -3
@@ -10,26 +10,30 @@ require 'time'
|
|
10
10
|
require 'bigdecimal'
|
11
11
|
|
12
12
|
|
13
|
-
|
14
|
-
set_table :customer
|
15
|
-
set_id_fld :id
|
16
|
-
end
|
17
|
-
|
18
|
-
class SchemaSequelInterfacePg < SequelInterface
|
19
|
-
set_schema :public
|
20
|
-
set_table :customer
|
21
|
-
set_id_fld :id
|
22
|
-
end
|
23
|
-
|
24
|
-
class ProdSequelInterfacePg < SequelInterface
|
25
|
-
set_table :product
|
26
|
-
set_id_fld :code
|
27
|
-
end
|
13
|
+
describe "SequelInterface (Pg)" do
|
28
14
|
|
15
|
+
let(:sequel_interface_class) do
|
16
|
+
Class.new SequelInterface do
|
17
|
+
set_table :customer
|
18
|
+
set_id_fld :id
|
19
|
+
end
|
20
|
+
end
|
29
21
|
|
22
|
+
let(:schema_interface_class) do
|
23
|
+
Class.new SequelInterface do
|
24
|
+
set_schema :public
|
25
|
+
set_table :customer
|
26
|
+
set_id_fld :id
|
27
|
+
end
|
28
|
+
end
|
30
29
|
|
30
|
+
let(:prod_interface_class) do
|
31
|
+
Class.new SequelInterface do
|
32
|
+
set_table :product
|
33
|
+
set_id_fld :code
|
34
|
+
end
|
35
|
+
end
|
31
36
|
|
32
|
-
describe TestSequelInterfacePg do
|
33
37
|
|
34
38
|
let(:data) do
|
35
39
|
d = []
|
@@ -89,8 +93,8 @@ describe TestSequelInterfacePg do
|
|
89
93
|
db
|
90
94
|
end
|
91
95
|
|
92
|
-
let(:interface) {
|
93
|
-
let(:prod_interface) {
|
96
|
+
let(:interface) { sequel_interface_class.new(db) }
|
97
|
+
let(:prod_interface) { prod_interface_class.new(db) }
|
94
98
|
|
95
99
|
|
96
100
|
before do
|
@@ -115,7 +119,7 @@ describe TestSequelInterfacePg do
|
|
115
119
|
end
|
116
120
|
|
117
121
|
it 'returns the schema plus table when the schema is set' do
|
118
|
-
ifce =
|
122
|
+
ifce = schema_interface_class.new(db)
|
119
123
|
expect( ifce.quoted_table.downcase ).to eq( %|"public"."customer"| )
|
120
124
|
end
|
121
125
|
|
@@ -3,25 +3,29 @@ require 'time'
|
|
3
3
|
require 'bigdecimal'
|
4
4
|
require 'pod4/sql_helper'
|
5
5
|
|
6
|
-
class SQLHelperTester1
|
7
|
-
include SQLHelper
|
8
6
|
|
9
|
-
|
10
|
-
def table; "polo"; end
|
11
|
-
def id_fld; "foo"; end
|
12
|
-
end
|
7
|
+
describe "SQLHelper" do
|
13
8
|
|
14
|
-
|
15
|
-
|
9
|
+
let(:tester1_class) do
|
10
|
+
Class.new do
|
11
|
+
include SQLHelper
|
16
12
|
|
17
|
-
|
18
|
-
end
|
13
|
+
def schema; "marco"; end
|
14
|
+
def table; "polo"; end
|
15
|
+
def id_fld; "foo"; end
|
16
|
+
end
|
17
|
+
end
|
19
18
|
|
19
|
+
let(:tester2_class) do
|
20
|
+
Class.new do
|
21
|
+
include SQLHelper
|
20
22
|
|
21
|
-
|
23
|
+
def table; "polo"; end
|
24
|
+
end
|
25
|
+
end
|
22
26
|
|
23
|
-
let(:tester1) {
|
24
|
-
let(:tester2) {
|
27
|
+
let(:tester1) {tester1_class.new}
|
28
|
+
let(:tester2) {tester2_class.new}
|
25
29
|
|
26
30
|
|
27
31
|
describe "quoted_table" do
|
@@ -89,7 +93,13 @@ describe "SQLHelper" do
|
|
89
93
|
|
90
94
|
it "returns time wrapped in a single quote" do
|
91
95
|
tm = Time.parse(datetime)
|
92
|
-
|
96
|
+
|
97
|
+
# Ruby Time.parse swallows the given timezone and converts prior to Ruby 2.2
|
98
|
+
if RUBY_VERSION =~ /^2.[01]/
|
99
|
+
expect( tester1.send :quote, tm ).to match /'2055.12.31[T ]07.23.36 ?\+00:?00'/
|
100
|
+
else
|
101
|
+
expect( tester1.send :quote, tm ).to match dtmatch
|
102
|
+
end
|
93
103
|
end
|
94
104
|
|
95
105
|
it "returns a BigDecimal as a float" do
|
@@ -13,24 +13,31 @@ require 'bigdecimal'
|
|
13
13
|
require 'sqljdbc4.jar' # from jdbc-mssqlserver
|
14
14
|
|
15
15
|
|
16
|
-
|
17
|
-
set_table :customer
|
18
|
-
set_id_fld :id
|
19
|
-
end
|
16
|
+
describe "SequelInterface (JDBC/MSSQL)" do
|
20
17
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
18
|
+
let(:sequel_interface_class) do
|
19
|
+
Class.new SequelInterface do
|
20
|
+
set_table :customer
|
21
|
+
set_id_fld :id
|
22
|
+
end
|
23
|
+
end
|
26
24
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
25
|
+
let(:schema_interface_class) do
|
26
|
+
Class.new SequelInterface do
|
27
|
+
set_schema :public
|
28
|
+
set_table :customer
|
29
|
+
set_id_fld :id
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
let(:prod_interface_class) do
|
34
|
+
Class.new SequelInterface do
|
35
|
+
set_table :product
|
36
|
+
set_id_fld :code
|
37
|
+
end
|
38
|
+
end
|
31
39
|
|
32
40
|
|
33
|
-
describe TestSequelInterfaceMs do
|
34
41
|
|
35
42
|
let(:data) do
|
36
43
|
d = []
|
@@ -101,8 +108,8 @@ describe TestSequelInterfaceMs do
|
|
101
108
|
db
|
102
109
|
end
|
103
110
|
|
104
|
-
let(:interface) {
|
105
|
-
let(:prod_interface) {
|
111
|
+
let(:interface) { sequel_interface_class.new(db) }
|
112
|
+
let(:prod_interface) { prod_interface_class.new(db) }
|
106
113
|
|
107
114
|
before do
|
108
115
|
# TRUNCATE TABLE also resets the identity counter
|
@@ -123,7 +130,7 @@ describe TestSequelInterfaceMs do
|
|
123
130
|
end
|
124
131
|
|
125
132
|
it 'returns the schema plus table when the schema is set' do
|
126
|
-
ifce =
|
133
|
+
ifce = schema_interface_class.new(db)
|
127
134
|
expect( ifce.quoted_table.downcase ).to eq( %|[public].[customer]| )
|
128
135
|
end
|
129
136
|
|
@@ -13,6 +13,8 @@ require 'bigdecimal'
|
|
13
13
|
# the MSSQL one. But no --- and presumably Jeremy Evans has his reasons.
|
14
14
|
require 'jdbc/postgres'
|
15
15
|
|
16
|
+
|
17
|
+
=begin
|
16
18
|
class TestSequelInterfacePg < SequelInterface
|
17
19
|
set_table :customer
|
18
20
|
set_id_fld :id
|
@@ -28,10 +30,34 @@ class ProdSequelInterfacePg < SequelInterface
|
|
28
30
|
set_table :product
|
29
31
|
set_id_fld :code
|
30
32
|
end
|
33
|
+
=end
|
34
|
+
|
35
|
+
|
31
36
|
|
37
|
+
describe "SequelInterface (JDBC/Pg)" do
|
38
|
+
|
39
|
+
let(:sequel_interface_class) do
|
40
|
+
Class.new SequelInterface do
|
41
|
+
set_table :customer
|
42
|
+
set_id_fld :id
|
43
|
+
end
|
44
|
+
end
|
32
45
|
|
46
|
+
let(:schema_interface_class) do
|
47
|
+
Class.new SequelInterface do
|
48
|
+
set_schema :public
|
49
|
+
set_table :customer
|
50
|
+
set_id_fld :id
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
let(:prod_interface_class) do
|
55
|
+
Class.new SequelInterface do
|
56
|
+
set_table :product
|
57
|
+
set_id_fld :code
|
58
|
+
end
|
59
|
+
end
|
33
60
|
|
34
|
-
describe TestSequelInterfacePg do
|
35
61
|
|
36
62
|
let(:data) do
|
37
63
|
d = []
|
@@ -91,8 +117,8 @@ describe TestSequelInterfacePg do
|
|
91
117
|
db
|
92
118
|
end
|
93
119
|
|
94
|
-
let(:interface) {
|
95
|
-
let(:prod_interface) {
|
120
|
+
let(:interface) { sequel_interface_class.new(db) }
|
121
|
+
let(:prod_interface) { prod_interface_class.new(db) }
|
96
122
|
|
97
123
|
before do
|
98
124
|
# TRUNCATE TABLE also resets the identity counter
|
@@ -117,7 +143,7 @@ describe TestSequelInterfacePg do
|
|
117
143
|
end
|
118
144
|
|
119
145
|
it 'returns the schema plus table when the schema is set' do
|
120
|
-
ifce =
|
146
|
+
ifce = schema_interface_class.new(db)
|
121
147
|
expect( ifce.quoted_table.downcase ).to eq( %|"public"."customer"| )
|
122
148
|
end
|
123
149
|
|
@@ -5,35 +5,44 @@ require_relative '../common/shared_examples_for_interface'
|
|
5
5
|
require_relative '../fixtures/database'
|
6
6
|
|
7
7
|
|
8
|
-
|
9
|
-
set_table :customer
|
10
|
-
set_id_fld :id
|
8
|
+
describe "PgInterface" do
|
11
9
|
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
let(:pg_interface_class) do
|
11
|
+
Class.new PgInterface do
|
12
|
+
set_table :customer
|
13
|
+
set_id_fld :id
|
15
14
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
set_id_fld :id
|
20
|
-
end
|
15
|
+
def stop; close; end # We open a lot of connections, unusually
|
16
|
+
end
|
17
|
+
end
|
21
18
|
|
22
|
-
|
23
|
-
|
24
|
-
|
19
|
+
let(:schema_interface_class) do
|
20
|
+
Class.new PgInterface do
|
21
|
+
set_schema :public
|
22
|
+
set_table :customer
|
23
|
+
set_id_fld :id
|
24
|
+
end
|
25
|
+
end
|
25
26
|
|
26
|
-
|
27
|
-
|
28
|
-
|
27
|
+
let(:prod_interface_class) do
|
28
|
+
Class.new PgInterface do
|
29
|
+
set_table :product
|
30
|
+
set_id_fld :code
|
31
|
+
end
|
32
|
+
end
|
29
33
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
end
|
34
|
+
let(:bad_interface_class1) do
|
35
|
+
Class.new PgInterface do
|
36
|
+
set_table :customer
|
37
|
+
end
|
38
|
+
end
|
34
39
|
|
40
|
+
let(:bad_interface_class2) do
|
41
|
+
Class.new PgInterface do
|
42
|
+
set_id_fld :id
|
43
|
+
end
|
44
|
+
end
|
35
45
|
|
36
|
-
describe TestPgInterface do
|
37
46
|
|
38
47
|
def db_setup(connect)
|
39
48
|
client = PG.connect(connect)
|
@@ -114,11 +123,11 @@ describe TestPgInterface do
|
|
114
123
|
|
115
124
|
|
116
125
|
let(:interface) do
|
117
|
-
|
126
|
+
pg_interface_class.new(@connect_hash)
|
118
127
|
end
|
119
128
|
|
120
129
|
let(:prod_interface) do
|
121
|
-
|
130
|
+
prod_interface_class.new(@connect_hash)
|
122
131
|
end
|
123
132
|
|
124
133
|
#####
|
@@ -127,7 +136,7 @@ describe TestPgInterface do
|
|
127
136
|
it_behaves_like 'an interface' do
|
128
137
|
|
129
138
|
let(:interface) do
|
130
|
-
|
139
|
+
pg_interface_class.new(@connect_hash)
|
131
140
|
end
|
132
141
|
|
133
142
|
let(:record) { {name: 'Barney'} }
|
@@ -138,7 +147,7 @@ describe TestPgInterface do
|
|
138
147
|
|
139
148
|
describe 'PgInterface.set_schema' do
|
140
149
|
it 'takes one argument' do
|
141
|
-
expect(
|
150
|
+
expect( pg_interface_class ).to respond_to(:set_schema).with(1).argument
|
142
151
|
end
|
143
152
|
end
|
144
153
|
##
|
@@ -146,12 +155,12 @@ describe TestPgInterface do
|
|
146
155
|
|
147
156
|
describe 'PgInterface.schema' do
|
148
157
|
it 'returns the schema' do
|
149
|
-
expect(
|
158
|
+
expect( schema_interface_class.schema ).to eq :public
|
150
159
|
end
|
151
160
|
|
152
161
|
it 'is optional' do
|
153
|
-
expect{
|
154
|
-
expect(
|
162
|
+
expect{ pg_interface_class.schema }.not_to raise_exception
|
163
|
+
expect( pg_interface_class.schema ).to eq nil
|
155
164
|
end
|
156
165
|
end
|
157
166
|
##
|
@@ -159,7 +168,7 @@ describe TestPgInterface do
|
|
159
168
|
|
160
169
|
describe 'PgInterface.set_table' do
|
161
170
|
it 'takes one argument' do
|
162
|
-
expect(
|
171
|
+
expect( pg_interface_class ).to respond_to(:set_table).with(1).argument
|
163
172
|
end
|
164
173
|
end
|
165
174
|
##
|
@@ -167,7 +176,7 @@ describe TestPgInterface do
|
|
167
176
|
|
168
177
|
describe 'PgInterface.table' do
|
169
178
|
it 'returns the table' do
|
170
|
-
expect(
|
179
|
+
expect( pg_interface_class.table ).to eq :customer
|
171
180
|
end
|
172
181
|
end
|
173
182
|
##
|
@@ -175,7 +184,7 @@ describe TestPgInterface do
|
|
175
184
|
|
176
185
|
describe 'PgInterface.set_id_fld' do
|
177
186
|
it 'takes one argument' do
|
178
|
-
expect(
|
187
|
+
expect( pg_interface_class ).to respond_to(:set_id_fld).with(1).argument
|
179
188
|
end
|
180
189
|
end
|
181
190
|
##
|
@@ -183,7 +192,7 @@ describe TestPgInterface do
|
|
183
192
|
|
184
193
|
describe 'PgInterface.id_fld' do
|
185
194
|
it 'returns the ID field name' do
|
186
|
-
expect(
|
195
|
+
expect( pg_interface_class.id_fld ).to eq :id
|
187
196
|
end
|
188
197
|
end
|
189
198
|
##
|
@@ -192,11 +201,11 @@ describe TestPgInterface do
|
|
192
201
|
describe '#new' do
|
193
202
|
|
194
203
|
it 'requires a TinyTds connection string' do
|
195
|
-
expect{
|
196
|
-
expect{
|
197
|
-
expect{
|
204
|
+
expect{ pg_interface_class.new }.to raise_exception ArgumentError
|
205
|
+
expect{ pg_interface_class.new(nil) }.to raise_exception ArgumentError
|
206
|
+
expect{ pg_interface_class.new('foo') }.to raise_exception ArgumentError
|
198
207
|
|
199
|
-
expect{
|
208
|
+
expect{ pg_interface_class.new(@connect_hash) }.not_to raise_exception
|
200
209
|
end
|
201
210
|
|
202
211
|
end
|
@@ -210,7 +219,7 @@ describe TestPgInterface do
|
|
210
219
|
end
|
211
220
|
|
212
221
|
it 'returns the schema plus table when the schema is set' do
|
213
|
-
ifce =
|
222
|
+
ifce = schema_interface_class.new(@connect_hash)
|
214
223
|
expect( ifce.quoted_table ).to eq( %|"public"."customer"| )
|
215
224
|
end
|
216
225
|
|
@@ -553,9 +562,9 @@ describe TestPgInterface do
|
|
553
562
|
before { fill_data(interface) }
|
554
563
|
|
555
564
|
it 'requires an SQL string' do
|
556
|
-
expect{ interface.selectp
|
557
|
-
expect{ interface.selectp(nil)
|
558
|
-
expect{ interface.selectp(14)
|
565
|
+
expect{ interface.selectp }.to raise_exception ArgumentError
|
566
|
+
expect{ interface.selectp(nil) }.to raise_exception ArgumentError
|
567
|
+
expect{ interface.selectp(14) }.to raise_exception ArgumentError
|
559
568
|
end
|
560
569
|
|
561
570
|
it 'raises some sort of Pod4 error if it runs into problems' do
|
@@ -8,40 +8,44 @@ require 'bigdecimal'
|
|
8
8
|
require_relative '../common/shared_examples_for_interface'
|
9
9
|
|
10
10
|
|
11
|
-
class TestSequelInterface < SequelInterface
|
12
|
-
set_table :customer
|
13
|
-
set_id_fld :id
|
14
|
-
end
|
15
11
|
|
16
|
-
|
17
|
-
set_schema :public
|
18
|
-
set_table :customer
|
19
|
-
set_id_fld :id
|
20
|
-
end
|
12
|
+
describe "SequelInterface" do
|
21
13
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
end
|
14
|
+
let(:sequel_interface_class) do
|
15
|
+
Class.new SequelInterface do
|
16
|
+
set_table :customer
|
17
|
+
set_id_fld :id
|
18
|
+
end
|
19
|
+
end
|
29
20
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
21
|
+
let(:schema_interface_class) do
|
22
|
+
Class.new SequelInterface do
|
23
|
+
set_schema :public
|
24
|
+
set_table :customer
|
25
|
+
set_id_fld :id
|
26
|
+
end
|
27
|
+
end
|
34
28
|
|
29
|
+
let(:prod_interface_class) do
|
30
|
+
Class.new SequelInterface do
|
31
|
+
set_table :product
|
32
|
+
set_id_fld :code
|
33
|
+
end
|
34
|
+
end
|
35
35
|
|
36
|
+
let(:bad_interface_class1) do
|
37
|
+
Class.new SequelInterface do
|
38
|
+
set_table :customer
|
39
|
+
end
|
40
|
+
end
|
36
41
|
|
42
|
+
let(:bad_interface_class2) do
|
43
|
+
Class.new SequelInterface do
|
44
|
+
set_id_fld :id
|
45
|
+
end
|
46
|
+
end
|
37
47
|
|
38
|
-
describe TestSequelInterface do
|
39
48
|
|
40
|
-
# We actually connect to a special test database for this. I don't generally
|
41
|
-
# like unit tests to involve other classes at all, but otherwise we are
|
42
|
-
# hardly testing anything, and in any case we do need to test that this class
|
43
|
-
# successfully interfaces with Sequel. We can't really do that without
|
44
|
-
# talking to a database.
|
45
49
|
|
46
50
|
let(:data) do
|
47
51
|
d = []
|
@@ -99,8 +103,8 @@ describe TestSequelInterface do
|
|
99
103
|
db
|
100
104
|
end
|
101
105
|
|
102
|
-
let(:interface) {
|
103
|
-
let(:prod_interface) {
|
106
|
+
let(:interface) { sequel_interface_class.new(db) }
|
107
|
+
let(:prod_interface) { prod_interface_class.new(db) }
|
104
108
|
|
105
109
|
before do
|
106
110
|
fill_data(interface)
|
@@ -122,7 +126,7 @@ describe TestSequelInterface do
|
|
122
126
|
BigDecimal :price, :size=>[10.2]
|
123
127
|
end
|
124
128
|
|
125
|
-
|
129
|
+
sequel_interface_class.new(db2)
|
126
130
|
end
|
127
131
|
|
128
132
|
let(:record) { {name: 'Barney', price: 1.11} }
|
@@ -132,7 +136,7 @@ describe TestSequelInterface do
|
|
132
136
|
|
133
137
|
describe 'SequelInterface.set_schema' do
|
134
138
|
it 'takes one argument' do
|
135
|
-
expect(
|
139
|
+
expect( sequel_interface_class ).to respond_to(:set_schema).with(1).argument
|
136
140
|
end
|
137
141
|
end
|
138
142
|
##
|
@@ -140,12 +144,12 @@ describe TestSequelInterface do
|
|
140
144
|
|
141
145
|
describe 'SequelInterface.schema' do
|
142
146
|
it 'returns the schema' do
|
143
|
-
expect(
|
147
|
+
expect( schema_interface_class.schema ).to eq :public
|
144
148
|
end
|
145
149
|
|
146
150
|
it 'is optional' do
|
147
|
-
expect{
|
148
|
-
expect(
|
151
|
+
expect{ sequel_interface_class.schema }.not_to raise_exception
|
152
|
+
expect( sequel_interface_class.schema ).to eq nil
|
149
153
|
end
|
150
154
|
end
|
151
155
|
##
|
@@ -153,7 +157,7 @@ describe TestSequelInterface do
|
|
153
157
|
|
154
158
|
describe 'SequelInterface.set_table' do
|
155
159
|
it 'takes one argument' do
|
156
|
-
expect(
|
160
|
+
expect( sequel_interface_class ).to respond_to(:set_table).with(1).argument
|
157
161
|
end
|
158
162
|
end
|
159
163
|
##
|
@@ -161,7 +165,7 @@ describe TestSequelInterface do
|
|
161
165
|
|
162
166
|
describe 'SequelInterface.table' do
|
163
167
|
it 'returns the table' do
|
164
|
-
expect(
|
168
|
+
expect( sequel_interface_class.table ).to eq :customer
|
165
169
|
end
|
166
170
|
end
|
167
171
|
##
|
@@ -169,7 +173,7 @@ describe TestSequelInterface do
|
|
169
173
|
|
170
174
|
describe 'SequelInterface.set_id_fld' do
|
171
175
|
it 'takes one argument' do
|
172
|
-
expect(
|
176
|
+
expect( sequel_interface_class ).to respond_to(:set_id_fld).with(1).argument
|
173
177
|
end
|
174
178
|
end
|
175
179
|
##
|
@@ -177,7 +181,7 @@ describe TestSequelInterface do
|
|
177
181
|
|
178
182
|
describe 'SequelInterface.id_fld' do
|
179
183
|
it 'returns the ID field name' do
|
180
|
-
expect(
|
184
|
+
expect( sequel_interface_class.id_fld ).to eq :id
|
181
185
|
end
|
182
186
|
end
|
183
187
|
##
|
@@ -186,17 +190,17 @@ describe TestSequelInterface do
|
|
186
190
|
describe '#new' do
|
187
191
|
|
188
192
|
it 'requires a Sequel DB object' do
|
189
|
-
expect{
|
190
|
-
expect{
|
191
|
-
expect{
|
193
|
+
expect{ sequel_interface_class.new }.to raise_exception ArgumentError
|
194
|
+
expect{ sequel_interface_class.new(nil) }.to raise_exception ArgumentError
|
195
|
+
expect{ sequel_interface_class.new('foo') }.to raise_exception ArgumentError
|
192
196
|
|
193
|
-
expect{
|
197
|
+
expect{ sequel_interface_class.new(db) }.not_to raise_exception
|
194
198
|
end
|
195
199
|
|
196
200
|
it 'requires the table and id field to be defined in the class' do
|
197
201
|
expect{ SequelInterface.new(db) }.to raise_exception Pod4Error
|
198
|
-
expect{
|
199
|
-
expect{
|
202
|
+
expect{ bad_interface_class1.new(db) }.to raise_exception Pod4Error
|
203
|
+
expect{ bad_interface_class2.new(db) }.to raise_exception Pod4Error
|
200
204
|
end
|
201
205
|
|
202
206
|
end
|
@@ -210,7 +214,7 @@ describe TestSequelInterface do
|
|
210
214
|
end
|
211
215
|
|
212
216
|
it 'returns the schema plus table when the schema is set' do
|
213
|
-
ifce =
|
217
|
+
ifce = schema_interface_class.new(db)
|
214
218
|
expect( ifce.quoted_table ).to eq( %|`public`.`customer`| )
|
215
219
|
end
|
216
220
|
|
@@ -340,15 +344,6 @@ describe TestSequelInterface do
|
|
340
344
|
expect{ interface.list(name: 'Barney') }.not_to raise_exception
|
341
345
|
end
|
342
346
|
|
343
|
-
=begin
|
344
|
-
it 'returns an array of Octothorpes that match the records' do
|
345
|
-
# convert each OT to a hash and remove the ID key
|
346
|
-
arr = interface.list.map {|ot| x = ot.to_h; x.delete(:id); x }
|
347
|
-
|
348
|
-
expect( arr ).to match_array data
|
349
|
-
end
|
350
|
-
=end
|
351
|
-
|
352
347
|
it 'returns an array of Octothorpes that match the records' do
|
353
348
|
arr = interface.list.map {|ot| x = ot.to_h}
|
354
349
|
|