From 7c1d6390683e568c1fed640da20a72493b8f8e8c Mon Sep 17 00:00:00 2001 From: gebele Date: Fri, 20 Dec 2013 14:36:23 +0100 Subject: extended sparql tests;factors,genes,pvalue,qvalue,foldchange --- test/toxbank-investigation-sparql.rb | 194 +++++++++++++++++++++++------------ 1 file changed, 131 insertions(+), 63 deletions(-) diff --git a/test/toxbank-investigation-sparql.rb b/test/toxbank-investigation-sparql.rb index 6b07418..7a5b75b 100644 --- a/test/toxbank-investigation-sparql.rb +++ b/test/toxbank-investigation-sparql.rb @@ -107,112 +107,181 @@ class TBSPARQLTest < MiniTest::Test assert_equal 200, response.code end - #TODO assertions + def test_13_investigation_by_characteristic_value + response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_characteristic_value", {:value => "Saccharomyces cerevisiae (Baker's yeast)"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} + result = JSON.parse(response) + char_value = result["results"]["bindings"].map{|n| "#{n["investigation"]["value"]}:::#{n["propname"]["value"]}:::#{n["ontoURI"]["value"]}"} + assert char_value.include?("#{@@uri}:::organism:::http://purl.obolibrary.org/obo/NEWT_4932") + assert_equal 200, response.code + end + + def test_14_investigation_by_characteristic_name + response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_characteristic_name", {:value => "organism"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} + result = JSON.parse(response) + char_name = result["results"]["bindings"].map{|n| "#{n["investigation"]["value"]}:::#{n["value"]["value"]}:::#{n["ontoURI"]["value"]}"} + assert char_name.include?("#{@@uri}:::Saccharomyces cerevisiae (Baker's yeast):::http://purl.obolibrary.org/obo/NEWT_4932") + assert_equal 200, response.code + end + + def test_15_investigation_by_characteristic + response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_characteristic", {:value => "http://purl.obolibrary.org/obo/NEWT_4932"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} + result = JSON.parse(response) + inv_char = result["results"]["bindings"].map{|n| "#{n["investigation"]["value"]}:::#{n["propname"]["value"]}:::#{n["value"]["value"]}"} + assert inv_char.include?("#{@@uri}:::organism:::Saccharomyces cerevisiae (Baker's yeast)") + assert_equal 200, response.code + end + + def test_30_empty_factorValues_search + assert_raises OpenTox::BadRequestError do + response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_factors", {:factorValues => ""}, {:accept => "application/json", :subjectid => $pi[:subjectid]} + end + end + + def test_31_empty_value_search + assert_raises OpenTox::BadRequestError do + response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_characteristic", {:value => ""}, {:accept => "application/json", :subjectid => $pi[:subjectid]} + end + end + + # delete investigation/{id} + # @note expect code 200 + def test_90_delete_investigation + result = OpenTox::RestClientWrapper.delete @@uri.to_s, {}, {:subjectid => $pi[:subjectid]} + assert_equal 200, result.code + end + +end + +class TBSPARQLTestExtended < MiniTest::Test + + i_suck_and_my_tests_are_order_dependent! + + # login as pi and create a test investigation + def test_00_create_investigation + OpenTox::RestClientWrapper.subjectid = $pi[:subjectid] # set pi as the logged in user + @@uri = "" + file = File.join File.dirname(__FILE__), "data/toxbank-investigation/valid", "IST_test_sparql.zip" + response = OpenTox::RestClientWrapper.post $investigation[:uri], {:file => File.open(file)}, { :subjectid => $pi[:subjectid] } + task_uri = response.chomp + task = OpenTox::Task.new task_uri + task.wait + uri = task.resultURI + assert_equal "Completed", task.hasStatus, "Task should be completed but is: #{task.hasStatus}. Task URI is #{task_uri} ." + @@uri = URI(uri) + OpenTox::RestClientWrapper.put @@uri.to_s, { :published => "true", :summarySearchable => "true"}, { :subjectid => $pi[:subjectid] } + end + + # Retrieves all factors (name, value, ontology URI of the value) given an investigation URI + def test_04_factors_by_investigation + response = OpenTox::RestClientWrapper.get "#{@@uri}/sparql/factors_by_investigation", {}, {:accept => "application/json", :subjectid => $pi[:subjectid]} + result = JSON.parse(response) + headvars = result["head"]["vars"] + assert headvars.include?("factorname") + assert headvars.include?("value") + assert headvars.include?("ontouri") + assert headvars.include?("unitOnto") + assert headvars.include?("unit") + assert headvars.include?("unitID") + factors = result["results"]["bindings"].map{|n| "#{n["factorname"]["value"]}:::#{n["value"]["value"]}:::#{n["ontouri"]["value"]}:::#{n["unitOnto"]["value"]}:::#{n["unit"]["value"]}:::#{n["unitID"]["value"]}"} + #puts factors + assert factors.include?("sample TimePoint:::8::::::::::::") + assert factors.include?("dose:::0::::::http://purl.obolibrary.org/obo/UO_0000064:::micromolar:::UO:0000064") + assert factors.include?("compound:::DOXORUBICIN:::http://purl.obolibrary.org/chebi/CHEBI:28748:::::::::") + end + # Retrieves investigation URI and factors (name, value, ontology URI of the value) def test_09_investigations_and_factors response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigations_and_factors", {}, {:accept => "application/json", :subjectid => $pi[:subjectid]} - #puts response + result = JSON.parse(response) + inv_factors = result["results"]["bindings"].map{|n| "#{n["investigation"]["value"]}:::#{n["factorname"]["value"]}:::#{n["ontouri"]["value"]}:::#{n["value"]["value"]}"} + #puts inv_factors assert_equal 200, response.code + assert inv_factors.include?("#{@@uri}:::compound:::http://purl.obolibrary.org/chebi/CHEBI:28748:::DOXORUBICIN") end - #TODO assertions # Retrieves protocol URI containing any of the factor value URI (e.g. two compound URIs) def test_10_protocols_by_factors response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/protocols_by_factors", {:factorValues => "[]"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} #puts response + result = JSON.parse(response) + protocol_factors = result["results"]["bindings"].map{|n| "#{n["protocol"]["value"]}:::#{n["label"]["value"]}:::#{n["factorname"]["value"]}:::#{n["value"]["value"]}"} + #puts protocol_factors assert_equal 200, response.code + assert protocol_factors.include?("#{@@uri}/P4:::labeling:::dose:::0") + assert protocol_factors.include?("#{@@uri}/P3:::RNA extraction:::dose:::0") + assert protocol_factors.include?("#{@@uri}/P2:::normalization data transformation:::dose:::0") + assert protocol_factors.include?("#{@@uri}/P1:::data transformation:::dose:::0") + assert protocol_factors.include?("#{@@uri}/P5:::data collection:::dose:::0") + assert protocol_factors.include?("#{@@uri}/P6:::nucleic acid hybridization:::dose:::0") + assert protocol_factors.include?("#{@@uri}/P4:::labeling:::sample TimePoint:::8") + assert protocol_factors.include?("#{@@uri}/P3:::RNA extraction:::sample TimePoint:::8") + assert protocol_factors.include?("#{@@uri}/P2:::normalization data transformation:::sample TimePoint:::8") + assert protocol_factors.include?("#{@@uri}/P1:::data transformation:::sample TimePoint:::8") + assert protocol_factors.include?("#{@@uri}/P5:::data collection:::sample TimePoint:::8") + assert protocol_factors.include?("#{@@uri}/P6:::nucleic acid hybridization:::sample TimePoint:::8") + assert protocol_factors.include?("#{@@uri}/P4:::labeling:::compound:::DOXORUBICIN") + assert protocol_factors.include?("#{@@uri}/P3:::RNA extraction:::compound:::DOXORUBICIN") + assert protocol_factors.include?("#{@@uri}/P2:::normalization data transformation:::compound:::DOXORUBICIN") + assert protocol_factors.include?("#{@@uri}/P1:::data transformation:::compound:::DOXORUBICIN") + assert protocol_factors.include?("#{@@uri}/P5:::data collection:::compound:::DOXORUBICIN") + assert protocol_factors.include?("#{@@uri}/P6:::nucleic acid hybridization:::compound:::DOXORUBICIN") end - #TODO assertions # Retrieves investigation URI containing any of the factor value URI (e.g. two compound URIs) def test_11_investigation_by_factors - response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_factors", {:factorValues => "[]"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} + response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_factors", {:factorValues => "['http://purl.obolibrary.org/chebi/CHEBI:28748']"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} #puts response + result = JSON.parse(response) + inv_factors = result["results"]["bindings"].map{|n| "#{n["inv"]["value"]}:::#{n["factorname"]["value"]}:::#{n["value"]["value"]}"} assert_equal 200, response.code + assert inv_factors.include?("#{@@uri}:::compound:::DOXORUBICIN") end - #TODO assertions # Retrieves investigation URI given a factor value URI (e.g. compound URI) def test_12_investigation_by_factor - response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_factor", {:value => "http://factor.value/uri"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} + response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_factor", {:value => "http://purl.obolibrary.org/chebi/CHEBI:28748"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} #puts response - assert_equal 200, response.code - end - - def test_13_investigation_by_characteristic_value - response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_characteristic_value", {:value => "Saccharomyces cerevisiae (Baker's yeast)"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} - result = JSON.parse(response) - char_value = result["results"]["bindings"].map{|n| "#{n["investigation"]["value"]}:::#{n["propname"]["value"]}:::#{n["ontoURI"]["value"]}"} - assert char_value.include?("#{@@uri}:::organism:::http://purl.obolibrary.org/obo/NEWT_4932") - assert_equal 200, response.code - end - - def test_14_investigation_by_characteristic_name - response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_characteristic_name", {:value => "organism"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} result = JSON.parse(response) - char_name = result["results"]["bindings"].map{|n| "#{n["investigation"]["value"]}:::#{n["value"]["value"]}:::#{n["ontoURI"]["value"]}"} - assert char_name.include?("#{@@uri}:::Saccharomyces cerevisiae (Baker's yeast):::http://purl.obolibrary.org/obo/NEWT_4932") - assert_equal 200, response.code - end - - def test_15_investigation_by_characteristic - response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_characteristic", {:value => "http://purl.obolibrary.org/obo/NEWT_4932"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} - result = JSON.parse(response) - inv_char = result["results"]["bindings"].map{|n| "#{n["investigation"]["value"]}:::#{n["propname"]["value"]}:::#{n["value"]["value"]}"} - assert inv_char.include?("#{@@uri}:::organism:::Saccharomyces cerevisiae (Baker's yeast)") + inv_factor = result["results"]["bindings"].map{|n| "#{n["investigation"]["value"]}:::#{n["factorname"]["value"]}:::#{n["value"]["value"]}"} assert_equal 200, response.code + assert inv_factor.include?("#{@@uri}:::compound:::DOXORUBICIN") end - #TODO assertions def test_16_investigation_by_pvalue - response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_pvalue", {:value => "0.05"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} + response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_pvalue", {:value => "0.65614"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} result = JSON.parse(response) - #puts result - #inv_pvalue = result["results"]["bindings"].map{|n| ""} - #assert inv_pvalue.include?("") + #puts response + result = JSON.parse(response) + inv_pvalue = result["results"]["bindings"].map{|n| "#{n["investigation"]["value"]}:::#{n["gene"]["value"]}"} assert_equal 200, response.code + assert inv_pvalue.include?("#{@@uri}:::http://onto.toxbank.net/isa/Entrez/3075") end - #TODO assertions def test_17_investigation_by_qvalue - response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_qvalue", {:value => "0.05"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} + response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_qvalue", {:value => "0.805517"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} + #puts response result = JSON.parse(response) - #puts result - #inv_qvalue = result["results"]["bindings"].map{|n| ""} - #assert inv_qvalue.include?("") + inv_qvalue = result["results"]["bindings"].map{|n| "#{n["investigation"]["value"]}:::#{n["gene"]["value"]}"} assert_equal 200, response.code + assert inv_qvalue.include?("#{@@uri}:::http://onto.toxbank.net/isa/Entrez/3075") end - #TODO assertions def test_18_investigation_by_foldchange - response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_foldchange", {:value => "1.5"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} + response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_foldchange", {:value => "0.035"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} result = JSON.parse(response) - #puts result - #inv_foldchange = result["results"]["bindings"].map{|n| ""} - #assert inv_foldchange.include?("") + #puts response + inv_foldchange = result["results"]["bindings"].map{|n| "#{n["investigation"]["value"]}:::#{n["gene"]["value"]}"} assert_equal 200, response.code + assert inv_foldchange.include?("#{@@uri}:::http://onto.toxbank.net/isa/Entrez/3075") end - #TODO assertions def test_19_investigation_by_genes - response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_genes", {:geneIdentifiers => "[uniprot:P10809,genesymbol:HSPD1,unigene:Hs.595053,refseq:NM_002156,entrez:3329]"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} + response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_genes", {:geneIdentifiers => "['entrez:3075']"}, {:accept => "application/json", :subjectid => $pi[:subjectid]} result = JSON.parse(response) - #puts result - #inv_genes = result["results"]["bindings"].map{|n| ""} - #assert inv_genes.include?("") + #puts response + inv_genes = result["results"]["bindings"].map{|n| "#{n["investigation"]["value"]}:::#{n["datatype"]["value"]}:::#{n["title"]["value"]}:::#{n["valuetype"]["value"]}:::#{n["value"]["value"]}"} assert_equal 200, response.code - end - - def test_30_empty_factorValues_search - assert_raises OpenTox::BadRequestError do - response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_factors", {:factorValues => ""}, {:accept => "application/json", :subjectid => $pi[:subjectid]} - end - end - - def test_31_empty_value_search - assert_raises OpenTox::BadRequestError do - response = OpenTox::RestClientWrapper.get "#{$investigation[:uri]}/sparql/investigation_by_characteristic", {:value => ""}, {:accept => "application/json", :subjectid => $pi[:subjectid]} - end + assert inv_genes.include?("#{@@uri}:::http://onto.toxbank.net/isa/bii/data_types/microarray_derived_data:::q-value[Low.8hr-Control.8hr]:::http://onto.toxbank.net/isa/qvalue:::0.911237") end # delete investigation/{id} @@ -221,5 +290,4 @@ class TBSPARQLTest < MiniTest::Test result = OpenTox::RestClientWrapper.delete @@uri.to_s, {}, {:subjectid => $pi[:subjectid]} assert_equal 200, result.code end - end -- cgit v1.2.3