linkage 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -1
- data/Gemfile.lock +19 -8
- data/README.markdown +8 -5
- data/Rakefile +0 -8
- data/VERSION +1 -1
- data/lib/linkage/configuration.rb +245 -157
- data/lib/linkage/data.rb +0 -24
- data/lib/linkage/dataset.rb +26 -183
- data/lib/linkage/field.rb +0 -3
- data/lib/linkage/field_set.rb +16 -0
- data/lib/linkage/function.rb +0 -7
- data/lib/linkage/result_set.rb +68 -0
- data/lib/linkage/runner/single_threaded.rb +29 -39
- data/lib/linkage/runner.rb +8 -36
- data/lib/linkage.rb +3 -1
- data/linkage.gemspec +14 -17
- data/test/helper.rb +1 -1
- data/test/integration/test_cross_linkage.rb +6 -2
- data/test/integration/test_dataset.rb +30 -0
- data/test/integration/test_dual_linkage.rb +9 -4
- data/test/integration/test_self_linkage.rb +23 -8
- data/test/unit/test_configuration.rb +90 -72
- data/test/unit/test_data.rb +0 -61
- data/test/unit/test_dataset.rb +19 -319
- data/test/unit/test_field.rb +0 -6
- data/test/unit/test_field_set.rb +31 -0
- data/test/unit/test_function.rb +6 -30
- data/test/unit/test_result_set.rb +18 -0
- data/test/unit/test_runner.rb +20 -5
- metadata +57 -41
- data/lib/linkage/expectation.rb +0 -138
- data/test/unit/test_expectation.rb +0 -390
data/test/unit/test_dataset.rb
CHANGED
@@ -2,336 +2,36 @@ require 'helper'
|
|
2
2
|
|
3
3
|
class UnitTests::TestDataset < Test::Unit::TestCase
|
4
4
|
def setup
|
5
|
-
|
6
|
-
Sequel.stubs(:connect).yields(@database)
|
5
|
+
super
|
7
6
|
@schema = [
|
8
7
|
[:id, {:allow_null=>true, :default=>nil, :primary_key=>true, :db_type=>"integer", :type=>:integer, :ruby_default=>nil}],
|
9
8
|
[:first_name, {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"varchar(255)", :type=>:string, :ruby_default=>nil}],
|
10
9
|
[:last_name, {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"varchar(255)", :type=>:string, :ruby_default=>nil}]
|
11
10
|
]
|
12
|
-
@
|
13
|
-
@
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
Linkage::Field.stubs(:new).with(:id, kind_of(Hash)).returns(@id_field)
|
18
|
-
@first_name_field = stub("first_name field", :dataset= => nil, :name => :first_name, :to_expr => :first_name)
|
19
|
-
Linkage::Field.stubs(:new).with(:first_name, kind_of(Hash)).returns(@first_name_field)
|
20
|
-
@last_name_field = stub("last_name field", :dataset= => nil, :name => :last_name, :to_expr => :last_name)
|
21
|
-
Linkage::Field.stubs(:new).with(:last_name, kind_of(Hash)).returns(@last_name_field)
|
22
|
-
end
|
23
|
-
|
24
|
-
def expr(&block)
|
25
|
-
Sequel.virtual_row(&block)
|
11
|
+
@dataset = stub('Sequel dataset')
|
12
|
+
@database = stub('database', :schema => @schema, :[] => @dataset)
|
13
|
+
Sequel.stubs(:connect).returns(@database)
|
14
|
+
@field_set = stub("field set")
|
15
|
+
Linkage::FieldSet.stubs(:new).returns(@field_set)
|
26
16
|
end
|
27
17
|
|
28
18
|
test "initialize with uri and table name" do
|
29
|
-
Sequel.expects(:connect).with(
|
30
|
-
@database.expects(:schema).with(:
|
31
|
-
|
32
|
-
Linkage::
|
33
|
-
Linkage::
|
34
|
-
Linkage::Field.expects(:new).with(*@schema[2]).returns(mock(:dataset= => nil))
|
35
|
-
|
36
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz")
|
37
|
-
assert_equal primary_key_field, ds.primary_key
|
38
|
-
end
|
39
|
-
|
40
|
-
test "initialize with sequel options" do
|
41
|
-
Sequel.expects(:connect).with("foo:/bar", :junk => 123).yields(@database)
|
42
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz", :junk => 123)
|
43
|
-
end
|
44
|
-
|
45
|
-
test "dataset id increments" do
|
46
|
-
dataset_1 = Linkage::Dataset.new("foo:/bar", "baz")
|
47
|
-
assert_kind_of Fixnum, dataset_1.id
|
48
|
-
dataset_2 = Linkage::Dataset.new("foo:/qux", "corge")
|
49
|
-
assert_equal dataset_1.id + 1, dataset_2.id
|
50
|
-
end
|
51
|
-
|
52
|
-
test "== compares uri and table name" do
|
53
|
-
dataset_1 = Linkage::Dataset.new("foo:/bar", "baz")
|
54
|
-
dataset_2 = Linkage::Dataset.new("foo:/bar", "baz")
|
55
|
-
dataset_3 = Linkage::Dataset.new("foo:/qux", "corge")
|
56
|
-
assert_equal dataset_1, dataset_2
|
57
|
-
assert_not_equal dataset_1, dataset_3
|
58
|
-
end
|
59
|
-
|
60
|
-
test "dup" do
|
61
|
-
dataset_1 = Linkage::Dataset.new("foo:/bar", "baz")
|
62
|
-
|
63
|
-
ds = stub('new dataset')
|
64
|
-
Linkage::Dataset.expects(:new).with('foo:/bar', :baz).returns(ds)
|
65
|
-
dataset_2 = dataset_1.dup
|
66
|
-
assert_equal ds, dataset_2
|
67
|
-
end
|
68
|
-
|
69
|
-
test "clone doesn't shallow copy fields" do
|
70
|
-
field_1 = stub('field 1', :name => :id, :dataset= => nil)
|
71
|
-
Linkage::Field.expects(:new).with(*@schema[0]).returns(field_1)
|
72
|
-
field_2 = stub('field 2', :dataset= => nil)
|
73
|
-
Linkage::Field.expects(:new).with(*@schema[1]).returns(field_2)
|
74
|
-
field_3 = stub('field 3', :dataset= => nil)
|
75
|
-
Linkage::Field.expects(:new).with(*@schema[2]).returns(field_3)
|
76
|
-
dataset_1 = Linkage::Dataset.new("foo:/bar", "baz")
|
77
|
-
|
78
|
-
field_1.expects(:clone).returns(mock('field 1 clone', :dataset= => nil))
|
79
|
-
field_2.expects(:clone).returns(mock('field 2 clone', :dataset= => nil))
|
80
|
-
field_3.expects(:clone).returns(mock('field 3 clone', :dataset= => nil))
|
81
|
-
dataset_2 = dataset_1.clone
|
82
|
-
dataset_2.fields.each_pair do |name, field|
|
83
|
-
assert !field.equal?(dataset_1.fields[name])
|
84
|
-
end
|
85
|
-
assert !dataset_2.primary_key.equal?(dataset_1.primary_key)
|
86
|
-
assert_equal dataset_1.id, dataset_2.id
|
87
|
-
end
|
88
|
-
|
89
|
-
test "clone doesn't shallow copy @order" do
|
90
|
-
dataset_1 = Linkage::Dataset.new("foo:/bar", "baz")
|
91
|
-
dataset_2 = dataset_1.clone
|
92
|
-
dataset_1.add_order(@first_name_field)
|
93
|
-
assert_empty dataset_2.instance_variable_get(:@order)
|
94
|
-
end
|
95
|
-
|
96
|
-
test "clone doesn't shallow copy @select" do
|
97
|
-
dataset_1 = Linkage::Dataset.new("foo:/bar", "baz")
|
98
|
-
dataset_2 = dataset_1.clone
|
99
|
-
dataset_1.add_select(@first_name_field)
|
100
|
-
assert_empty dataset_2.instance_variable_get(:@select)
|
101
|
-
end
|
102
|
-
|
103
|
-
test "clone doesn't shallow copy @filter" do
|
104
|
-
dataset_1 = Linkage::Dataset.new("foo:/bar", "baz")
|
105
|
-
dataset_2 = dataset_1.clone
|
106
|
-
dataset_1.add_filter(@first_name_field, :==, "foo")
|
107
|
-
assert_empty dataset_2.instance_variable_get(:@filter)
|
108
|
-
end
|
109
|
-
|
110
|
-
test "add_order with field, then each" do
|
111
|
-
field = stub_field('field', :name => :last_name, :to_expr => :last_name)
|
112
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz")
|
113
|
-
ds.add_order(field)
|
114
|
-
@dataset.expects(:order).with(:last_name).returns(@dataset)
|
115
|
-
row = {:id => 123, :last_name => 'foo'}
|
116
|
-
@dataset.expects(:each).yields(row)
|
117
|
-
|
118
|
-
ran = false
|
119
|
-
ds.each do |yielded_row|
|
120
|
-
ran = true
|
121
|
-
assert_equal({:pk => 123, :values => {:last_name => 'foo'}}, yielded_row)
|
122
|
-
end
|
123
|
-
assert ran
|
124
|
-
end
|
125
|
-
|
126
|
-
test "add_order with function, then each" do
|
127
|
-
expr = stub('expression')
|
128
|
-
func = stub_function('func', :name => :trim_stuff, :to_expr => expr)
|
129
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz")
|
130
|
-
ds.add_order(func)
|
131
|
-
@dataset.expects(:order).with(expr).returns(@dataset)
|
132
|
-
row = {:id => 123, :trim_stuff => 'foo'}
|
133
|
-
@dataset.expects(:each).yields(row)
|
134
|
-
|
135
|
-
ran = false
|
136
|
-
ds.each do |yielded_row|
|
137
|
-
ran = true
|
138
|
-
assert_equal({:pk => 123, :values => {:trim_stuff => 'foo'}}, yielded_row)
|
139
|
-
end
|
140
|
-
assert ran
|
141
|
-
end
|
142
|
-
|
143
|
-
test "add_order descending, then each" do
|
144
|
-
field = stub_field('field', :name => :last_name, :to_expr => :last_name)
|
145
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz")
|
146
|
-
ds.add_order(field, :desc)
|
147
|
-
@dataset.expects(:order).with(:last_name.desc).returns(@dataset)
|
148
|
-
row = {:id => 123, :last_name => 'foo'}
|
149
|
-
@dataset.expects(:each).yields(row)
|
150
|
-
|
151
|
-
ran = false
|
152
|
-
ds.each do |yielded_row|
|
153
|
-
ran = true
|
154
|
-
assert_equal({:pk => 123, :values => {:last_name => 'foo'}}, yielded_row)
|
155
|
-
end
|
156
|
-
assert ran
|
157
|
-
end
|
158
|
-
|
159
|
-
test "add_order weeds out field duplicates" do
|
160
|
-
field = stub_field('field', :name => :last_name, :to_expr => :last_name)
|
161
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz")
|
162
|
-
ds.add_order(field)
|
163
|
-
ds.add_order(field)
|
164
|
-
@dataset.expects(:order).with(:last_name).returns(@dataset)
|
165
|
-
@dataset.expects(:each)
|
166
|
-
ds.each { }
|
167
|
-
end
|
168
|
-
|
169
|
-
test "add_order weeds out function duplicates" do
|
170
|
-
expr = stub('expression')
|
171
|
-
func = stub_function('func', :name => :trim_stuff, :to_expr => expr)
|
172
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz")
|
173
|
-
ds.add_order(func)
|
174
|
-
ds.add_order(func)
|
175
|
-
@dataset.expects(:order).with(expr).returns(@dataset)
|
176
|
-
@dataset.expects(:each)
|
177
|
-
ds.each { }
|
178
|
-
end
|
179
|
-
|
180
|
-
test "add_select with field, then each" do
|
181
|
-
field = stub_field('field', :name => :last_name, :to_expr => :last_name)
|
182
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz")
|
183
|
-
ds.add_select(field)
|
184
|
-
@dataset.expects(:select).with(:id, :last_name).returns(@dataset)
|
185
|
-
row = {:id => 123, :last_name => 'foo'}
|
186
|
-
@dataset.expects(:each).yields(row)
|
187
|
-
|
188
|
-
ran = false
|
189
|
-
ds.each do |yielded_row|
|
190
|
-
ran = true
|
191
|
-
assert_equal({:pk => 123, :values => {:last_name => 'foo'}}, yielded_row)
|
192
|
-
end
|
193
|
-
assert ran
|
194
|
-
end
|
195
|
-
|
196
|
-
test "add_select with an alias, then each" do
|
197
|
-
field = stub_field('field', :name => :last_name, :to_expr => :last_name)
|
198
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz")
|
199
|
-
ds.add_select(field, :junk)
|
200
|
-
@dataset.expects(:select).with(:id, :last_name.as(:junk)).returns(@dataset)
|
201
|
-
row = {:id => 123, :junk => 'foo'}
|
202
|
-
@dataset.expects(:each).yields(row)
|
203
|
-
|
204
|
-
ran = false
|
205
|
-
ds.each do |yielded_row|
|
206
|
-
ran = true
|
207
|
-
assert_equal({:pk => 123, :values => {:junk => 'foo'}}, yielded_row)
|
208
|
-
end
|
209
|
-
assert ran
|
210
|
-
end
|
211
|
-
|
212
|
-
test "add_select with function, then each" do
|
213
|
-
expr = stub('expression')
|
214
|
-
func = stub_function('func', :name => :trim_stuff, :to_expr => expr)
|
215
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz")
|
216
|
-
ds.add_select(func)
|
217
|
-
@dataset.expects(:select).with(:id, expr).returns(@dataset)
|
218
|
-
row = {:id => 123, :trim_stuff => 'foo'}
|
219
|
-
@dataset.expects(:each).yields(row)
|
220
|
-
|
221
|
-
ran = false
|
222
|
-
ds.each do |yielded_row|
|
223
|
-
ran = true
|
224
|
-
assert_equal({:pk => 123, :values => {:trim_stuff => 'foo'}}, yielded_row)
|
225
|
-
end
|
226
|
-
assert ran
|
227
|
-
end
|
228
|
-
|
229
|
-
test "add_select weeds out duplicates" do
|
230
|
-
field = stub_field('field', :name => :last_name, :to_expr => :last_name)
|
231
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz")
|
232
|
-
ds.add_select(field)
|
233
|
-
ds.add_select(field)
|
234
|
-
@dataset.expects(:select).with(:id, :last_name).returns(@dataset)
|
235
|
-
@dataset.expects(:each)
|
236
|
-
ds.each { }
|
237
|
-
end
|
238
|
-
|
239
|
-
test "add_filter with :== between field and static value, then each" do
|
240
|
-
field = stub('field', :name => :age, :to_expr => :age)
|
241
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz")
|
242
|
-
ds.add_filter(field, :==, 30)
|
243
|
-
@dataset.expects(:filter).with(:age => 30).returns(@dataset)
|
244
|
-
row = {:id => 123, :junk => 'foo'}
|
245
|
-
@dataset.expects(:each).yields(row)
|
246
|
-
|
247
|
-
ran = false
|
248
|
-
ds.each do |yielded_row|
|
249
|
-
ran = true
|
250
|
-
assert_equal({:pk => 123, :values => {:junk => 'foo'}}, yielded_row)
|
251
|
-
end
|
252
|
-
assert ran
|
253
|
-
end
|
254
|
-
|
255
|
-
test "add_filter with :== between field and static function, then each" do
|
256
|
-
field = stub_field('field', :name => :age, :to_expr => :age)
|
257
|
-
expr = stub('expression')
|
258
|
-
func = stub_function('func', :name => :func, :to_expr => expr)
|
259
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz")
|
260
|
-
ds.add_filter(field, :==, func)
|
261
|
-
@dataset.expects(:filter).with(:age => expr).returns(@dataset)
|
262
|
-
row = {:id => 123, :junk => 'foo'}
|
263
|
-
@dataset.expects(:each).yields(row)
|
264
|
-
|
265
|
-
ran = false
|
266
|
-
ds.each do |yielded_row|
|
267
|
-
ran = true
|
268
|
-
assert_equal({:pk => 123, :values => {:junk => 'foo'}}, yielded_row)
|
269
|
-
end
|
270
|
-
assert ran
|
271
|
-
end
|
272
|
-
|
273
|
-
test "add_filter with :== between two fields, then each" do
|
274
|
-
field_1 = stub_field('field 1', :name => :foo, :to_expr => :foo)
|
275
|
-
field_2 = stub_field('field 2', :name => :bar, :to_expr => :bar)
|
276
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz")
|
277
|
-
ds.add_filter(field_1, :==, field_2)
|
278
|
-
@dataset.expects(:filter).with(:foo => :bar).returns(@dataset)
|
279
|
-
@dataset.expects(:each)
|
280
|
-
ds.each { }
|
281
|
-
end
|
282
|
-
|
283
|
-
test "add_filter with :>, then each" do
|
284
|
-
field = stub('field', :name => :age, :to_expr => :age)
|
285
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz")
|
286
|
-
ds.add_filter(field, :>, 30)
|
287
|
-
@dataset.expects(:filter).with(expr{age > 30}).returns(@dataset)
|
288
|
-
@dataset.expects(:each)
|
289
|
-
ds.each { }
|
290
|
-
end
|
291
|
-
|
292
|
-
test "add_filter with :<, then each" do
|
293
|
-
field = stub_field('field', :name => :age, :to_expr => :age)
|
294
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz")
|
295
|
-
ds.add_filter(field, :<, 30)
|
296
|
-
@dataset.expects(:filter).with(expr{age < 30}).returns(@dataset)
|
297
|
-
@dataset.expects(:each)
|
298
|
-
ds.each { }
|
299
|
-
end
|
300
|
-
|
301
|
-
test "add_filter with :>=, then each" do
|
302
|
-
field = stub_field('field', :name => :age, :to_expr => :age)
|
303
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz")
|
304
|
-
ds.add_filter(field, :>=, 30)
|
305
|
-
@dataset.expects(:filter).with(expr{age >= 30}).returns(@dataset)
|
306
|
-
@dataset.expects(:each)
|
307
|
-
ds.each { }
|
308
|
-
end
|
309
|
-
|
310
|
-
test "add_filter with :<=, then each" do
|
311
|
-
field = stub('field', :name => :age, :to_expr => :age)
|
312
|
-
ds = Linkage::Dataset.new("foo:/bar", "baz")
|
313
|
-
ds.add_filter(field, :<=, 30)
|
314
|
-
@dataset.expects(:filter).with(expr{age <= 30}).returns(@dataset)
|
315
|
-
@dataset.expects(:each)
|
316
|
-
ds.each { }
|
19
|
+
Sequel.expects(:connect).with('foo:/bar', {:foo => 'bar'}).returns(@database)
|
20
|
+
@database.expects(:schema).with(:foo).returns(@schema)
|
21
|
+
@database.expects(:[]).with(:foo).returns(@dataset)
|
22
|
+
Linkage::FieldSet.expects(:new).with(@schema).returns(@field_set)
|
23
|
+
ds = Linkage::Dataset.new('foo:/bar', "foo", {:foo => 'bar'})
|
317
24
|
end
|
318
25
|
|
319
|
-
test "
|
320
|
-
|
321
|
-
|
322
|
-
ds.add_filter(field, :'!=', 30)
|
323
|
-
@dataset.expects(:filter).with(~{:age => 30}).returns(@dataset)
|
324
|
-
@dataset.expects(:each)
|
325
|
-
ds.each { }
|
26
|
+
test "table_name" do
|
27
|
+
ds = Linkage::Dataset.new('foo:/bar', "foo", {:foo => 'bar'})
|
28
|
+
assert_equal :foo, ds.table_name
|
326
29
|
end
|
327
30
|
|
328
|
-
test "
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
ds.
|
333
|
-
@dataset.expects(:filter).with(expr{age > age_2}).returns(@dataset)
|
334
|
-
@dataset.expects(:each)
|
335
|
-
ds.each { }
|
31
|
+
test "adapter_scheme" do
|
32
|
+
ds = Linkage::Dataset.new('foo:/bar', "foo", {:foo => 'bar'})
|
33
|
+
@dataset.stubs(:db).returns(@database)
|
34
|
+
@database.expects(:adapter_scheme).returns(:foo)
|
35
|
+
assert_equal :foo, ds.adapter_scheme
|
336
36
|
end
|
337
37
|
end
|
data/test/unit/test_field.rb
CHANGED
@@ -1,12 +1,6 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
3
|
class UnitTests::TestField < Test::Unit::TestCase
|
4
|
-
def new_field(name, schema, ruby_type, dataset = nil)
|
5
|
-
f = Linkage::Field.new(name, schema, ruby_type)
|
6
|
-
f.dataset = dataset || stub('dataset')
|
7
|
-
f
|
8
|
-
end
|
9
|
-
|
10
4
|
test "subclass of data" do
|
11
5
|
assert_equal Linkage::Data, Linkage::Field.superclass
|
12
6
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class UnitTests::TestFieldSet < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
super
|
6
|
+
@schema = {
|
7
|
+
:id => {:allow_null=>true, :default=>nil, :primary_key=>true, :db_type=>"integer", :type=>:integer, :ruby_default=>nil},
|
8
|
+
:first_name => {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"varchar(255)", :type=>:string, :ruby_default=>nil},
|
9
|
+
:last_name => {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"varchar(255)", :type=>:string, :ruby_default=>nil}
|
10
|
+
}
|
11
|
+
end
|
12
|
+
|
13
|
+
test "subclass of Hash" do
|
14
|
+
assert_equal Hash, Linkage::FieldSet.superclass
|
15
|
+
end
|
16
|
+
|
17
|
+
test "creates fields on initialization" do
|
18
|
+
field_1 = stub('id field')
|
19
|
+
field_2 = stub('first_name field')
|
20
|
+
field_3 = stub('last_name field')
|
21
|
+
Linkage::Field.expects(:new).with(:id, @schema[:id]).returns(field_1)
|
22
|
+
Linkage::Field.expects(:new).with(:first_name, @schema[:first_name]).returns(field_2)
|
23
|
+
Linkage::Field.expects(:new).with(:last_name, @schema[:last_name]).returns(field_3)
|
24
|
+
|
25
|
+
fs = Linkage::FieldSet.new(@schema)
|
26
|
+
assert_equal field_1, fs.primary_key
|
27
|
+
assert_equal field_1, fs[:id]
|
28
|
+
assert_equal field_2, fs[:first_name]
|
29
|
+
assert_equal field_3, fs[:last_name]
|
30
|
+
end
|
31
|
+
end
|
data/test/unit/test_function.rb
CHANGED
@@ -55,38 +55,32 @@ class UnitTests::TestFunction < Test::Unit::TestCase
|
|
55
55
|
|
56
56
|
test "function with field" do
|
57
57
|
klass = new_function('foo', {:type => String})
|
58
|
-
|
59
|
-
field = stub_field('field', :name => :bar, :ruby_type => {:type => String}, :dataset => dataset)
|
58
|
+
field = stub_field('field', :name => :bar, :ruby_type => {:type => String})
|
60
59
|
f = klass.new(field)
|
61
60
|
assert_equal :foo_bar, f.name
|
62
61
|
assert_equal :foo.sql_function(:bar), f.to_expr
|
63
62
|
assert !f.static?
|
64
|
-
assert_equal dataset, f.dataset
|
65
63
|
end
|
66
64
|
|
67
65
|
test "function with dynamic function" do
|
68
66
|
klass_1 = new_function('foo', {:type => String})
|
69
67
|
klass_2 = new_function('bar', {:type => String})
|
70
68
|
|
71
|
-
|
72
|
-
field = stub_field('field', :name => :baz, :ruby_type => {:type => String}, :dataset => dataset)
|
69
|
+
field = stub_field('field', :name => :baz, :ruby_type => {:type => String})
|
73
70
|
func_1 = klass_1.new(field)
|
74
71
|
assert_equal :foo_baz, func_1.name
|
75
72
|
assert !func_1.static?
|
76
|
-
assert_equal dataset, func_1.dataset
|
77
73
|
|
78
74
|
func_2 = klass_2.new(func_1)
|
79
75
|
assert_equal :bar_foo_baz, func_2.name
|
80
76
|
assert !func_2.static?
|
81
77
|
assert_equal :bar.sql_function(:foo.sql_function(:baz)), func_2.to_expr
|
82
|
-
assert_equal dataset, func_2.dataset
|
83
78
|
end
|
84
79
|
|
85
80
|
test "function with static function" do
|
86
81
|
klass_1 = new_function('foo', {:type => String})
|
87
82
|
klass_2 = new_function('bar', {:type => String})
|
88
83
|
|
89
|
-
dataset = stub('dataset')
|
90
84
|
func_1 = klass_1.new(123)
|
91
85
|
assert_equal :foo_123, func_1.name
|
92
86
|
assert func_1.static?
|
@@ -106,25 +100,21 @@ class UnitTests::TestFunction < Test::Unit::TestCase
|
|
106
100
|
assert_equal :foo_123, func_1.name
|
107
101
|
assert func_1.static?
|
108
102
|
|
109
|
-
|
110
|
-
field = stub_field('field', :name => :quux, :ruby_type => {:type => String}, :dataset => dataset)
|
103
|
+
field = stub_field('field', :name => :quux, :ruby_type => {:type => String})
|
111
104
|
func_2 = klass_2.new(field)
|
112
105
|
assert_equal :bar_quux, func_2.name
|
113
106
|
assert !func_2.static?
|
114
|
-
assert_equal dataset, func_2.dataset
|
115
107
|
|
116
108
|
func_3 = klass_3.new(func_2, func_1)
|
117
109
|
assert_equal :baz_bar_quux_foo_123, func_3.name
|
118
110
|
assert !func_3.static?
|
119
|
-
assert_equal dataset, func_3.dataset
|
120
111
|
assert_equal :baz.sql_function(:bar.sql_function(:quux), :foo.sql_function(123)), func_3.to_expr
|
121
112
|
end
|
122
113
|
|
123
114
|
test "function with multiple fields" do
|
124
115
|
klass = new_function('foo', {:type => String})
|
125
|
-
|
126
|
-
|
127
|
-
field_2 = stub_field('field', :name => :baz, :ruby_type => {:type => String}, :dataset => dataset)
|
116
|
+
field_1 = stub_field('field', :name => :bar, :ruby_type => {:type => String})
|
117
|
+
field_2 = stub_field('field', :name => :baz, :ruby_type => {:type => String})
|
128
118
|
func = klass.new(field_1, field_2)
|
129
119
|
assert_equal :foo_bar_baz, func.name
|
130
120
|
assert_equal :foo.sql_function(:bar, :baz), func.to_expr
|
@@ -133,24 +123,10 @@ class UnitTests::TestFunction < Test::Unit::TestCase
|
|
133
123
|
|
134
124
|
test "function with multiple mixed arguments" do
|
135
125
|
klass = new_function('foo', {:type => String})
|
136
|
-
|
137
|
-
field = stub_field('field', :name => :bar, :ruby_type => {:type => String}, :dataset => dataset)
|
126
|
+
field = stub_field('field', :name => :bar, :ruby_type => {:type => String})
|
138
127
|
f = klass.new(field, 123, 'abc')
|
139
128
|
assert_equal :foo_bar_123_abc, f.name
|
140
129
|
assert_equal :foo.sql_function(:bar, 123, 'abc'), f.to_expr
|
141
|
-
assert_equal dataset, f.dataset
|
142
|
-
end
|
143
|
-
|
144
|
-
test "illegal function with fields from more than one dataset" do
|
145
|
-
klass = new_function('foo', {:type => String})
|
146
|
-
dataset_1 = stub('dataset 1')
|
147
|
-
dataset_2 = stub('dataset 2')
|
148
|
-
field_1 = stub_field('field', :name => :bar, :ruby_type => {:type => String}, :dataset => dataset_1)
|
149
|
-
field_2 = stub_field('field', :name => :baz, :ruby_type => {:type => String}, :dataset => dataset_2)
|
150
|
-
|
151
|
-
assert_raises(ArgumentError) do
|
152
|
-
func = klass.new(field_1, field_2)
|
153
|
-
end
|
154
130
|
end
|
155
131
|
|
156
132
|
test "fetching registered function" do
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestResultSet < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@config = stub('configuration', {
|
6
|
+
:results_uri => 'foo://bar',
|
7
|
+
:results_uri_options => {:blah => 'junk'}
|
8
|
+
})
|
9
|
+
end
|
10
|
+
|
11
|
+
test "creating a result set with a configuration" do
|
12
|
+
result_set = Linkage::ResultSet.new(@config)
|
13
|
+
end
|
14
|
+
|
15
|
+
test "records?" do
|
16
|
+
pend
|
17
|
+
end
|
18
|
+
end
|
data/test/unit/test_runner.rb
CHANGED
@@ -1,14 +1,29 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
3
|
class UnitTests::TestRunner < Test::Unit::TestCase
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
def setup
|
5
|
+
@result_set = stub("result set")
|
6
|
+
@config = stub("configuration", :result_set => @result_set)
|
7
|
+
end
|
8
|
+
|
9
|
+
test "initialization creates a result set" do
|
10
|
+
runner = Linkage::Runner.new(@config)
|
11
|
+
end
|
12
|
+
|
13
|
+
test "initialization with deprecated uri and options" do
|
14
|
+
@config.expects(:save_results_in).with("foo:/results", {:foo => 'bar'})
|
15
|
+
Linkage::Runner.any_instance.expects(:warn)
|
16
|
+
runner = Linkage::Runner.new(@config, "foo:/results", {:foo => 'bar'})
|
7
17
|
end
|
8
18
|
|
9
19
|
test "execute raises error" do
|
10
|
-
|
11
|
-
runner = Linkage::Runner.new(conf, "foo:/results")
|
20
|
+
runner = Linkage::Runner.new(@config)
|
12
21
|
assert_raise_kind_of(NotImplementedError) { runner.execute }
|
13
22
|
end
|
23
|
+
|
24
|
+
test "result_set gets ResultSet from config" do
|
25
|
+
runner = Linkage::Runner.new(@config)
|
26
|
+
@config.expects(:result_set).returns(@result_set)
|
27
|
+
assert_equal @result_set, runner.result_set
|
28
|
+
end
|
14
29
|
end
|