#include "adminive/adapters/drogon.hpp" #include "adminive/adapters/nlohmann_json.hpp" #include #include #include #include #include namespace drogon_test { struct Config { std::string name{"default"}; }; } namespace adminive { template <> struct Type_Descriptor { static auto get() { using T = drogon_test::Config; return object("config", "Config", ADMINIVE_FIELD(T, name).editable()); } }; } int main() { drogon_test::Config config; drogon::HttpAppFramework app; std::vector> tasks; { adminive::Drogon_Resource resource(config, "/config"); resource.bind(app, [&tasks](std::function task) { tasks.push_back(std::move(task)); }); } auto request = std::make_shared(); request->body = R"({"name":"updated"})"; drogon::HttpResponsePtr response; app.handle("/config/data", drogon::Post, request, [&response](const drogon::HttpResponsePtr& value) { response = value; }); assert(!response); assert(tasks.size() == 1); tasks.front()(); assert(response); assert(response->status == drogon::k200OK); assert(config.name == "updated"); return 0; }