class Crucible::Tests::TestScriptEngine
Public Class Methods
list_all(metadata=false)
click to toggle source
# File lib/tests/testscripts/testscript_engine.rb, line 40 def self.list_all(metadata=false) list = {} # TODO: Determine if we need resource-based testscript listing support TestScriptEngine.new.tests.each do |test| list[test.title] = {} BaseTest::JSON_FIELDS.each {|field| list[test.title][field] = test.send(field)} if metadata test_metadata = test.collect_metadata(true) BaseTest::METADATA_FIELDS.each do |field| field_hash = {} test_metadata.values.first.each { |tm| field_hash[tm[:test_method]] = tm[field] } list[test.title][field] = field_hash end end end list end
new(client=nil, client2=nil)
click to toggle source
# File lib/tests/testscripts/testscript_engine.rb, line 7 def initialize(client=nil, client2=nil) @client = client @client2 = client2 @scripts = [] load_testscripts end
parse_testscripts()
click to toggle source
# File lib/tests/testscripts/testscript_engine.rb, line 65 def self.parse_testscripts return unless @@models.empty? # get all specification example TestScripts root = File.expand_path '.', File.dirname(File.absolute_path(__FILE__)) path = File.join(root, 'scripts', 'spec', '**/*.xml') script_files = Dir.glob(path) # get all the Connectathon TestScripts path = File.join(root, 'scripts', 'connectathon', '**/*.xml') script_files += Dir.glob(path) script_files.each do |f| begin script = FHIR.from_contents( File.read(f) ) if script.is_a?(FHIR::TestScript) && script.is_valid? script.url = f # replace the URL with the local file path so file system references can properly resolve @@models << script FHIR.logger.info "TestScriptEngine.parse_testscripts: Loaded #{f}" elsif script.is_a?(FHIR::TestScript) FHIR.logger.error "TestScriptEngine.parse_testscripts: Skipping invalid TestScript #{f}" else # this is a fixture... FHIR.logger.warn "TestScriptEngine.parse_testscripts: Skipping fixture #{f}" end rescue FHIR.logger.error "TestScriptEngine.parse_testscripts: Exception deserializing TestScript #{f}" end end end
Public Instance Methods
execute_all()
click to toggle source
# File lib/tests/testscripts/testscript_engine.rb, line 22 def execute_all results = {} self.tests.each do |test| if test.multiserver puts "Skipping Multiserver TestScript: #{test.id}" FHIR.logger.info "Skipping Multiserver TestScript: #{test.id}" elsif test.containsRuleAssertions? puts "Skipping TestScript with permanently-unsupported Rule/RuleSet Assertions: #{test.id}" FHIR.logger.info "Skipping TestScript with permanently-unsupported Rule/RuleSet Assertions: #{test.id}" else puts "Executing: #{test.id}" FHIR.logger.info "Executing: #{test.id}" results.merge! test.execute end end results end
find_test(key)
click to toggle source
# File lib/tests/testscripts/testscript_engine.rb, line 18 def find_test(key) @scripts.find{|s| s.id == key || s.title == key} end
load_testscripts()
click to toggle source
# File lib/tests/testscripts/testscript_engine.rb, line 58 def load_testscripts return unless @scripts.empty? @@models.each do |model| @scripts << BaseTestScript.new(model, @client, @client2) end end
tests()
click to toggle source
# File lib/tests/testscripts/testscript_engine.rb, line 14 def tests @scripts end