dde-application-manager/tests/ut_desktopfilegenerator.cpp
ComixHe 1f73eea404 feat: add desktopfilegenerator and method addUserApplication
1. change type of ActionName to 'a{sa{ss}}'
2. refactor the method of serialization

Signed-off-by: ComixHe <heyuming@deepin.org>
2023-10-17 11:44:02 +08:00

62 lines
2.0 KiB
C++

// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "desktopfilegenerator.h"
#include <gtest/gtest.h>
#include <QVariant>
TEST(DesktopFileGenerator, generate)
{
QVariantMap map;
map.insert("Type", QString{"Application"});
map.insert("Name",
QVariant::fromValue(QStringMap{{"default", "UserApp"}, {"zh_CN", "yonghuyingyong"}, {"en_US", "setApplication"}}));
map.insert("Actions", QStringList{"one", "two"});
map.insert("Exec",
QVariant::fromValue(QStringMap{
{"default", "/usr/bin/exec"}, {"one", "/usr/bin/exec --type=one"}, {"two", "/usr/bin/exec --type=two"}}));
map.insert("Icon", QVariant::fromValue(QStringMap{{"default", "default-icon"}, {"one", "one-icon"}, {"two", "two-icon"}}));
map.insert("ActionName",
QVariantMap{{"one", QVariant::fromValue(QStringMap{{"default", "oneName"}, {"zh_CN", "yi"}, {"en_US", "one"}})},
{"two", QVariant::fromValue(QStringMap{{"default", "twoname"}, {"zh_CN", "er"}, {"en_US", "two"}})}});
map.insert("Version", 1.0);
map.insert("Terminal", false);
map.insert("MimeType", QStringList{"text/html", "text/xml", "application/xhtml+xml"});
QString errMsg{"NO ERROR"};
auto content = DesktopFileGenerator::generate(map, errMsg);
EXPECT_EQ(errMsg.toStdString(), QString{"NO ERROR"}.toStdString());
QString expect{R"([Desktop Entry]
Actions=one;two
Exec=/usr/bin/exec
Icon=default-icon
MimeType=text/html;text/xml;application/xhtml+xml
Name=UserApp
Name[en_US]=setApplication
Name[zh_CN]=yonghuyingyong
Terminal=false
Type=Application
Version=1
X-Deepin-CreateBy=dde-application-manager
[Desktop Action one]
Exec=/usr/bin/exec --type=one
Icon=one-icon
Name=oneName
Name[en_US]=one
Name[zh_CN]=yi
[Desktop Action two]
Exec=/usr/bin/exec --type=two
Icon=two-icon
Name=twoname
Name[en_US]=two
Name[zh_CN]=er
)"};
EXPECT_EQ(expect.toStdString(), content.toStdString());
}