Skip to content
Snippets Groups Projects

F grpc select

Merged Timm Fitschen requested to merge f-grpc-select into dev
1 file
+ 82
3
Compare changes
  • Side-by-side
  • Inline
+ 82
3
@@ -20,28 +20,107 @@
@@ -20,28 +20,107 @@
*
*
*/
*/
#include "caosdb/connection.h" // for Connection, ConnectionManager
#include "caosdb/connection.h" // for Connection, ConnectionManager
 
#include "caosdb/data_type.h" // for AtomicDataType
#include "caosdb/transaction.h" // for Transaction, ResultTable
#include "caosdb/transaction.h" // for Transaction, ResultTable
 
#include "caosdb/value.h" // for Value
#include <gtest/gtest-message.h> // for Message
#include <gtest/gtest-message.h> // for Message
#include <gtest/gtest-test-part.h> // for SuiteApiResolver, TestFactoryImpl
#include <gtest/gtest-test-part.h> // for SuiteApiResolver, TestFactoryImpl
#include <gtest/gtest_pred_impl.h> // for Test, TestInfo, EXPECT_EQ, TEST
#include <gtest/gtest_pred_impl.h> // for Test, TestInfo, EXPECT_EQ, TEST
#include <memory> // for allocator, unique_ptr, __shared_p...
#include <memory> // for allocator, unique_ptr, __shared_p...
//
//
namespace caosdb::transaction {
namespace caosdb::transaction {
 
using caosdb::entity::AtomicDataType;
 
using caosdb::entity::Role;
 
using caosdb::entity::Property;
 
using caosdb::entity::Parent;
 
using caosdb::entity::Entity;
 
using caosdb::entity::Value;
 
 
class test_select : public ::testing::Test {
 
public:
 
 
static void DeleteEntities() {
 
// delete all entities
 
const auto &connection = caosdb::connection::ConnectionManager::GetDefaultConnection();
 
auto query_transaction(connection->CreateTransaction());
 
query_transaction->Query("FIND Test*");
 
query_transaction->Execute();
 
if (query_transaction->GetResultSet().size() > 0) {
 
std::cout << "Cleanup: Deleting " << query_transaction->GetResultSet().size() << " entities."
 
<< std::endl;
 
auto delete_transaction(connection->CreateTransaction());
 
for (const Entity &entity : query_transaction->GetResultSet()) {
 
delete_transaction->DeleteById(entity.GetId());
 
}
 
delete_transaction->Execute();
 
}
 
}
 
 
static auto CreateTestProp() -> Entity {
 
Entity entity;
 
entity.SetRole(Role::PROPERTY);
 
entity.SetName("TestProp");
 
entity.SetDataType(AtomicDataType::TEXT);
 
return entity;
 
}
 
 
static auto CreateTestRT() -> Entity {
 
Entity entity;
 
entity.SetRole(Role::RECORD_TYPE);
 
entity.SetName("TestRT");
 
return entity;
 
}
 
 
static auto CreateRecord(const std::string &property_name, Value value) -> Entity {
 
Entity entity;
 
entity.SetRole(Role::RECORD);
 
Parent parent;
 
parent.SetName("TestRT");
 
entity.AppendParent(parent);
 
Property property;
 
property.SetName(property_name);
 
property.SetValue(value);
 
entity.AppendProperty(property);
 
 
return entity;
 
}
 
 
protected:
 
// Fixture methods //////////////////////////////////////////////////////////
 
 
void SetUp() override {
 
DeleteEntities();
 
 
const auto &connection = caosdb::connection::ConnectionManager::GetDefaultConnection();
 
auto insert_transaction(connection->CreateTransaction());
 
insert_transaction->InsertEntity(CreateTestRT());
 
insert_transaction->InsertEntity(CreateTestProp());
 
insert_transaction->Execute();
 
}
 
 
void TearDown() override {
 
DeleteEntities();
 
}
 
};
/*
/*
* Test select query on empty database.
* Test select query on empty database.
*/
*/
TEST(test_transaction, test_select) {
TEST_F(test_select, test_select_name) {
const auto &connection = caosdb::connection::ConnectionManager::GetDefaultConnection();
const auto &connection = caosdb::connection::ConnectionManager::GetDefaultConnection();
auto query_transaction(connection->CreateTransaction());
auto query_transaction(connection->CreateTransaction());
query_transaction->Query("SELECT name FROM ENTITY WITH id > 99");
query_transaction->Query("SELECT name FROM RecordType TestRT");
query_transaction->Execute();
query_transaction->Execute();
EXPECT_EQ(query_transaction->GetResultTable().size(), 0);
EXPECT_EQ(query_transaction->GetResultTable().GetHeader().size(), 1);
EXPECT_EQ(query_transaction->GetResultTable().GetHeader().size(), 1);
for(const auto &column : query_transaction->GetResultTable().GetHeader()) {
for(const auto &column : query_transaction->GetResultTable().GetHeader()) {
EXPECT_EQ(column.GetName(), "name");
EXPECT_EQ(column.GetName(), "name");
}
}
 
 
EXPECT_EQ(query_transaction->GetResultTable().size(), 1);
 
for(const auto &row : query_transaction->GetResultTable().GetRows()) {
 
EXPECT_EQ(row.GetValue("name").GetAsString(), "bla");
 
}
}
}
} // namespace caosdb::transaction
} // namespace caosdb::transaction
Loading