hets_helper.rb revision f4d4f82239bc0e3f18e9d59dbae22891b20f40e6
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat# In this file, 'ontology_fixture' is always the path to the ontology file
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat# relative to Rails.root.join('spec/fixtures/ontologies/')
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat
41cf1ac30de569888c70b1f1b40d29993950ff2eMichael H. Warfielddef hets_vcr_file(subdir, ontology_fixture)
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat # Replace last occurence of '.' by '_' in the filepath (VCR convention).
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat portions = ontology_fixture.split('.')
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat path = portions[0..-2].join('.')
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat extension = portions[-1]
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat fixture_file(File.join('vcr', 'hets-out', subdir, "#{path}_#{extension}.yml"))
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozatend
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat
41cf1ac30de569888c70b1f1b40d29993950ff2eMichael H. Warfielddef hets_ontology_vcr_file(ontology_fixture)
0ce7569856cc7a366f58688f6b6a71610167fc76Johannes Kastl hets_vcr_file('dg', ontology_fixture)
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozatend
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozatdef hets_proof_vcr_file(ontology_fixture)
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat hets_vcr_file('proof', ontology_fixture)
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozatend
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozatdef hets_provers_vcr_file(ontology_fixture)
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat hets_vcr_file('provers', ontology_fixture)
14d9c0f09d1a55d124ef210a4b4e205c9fe7596cStéphane Graberend
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozatdef hets_out_body(subdir, ontology_fixture)
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat yaml = YAML.load(File.open(hets_vcr_file(subdir, ontology_fixture)))
250b1eec71b074acdff1c5f6b5a1f0d7d2c20b77Stéphane Graber yaml['http_interactions'].first['response']['body']['string']
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozatend
8ec981fc8b0105da5f071e40811e0c2472a6c3c9Stéphane Graber
c63c04fcaf1c3a78c70500eae253d72fa9c8358aTAMUKI Shoichidef hets_out_body_ontology(ontology_fixture)
96283b546081e7ff709968378fca25cb44f1ab6cStéphane Graber hets_out_body('dg', ontology_fixture)
96283b546081e7ff709968378fca25cb44f1ab6cStéphane Graberend
8ec981fc8b0105da5f071e40811e0c2472a6c3c9Stéphane Graber
8ec981fc8b0105da5f071e40811e0c2472a6c3c9Stéphane Graberdef hets_out_body_proof(ontology_fixture)
8ec981fc8b0105da5f071e40811e0c2472a6c3c9Stéphane Graber hets_out_body('proof', ontology_fixture)
8ec981fc8b0105da5f071e40811e0c2472a6c3c9Stéphane Graberend
8ec981fc8b0105da5f071e40811e0c2472a6c3c9Stéphane Graber
8ec981fc8b0105da5f071e40811e0c2472a6c3c9Stéphane Graberdef hets_out_body_provers(ontology_fixture)
207bf0e475f1dc6e9a2dac2cee3a209b56427855Stéphane Graber hets_out_body('provers', ontology_fixture)
207bf0e475f1dc6e9a2dac2cee3a209b56427855Stéphane Graberend
207bf0e475f1dc6e9a2dac2cee3a209b56427855Stéphane Graber
a3ed64707fb71b6f2fcf603e755c5da07ab3aec5Evgeni Golov
a3ed64707fb71b6f2fcf603e755c5da07ab3aec5Evgeni Golovdef parse_ontology_hets_out(user, ontology, io)
a3ed64707fb71b6f2fcf603e755c5da07ab3aec5Evgeni Golov evaluator = Hets::DG::Importer.new(user, ontology, io: io)
a3ed64707fb71b6f2fcf603e755c5da07ab3aec5Evgeni Golov evaluator.import
a3ed64707fb71b6f2fcf603e755c5da07ab3aec5Evgeni Golov io.close unless io.closed?
a3ed64707fb71b6f2fcf603e755c5da07ab3aec5Evgeni Golovend
a3ed64707fb71b6f2fcf603e755c5da07ab3aec5Evgeni Golov
a3ed64707fb71b6f2fcf603e755c5da07ab3aec5Evgeni Golovdef parse_ontology(user, ontology, ontology_fixture)
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat io = StringIO.new(hets_out_body_ontology(ontology_fixture))
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat parse_ontology_hets_out(user, ontology, io)
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozatend
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat
41cf1ac30de569888c70b1f1b40d29993950ff2eMichael H. Warfielddef setup_hets
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat let(:hets_instance) { create(:local_hets_instance) }
a7273db9f87f59815d36c3eca4d4501304ae84b2Frederic Crozat before do
41cf1ac30de569888c70b1f1b40d29993950ff2eMichael H. Warfield stub_request(:get, 'http://localhost:8000/version').
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat to_return(body: Hets.minimal_version_string)
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat hets_instance
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat end
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozatend
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozatdef stub_hets_for(ontology_fixture,
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat command: 'dg', with: nil, with_version: nil, method: :get)
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat stub_request(:get, 'http://localhost:8000/version').
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat to_return(body: Hets.minimal_version_string)
ba4c42597399c72fbb0b8f99e6ded79f738a6ac3Frederic Crozat stub_request(method, hets_uri(command, with, with_version)).
ba4c42597399c72fbb0b8f99e6ded79f738a6ac3Frederic Crozat to_return(body: hets_out_body(command, ontology_fixture))
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat if command == 'dg'
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat stub_request(method, hets_uri('provers', with, with_version)).
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat to_return(body: hets_out_body('provers', ontology_fixture))
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat end
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozatend
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozatdef hets_uri(command = 'dg', portion = nil, version = nil)
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat hets_instance = HetsInstance.choose!
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozatrescue HetsInstance::NoRegisteredHetsInstanceError => e
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat if hets_instance.nil?
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat FactoryGirl.create(:local_hets_instance)
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat hets_instance = HetsInstance.choose!
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat end
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozatensure
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat specific = ''
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat # %2F is percent-encoding for forward slash /
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat specific << "ref%2F#{version}.*" if version
44ee8a102e3d8052631fbb119f58a55ce678d039Frederic Crozat specific << "#{portion}.*" if portion
44ee8a102e3d8052631fbb119f58a55ce678d039Frederic Crozat return %r{#{hets_instance.uri}/#{command}/.*#{specific}}
44ee8a102e3d8052631fbb119f58a55ce678d039Frederic Crozatend
c840b37de865195a8742e219b4374d961a21d4d9Frederic Crozat