linkage 0.0.2 → 0.0.3
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/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
|