feat(data): NavDto parseProjects/parseStructNodes/parseDatasets
This commit is contained in:
parent
bf67c01ac9
commit
a32bd763da
|
|
@ -25,9 +25,56 @@ std::vector<Workspace> parseWorkspaces(const QJsonArray& arr) {
|
|||
return out;
|
||||
}
|
||||
|
||||
ProjectPage parseProjects(const QJsonObject&) { return {}; }
|
||||
std::vector<StructNode> parseStructNodes(const QJsonArray&) { return {}; }
|
||||
std::vector<DsNode> parseDatasets(const QJsonArray&) { return {}; }
|
||||
ProjectPage parseProjects(const QJsonObject& data) {
|
||||
ProjectPage page;
|
||||
page.hasNextPage = data.value(QStringLiteral("hasNextPage")).toBool();
|
||||
const QJsonArray list = data.value(QStringLiteral("projectList")).toArray();
|
||||
page.projects.reserve(static_cast<size_t>(list.size()));
|
||||
for (const QJsonValue& v : list) {
|
||||
const QJsonObject o = v.toObject();
|
||||
ProjectSummary p;
|
||||
p.id = str(o, "id");
|
||||
p.name = str(o, "projectName");
|
||||
p.typeName = str(o, "projectTypeName");
|
||||
p.crsCode = str(o, "referenceCRSCode");
|
||||
p.crsName = str(o, "referenceCRSName");
|
||||
p.status = o.value(QStringLiteral("status")).toInt();
|
||||
page.projects.push_back(std::move(p));
|
||||
}
|
||||
return page;
|
||||
}
|
||||
|
||||
std::vector<StructNode> parseStructNodes(const QJsonArray& arr) {
|
||||
std::vector<StructNode> out;
|
||||
out.reserve(static_cast<size_t>(arr.size()));
|
||||
for (const QJsonValue& v : arr) {
|
||||
const QJsonObject o = v.toObject();
|
||||
StructNode n;
|
||||
n.id = str(o, "id");
|
||||
n.name = str(o, "name");
|
||||
n.parentId = str(o, "parentId");
|
||||
n.typeName = str(o, "typeName");
|
||||
n.confCode = str(o, "confCode");
|
||||
n.type = o.value(QStringLiteral("type")).toInt();
|
||||
out.push_back(std::move(n));
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
std::vector<DsNode> parseDatasets(const QJsonArray& arr) {
|
||||
std::vector<DsNode> out;
|
||||
out.reserve(static_cast<size_t>(arr.size()));
|
||||
for (const QJsonValue& v : arr) {
|
||||
const QJsonObject o = v.toObject();
|
||||
DsNode d;
|
||||
d.id = str(o, "id");
|
||||
d.name = str(o, "name");
|
||||
d.ddType = str(o, "ddCode");
|
||||
out.push_back(std::move(d));
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
std::vector<StructTreeNode> buildStructTree(const std::vector<StructNode>&) { return {}; }
|
||||
|
||||
} // namespace geopro::data::dto
|
||||
|
|
|
|||
|
|
@ -26,3 +26,51 @@ TEST(NavDto, ParseWorkspacesMapsFieldsAndCurrentFlag) {
|
|||
EXPECT_TRUE(ws[0].isCurrent);
|
||||
EXPECT_FALSE(ws[1].isCurrent);
|
||||
}
|
||||
|
||||
namespace {
|
||||
QJsonObject objOf(const char* json) {
|
||||
return QJsonDocument::fromJson(QByteArray(json)).object();
|
||||
}
|
||||
} // namespace
|
||||
|
||||
TEST(NavDto, ParseProjectsMapsCrsAndPaging) {
|
||||
const auto data = objOf(R"({
|
||||
"hasNextPage": true,
|
||||
"projectList": [
|
||||
{"id":"p1","projectName":"青海湖北岸","projectTypeName":"ERT",
|
||||
"referenceCRSCode":"EPSG:4547","referenceCRSName":"CGCS2000","status":1}
|
||||
]
|
||||
})");
|
||||
const auto page = dto::parseProjects(data);
|
||||
EXPECT_TRUE(page.hasNextPage);
|
||||
ASSERT_EQ(page.projects.size(), 1u);
|
||||
EXPECT_EQ(page.projects[0].id, "p1");
|
||||
EXPECT_EQ(page.projects[0].name, "青海湖北岸");
|
||||
EXPECT_EQ(page.projects[0].typeName, "ERT");
|
||||
EXPECT_EQ(page.projects[0].crsCode, "EPSG:4547");
|
||||
EXPECT_EQ(page.projects[0].status, 1);
|
||||
}
|
||||
|
||||
TEST(NavDto, ParseStructNodesMapsParentAndType) {
|
||||
const auto arr = arrOf(R"([
|
||||
{"id":"gs1","name":"工区1","parentId":"","type":1,"typeName":"GS","confCode":""},
|
||||
{"id":"tm1","name":"测线1","parentId":"gs1","type":2,"typeName":"TM","confCode":"ERT"}
|
||||
])");
|
||||
const auto ns = dto::parseStructNodes(arr);
|
||||
ASSERT_EQ(ns.size(), 2u);
|
||||
EXPECT_EQ(ns[0].id, "gs1");
|
||||
EXPECT_EQ(ns[1].parentId, "gs1");
|
||||
EXPECT_EQ(ns[1].confCode, "ERT");
|
||||
EXPECT_EQ(ns[1].type, 2);
|
||||
}
|
||||
|
||||
TEST(NavDto, ParseDatasetsMapsDdCodeToDdType) {
|
||||
const auto arr = arrOf(R"([
|
||||
{"id":"ds1","name":"批次1","ddCode":"dd_section","typeName":"剖面"}
|
||||
])");
|
||||
const auto ds = dto::parseDatasets(arr);
|
||||
ASSERT_EQ(ds.size(), 1u);
|
||||
EXPECT_EQ(ds[0].id, "ds1");
|
||||
EXPECT_EQ(ds[0].name, "批次1");
|
||||
EXPECT_EQ(ds[0].ddType, "dd_section");
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue