diff --git a/test/runtests.jl b/test/runtests.jl index c1294a923f20287e6b92d24edae2f09882281c52..ed28a6960ae4171b70054dd96d8cdbea4c157340 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -65,4 +65,76 @@ end @test CaosDB.Connection.connect_manually() != nothing end + @testset "Test transaction" begin + + # transactions can be created from connection names or objects + connection = CaosDB.Connection.connect() + @test create_transaction(connection) != nothing + + @test create_transaction() != nothing + @test create_transaction("julialib-integrationtest") != nothing + + # Construct and execute a transaction manually + transaction = create_transaction() + add_query(transaction, "FIND ENTITY WITH id=-1") + execute(transaction) + result_set = get_result_set(transaction) + results = get_results(result_set) + # There is no entity with id=-1 + @test length(results) == 0 + # result-sets can be omitted + transaction_results = get_results(transaction) + @test length(transaction_results) == 0 + # No count query, so this should be -1 + @test get_count_result(transaction) == -1 + + # Also works directly, with or without connection being + # specified. + query_results1 = execute_query("FIND ENTITY WITH id=-1") + @test length(query_results1) == 0 + query_results2 = execute_query("FIND ENTITY WITH id=-1", "julialib-integrationtest") + @test length(query_results2) == 0 + query_results3 = execute_query("FIND ENTITY WITH id=-1", connection) + @test length(query_results3) == 0 + + # COUNT queries have to be conducted manually + count_transaction = create_transaction() + add_query(transaction, "COUNT ENTITY WITH id=-1") + execute(transaction) + # Still an empty result set + @test get_count_result(transaction) == 0 + end + + @testset "Test entity retrieval" begin + + single_retrieve_transaction = create_transaction() + add_retrieve_by_id(single_retrieve_transaction, "20") + execute(single_retrieve_transaction) + results = get_results(single_retrieve_transaction) + @test length(results) == 1 + @test has_errors(results[1]) == false + @test get_name(results[1]) == "name" + + multi_retrieve_transaction = create_transaction() + add_retrieve_by_id(multi_retrieve_transaction, ["20", "21"]) + execute(multi_retrieve_transaction) + results = get_results(multi_retrieve_transaction) + @test length(results) == 2 + @test get_name(results[1]) == "name" + @test get_name(results[2]) == "unit" + + # Helper functions + ent = retrieve("20") + @test get_name(ent) == "name" + + results = retrieve(["20", "21"]) + @test length(results) == 2 + @test get_name(results[1]) == "name" + @test get_name(results[2]) == "unit" + + # id=22 doesn't exist + @test_throws CaosDB.Exceptions.GenericCaosDBException retrieve("22") + @test_throws CaosDB.Exceptions.GenericCaosDBException retrieve(["20", "21", "22"]) + end + end