slacker 0.0.10 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +2 -2
- data/bin/slacker +0 -0
- data/bin/slacker_new +0 -0
- data/lib/slacker.rb +26 -0
- data/lib/slacker/rspec_ext.rb +11 -35
- data/lib/slacker/version.rb +1 -1
- data/lib/slacker_new/project/spec/sample_1.rb +2 -2
- data/slacker.gemspec +3 -3
- data/spec/rspec_ext_spec.rb +2 -6
- metadata +3 -3
data/Gemfile.lock
CHANGED
data/bin/slacker
CHANGED
File without changes
|
data/bin/slacker_new
CHANGED
File without changes
|
data/lib/slacker.rb
CHANGED
@@ -135,5 +135,31 @@ module Slacker
|
|
135
135
|
end
|
136
136
|
query_script(example, sql, log_name) unless sql.nil?
|
137
137
|
end
|
138
|
+
|
139
|
+
def touch_csv(csv_file_or_object, fields, field_generators = {})
|
140
|
+
csv_obj = csv_file_or_object.kind_of?(String) ? get_csv(csv_file_or_object) : csv_file_or_object
|
141
|
+
fields = fields.is_a?(Array) ? fields : [fields]
|
142
|
+
|
143
|
+
# Adjust the csv if we are providing more records than there are in the csv
|
144
|
+
csv_row_count = csv_obj.to_a.count - 1
|
145
|
+
|
146
|
+
(fields.count - csv_row_count).times do |index|
|
147
|
+
csv_obj << csv_obj[index % csv_row_count].fields
|
148
|
+
end
|
149
|
+
|
150
|
+
# Add the field generators to the hard-coded fields
|
151
|
+
field_generators.each do |key, value|
|
152
|
+
fields.each_with_index do |record, index|
|
153
|
+
record[key] = value.to_s + index.to_s
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
fields.each_with_index do |record, index|
|
158
|
+
record.each do |key, value|
|
159
|
+
csv_obj[index][key.to_sym.downcase] = value
|
160
|
+
end
|
161
|
+
end
|
162
|
+
csv_obj
|
163
|
+
end
|
138
164
|
end
|
139
165
|
end
|
data/lib/slacker/rspec_ext.rb
CHANGED
@@ -9,37 +9,13 @@ module Slacker
|
|
9
9
|
sql = Slacker.sql_from_query_string(query_string, options)
|
10
10
|
@results = Slacker.query_script(example, sql, log_name)
|
11
11
|
if block_given?
|
12
|
-
yield
|
12
|
+
yield @results
|
13
13
|
end
|
14
14
|
@results
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
def result(index = 1, options = {})
|
22
|
-
# Flatten the result in case we're getting a multi-result-set response
|
23
|
-
res = case !@results.empty? && @results[0].kind_of?(Array)
|
24
|
-
when true
|
25
|
-
raise "The query result contains only #{@results.count} result set(s)" unless @results.count >= index
|
26
|
-
@results[index - 1]
|
27
|
-
else
|
28
|
-
raise "The query result contains a single result set" unless index == 1
|
29
|
-
@results
|
30
|
-
end
|
31
|
-
|
32
|
-
#Optionally extract the record and or the field
|
33
|
-
if options[:record] != nil
|
34
|
-
raise "The result set contains only #{res.count} record(s)" unless res.count >= options[:record]
|
35
|
-
res = res[options[:record] - 1]
|
36
|
-
if options[:field] != nil
|
37
|
-
raise "The result set does not contain field \"#{options[:field]}\"" unless res[options[:field]] != nil
|
38
|
-
res = res[options[:field]]
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
res
|
17
|
+
def sql
|
18
|
+
Slacker.sql(self)
|
43
19
|
end
|
44
20
|
|
45
21
|
# Get a matcher which will compare the query results to a golden master
|
@@ -47,6 +23,14 @@ module Slacker
|
|
47
23
|
QueryResultMatcher.new(Slacker.filter_golden_master(golden_master))
|
48
24
|
end
|
49
25
|
|
26
|
+
def csv(csv_file)
|
27
|
+
Slacker.get_csv(csv_file)
|
28
|
+
end
|
29
|
+
|
30
|
+
def touch_csv(csv_file_or_object, fields, field_generators = {})
|
31
|
+
Slacker.touch_csv(csv_file_or_object, fields, field_generators)
|
32
|
+
end
|
33
|
+
|
50
34
|
def load_csv(csv_file_or_object, table_name, log_name = nil)
|
51
35
|
log_name ||= "load_csv '#{csv_file_or_object.kind_of?(CSV::Table) ? 'CSV Object' : csv_file_or_object }', 'table_name'"
|
52
36
|
csv_object = case csv_file_or_object
|
@@ -58,14 +42,6 @@ module Slacker
|
|
58
42
|
Slacker.load_csv(example, csv_object, table_name, log_name)
|
59
43
|
end
|
60
44
|
|
61
|
-
def csv(csv_file)
|
62
|
-
Slacker.get_csv(csv_file)
|
63
|
-
end
|
64
|
-
|
65
|
-
def sql
|
66
|
-
Slacker.sql(self)
|
67
|
-
end
|
68
|
-
|
69
45
|
def yes?(val)
|
70
46
|
val != nil && val.downcase == 'yes'
|
71
47
|
end
|
data/lib/slacker/version.rb
CHANGED
@@ -51,7 +51,7 @@ describe 'My database' do
|
|
51
51
|
# Note that this time we're calling the template with a block.
|
52
52
|
# When called with a block, a template is executed and its results are accessible
|
53
53
|
# from within the block through the "results" object.
|
54
|
-
sql.sample_1.play_with_numbers(:x => 2, :y => 12) do
|
54
|
+
sql.sample_1.play_with_numbers(:x => 2, :y => 12) do |results|
|
55
55
|
# The results object contains an array of all the resultsets generated by the query script.
|
56
56
|
first_resultset = results[0]
|
57
57
|
|
@@ -79,7 +79,7 @@ describe 'My database' do
|
|
79
79
|
# The results of a query can also be compared against the contents
|
80
80
|
# of a CSV file located in the data folder - see file data/sample_1/numbers_expected_output.csv
|
81
81
|
it 'can play with numbers (take two)' do
|
82
|
-
sql.sample_1.play_with_numbers(:x => 10, :y => 34) do
|
82
|
+
sql.sample_1.play_with_numbers(:x => 10, :y => 34) do |results|
|
83
83
|
results[2].should match('sample_1/numbers_expected_output.csv')
|
84
84
|
end
|
85
85
|
end
|
data/slacker.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
|
21
21
|
s.required_ruby_version = '>= 1.9.2'
|
22
22
|
|
23
|
-
s.add_dependency 'bundler', '~>1.0.15'
|
24
|
-
s.add_dependency 'ruby-odbc', '=0.99994'
|
25
|
-
s.add_dependency 'rspec', '
|
23
|
+
s.add_dependency 'bundler', '~> 1.0.15'
|
24
|
+
s.add_dependency 'ruby-odbc', '= 0.99994'
|
25
|
+
s.add_dependency 'rspec', '~> 2.5.0'
|
26
26
|
end
|
data/spec/rspec_ext_spec.rb
CHANGED
@@ -35,12 +35,8 @@ describe Slacker::RSpecExt do
|
|
35
35
|
@instance.should respond_to(:load_csv)
|
36
36
|
end
|
37
37
|
|
38
|
-
it 'responds to
|
39
|
-
@instance.should respond_to(:
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'responds to results' do
|
43
|
-
@instance.should respond_to(:results)
|
38
|
+
it 'responds to load_csv' do
|
39
|
+
@instance.should respond_to(:touch_csv)
|
44
40
|
end
|
45
41
|
|
46
42
|
it 'responds to sql' do
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: slacker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.11
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Vassil Kovatchev
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-06-
|
13
|
+
date: 2011-06-27 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -40,7 +40,7 @@ dependencies:
|
|
40
40
|
requirement: &id003 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- -
|
43
|
+
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: 2.5.0
|
46
46
|
type: :runtime
|