Skip to content

Commit caa14ee

Browse files
committed
bugfix: Issues running from a project
1 parent 47f7aad commit caa14ee

7 files changed

Lines changed: 60 additions & 20 deletions

File tree

lib/kiba/extend/job_test/csv_job/equal.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,13 @@ def run
4848
end
4949

5050
def required_keys = %i[select_field select_value test_field expected]
51+
52+
def key_conversions = {
53+
select_field: :to_sym,
54+
select_value: :to_s,
55+
test_field: :to_sym,
56+
expected: :to_s
57+
}
5158
end
5259
end
5360
end

lib/kiba/extend/job_test/job_testable.rb

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ def result
1717
if run == :success
1818
config.merge({status: run})
1919
else
20-
config.merge({status: :failure, got: run})
20+
config.merge({status: :failure, got: err_msg(run)})
2121
end
2222
end
2323

24+
def job_data = @job_data ||= get_job_data
25+
2426
private
2527

2628
def initialization_logic(config, data = nil)
@@ -32,8 +34,6 @@ def initialization_logic(config, data = nil)
3234

3335
def config = @config
3436

35-
def job_data = @job_data ||= get_job_data
36-
3737
def validate_config(config)
3838
unless config.key?(:path)
3939
fail("#{self.class.name} requires a :path key in its config")
@@ -58,9 +58,31 @@ def validate_config_keys(config)
5858
"#{missing.join(", ")}")
5959
end
6060

61+
def err_msg_prefix
62+
parts = []
63+
parts << loc if respond_to?(:loc)
64+
parts << desc if respond_to?(:desc)
65+
return if parts.empty?
66+
67+
parts << "Got"
68+
parts.join("\n")
69+
end
70+
71+
def err_msg(val) = [err_msg_prefix, val].compact.join(": ")
72+
6173
def generate_instance_variable(key, val)
6274
iv = :"@#{key}"
63-
instance_variable_set(iv, val)
75+
conv = if respond_to?(:key_conversions)
76+
if key_conversions.key?(key)
77+
val.send(key_conversions[key])
78+
else
79+
val
80+
end
81+
else
82+
val
83+
end
84+
85+
instance_variable_set(iv, conv)
6486
self.class.define_method(key) { instance_variable_get(iv) }
6587
end
6688
end

lib/kiba/extend/job_test/job_tests_runner.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class JobTestsRunner
77
# @param job [Symbol]
88
# @param tests [Array<Hash>]
99
def initialize(job, tests)
10-
@job = job
10+
@job = job.to_sym
1111
@tests = tests
1212
@status = :ok
1313
end
@@ -30,7 +30,7 @@ def call
3030

3131
def set_path
3232
entry = Kiba::Extend.registry.resolve(job)
33-
tests.each { |t| t[:path] = entry[:path] }
33+
tests.each { |t| t[:path] = entry.path }
3434
rescue
3535
@status = :error
3636
msg = "#{job} job does not exist in registry"

lib/kiba/extend/job_test/suite_runner.rb

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ module Extend
55
module JobTest
66
class SuiteRunner
77
# @param dir [String]
8-
def initialize(dir = JobTest.job_test_dir_path)
8+
def initialize(dir = JobTest.job_tests_dir_path)
99
unless Dir.exist?(dir)
1010
fail("Cannot run job tests: #{dir} does not exist")
1111
end
@@ -14,17 +14,18 @@ def initialize(dir = JobTest.job_test_dir_path)
1414
end
1515

1616
def call
17-
tests_by_job.map { |job, tests| JobTestsRunner.new(job, tests).call }
18-
.flatten
19-
.each do |test|
20-
next unless test[:status] == :failure
21-
22-
puts "\n#{test[:loc]}"
23-
puts test[:desc]
24-
puts "Got: #{test[:got]}"
25-
end
17+
results = run_tests
18+
if results.key?(:failure)
19+
results[:failure].each { |test| puts "Got: #{test[:got]}" }
20+
puts "\n\nFailures: #{results[:failure].length}"
21+
end
22+
if results.key?(:success)
23+
puts "Successes: #{results[:success].length}"
24+
end
2625
end
2726

27+
def results = @results ||= run_tests
28+
2829
private
2930

3031
attr_reader :dir
@@ -33,6 +34,13 @@ def tests_by_job = Dir.children(dir)
3334
.map { |f| ConfigFilePrepper.new(File.join(dir, f)).call }
3435
.flatten
3536
.group_by { |config| config[:job] }
37+
38+
def run_tests
39+
tests_by_job.map do |job, tests|
40+
JobTestsRunner.new(job, tests).call
41+
end.flatten
42+
.group_by { |test| test[:status] }
43+
end
3644
end
3745
end
3846
end

spec/kiba/extend/job_test/csv_job/equal_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454

5555
it "returns actual data value" do
5656
expect(result[:status]).to eq(:failure)
57-
expect(result[:got]).to eq("2")
57+
expect(result[:got]).to end_with(" 2")
5858
expect(result[:desc]).to eq("When objectnumber is OBJ2, "\
5959
"numberofobjects == 127")
6060
end
@@ -73,7 +73,7 @@
7373

7474
it "returns no rows message" do
7575
expect(result[:status]).to eq(:failure)
76-
expect(result[:got]).to eq("no rows matching select criteria")
76+
expect(result[:got]).to end_with("no rows matching select criteria")
7777
end
7878
end
7979
end

spec/kiba/extend/job_test/job_tests_runner_spec.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
RSpec.describe Kiba::Extend::JobTest::JobTestsRunner do
66
subject(:runner) { described_class.new(job, tests) }
77

8-
before(:all) { populate_registry }
8+
before(:all) do
9+
populate_registry
10+
Kiba::Extend.registry.finalize
11+
end
912
after(:all) { Kiba::Extend.reset_config }
1013

1114
describe "call" do

spec/kiba/extend/job_test/runner_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979

8080
it "returns as expected" do
8181
expect(result[:status]).to eq(:failure)
82-
expect(result[:got]).to eq("2")
82+
expect(result[:got]).to end_with(" 2")
8383
end
8484
end
8585
end

0 commit comments

Comments
 (0)