pod4 0.8.0 → 0.8.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.
- 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
|
|