feat: 整理单元测试代码

整理单元测试代码,方便测试AppItem类

Log:
Change-Id: Iff41154f8f9e968742c9f30c09f2f7a6b5aabde4
This commit is contained in:
范朋程 2021-03-06 19:33:43 +08:00
parent 4f2e51fafa
commit 7e97570fc6
7 changed files with 82 additions and 30 deletions

View File

@ -41,7 +41,7 @@ DockItemManager::DockItemManager(QObject *parent)
// 应用区域 // 应用区域
for (auto entry : m_appInter->entries()) { for (auto entry : m_appInter->entries()) {
AppItem *it = new AppItem(entry); AppItem *it = new AppItem(entry, QGSettingsInterface::Type::ImplType);
manageItem(it); manageItem(it);
connect(it, &AppItem::requestActivateWindow, m_appInter, &DBusDock::ActivateWindow, Qt::QueuedConnection); connect(it, &AppItem::requestActivateWindow, m_appInter, &DBusDock::ActivateWindow, Qt::QueuedConnection);
@ -190,7 +190,7 @@ void DockItemManager::appItemAdded(const QDBusObjectPath &path, const int index)
++insertIndex; ++insertIndex;
} }
AppItem *item = new AppItem(path); AppItem *item = new AppItem(path, QGSettingsInterface::Type::ImplType);
if (m_appIDist.contains(item->appId())) { if (m_appIDist.contains(item->appId())) {
delete item; delete item;

View File

@ -26,6 +26,8 @@
#include "xcb_misc.h" #include "xcb_misc.h"
#include "appswingeffectbuilder.h" #include "appswingeffectbuilder.h"
#include "appspreviewprovider.h" #include "appspreviewprovider.h"
#include "qgsettingsinterfaceimpl.h"
#include "qgsettingsinterfacemock.h"
#include <X11/X.h> #include <X11/X.h>
#include <X11/Xlib.h> #include <X11/Xlib.h>
@ -45,26 +47,65 @@
QPoint AppItem::MousePressPos; QPoint AppItem::MousePressPos;
static QGSettings *GSettingsByApp() static QGSettingsInterface *GSettingsByApp(QGSettingsInterface::Type type)
{ {
static QGSettings settings("com.deepin.dde.dock.module.app"); switch (type) {
return &settings; case QGSettingsInterface::Type::ImplType:
{
static QGSettingsInterfaceImpl settings("com.deepin.dde.dock.module.app");
return &settings;
}
case QGSettingsInterface::Type::MockType:
{
static QGSettingsInterfaceMock settings("com.deepin.dde.dock.module.app");
return &settings;
}
default:
return nullptr;
}
} }
static QGSettings *GSettingsByActiveApp() static QGSettingsInterface *GSettingsByActiveApp(QGSettingsInterface::Type type)
{ {
static QGSettings settings("com.deepin.dde.dock.module.activeapp"); switch (type) {
return &settings; case QGSettingsInterface::Type::ImplType:
{
static QGSettingsInterfaceImpl settings("com.deepin.dde.dock.module.activeapp");
return &settings;
}
case QGSettingsInterface::Type::MockType:
{
static QGSettingsInterfaceMock settings("com.deepin.dde.dock.module.activeapp");
return &settings;
}
default:
return nullptr;
}
} }
static QGSettings *GSettingsByDockApp() static QGSettingsInterface *GSettingsByDockApp(QGSettingsInterface::Type type)
{ {
static QGSettings settings("com.deepin.dde.dock.module.dockapp"); switch (type) {
return &settings; case QGSettingsInterface::Type::ImplType:
{
static QGSettingsInterfaceImpl settings("com.deepin.dde.dock.module.dockapp");
return &settings;
}
case QGSettingsInterface::Type::MockType:
{
static QGSettingsInterfaceMock settings("com.deepin.dde.dock.module.dockapp");
return &settings;
}
default:
return nullptr;
}
} }
AppItem::AppItem(const QDBusObjectPath &entry, QWidget *parent) AppItem::AppItem(const QDBusObjectPath &entry, QGSettingsInterface::Type type, QWidget *parent)
: DockItem(parent) : DockItem(parent)
, m_qgAppInterface(GSettingsByApp(type))
, m_qgActiveAppInterface(GSettingsByActiveApp(type))
, m_qgDockedAppInterface(GSettingsByDockApp(type))
, m_appNameTips(new TipsWidget(this)) , m_appNameTips(new TipsWidget(this))
, m_appPreviewTips(nullptr) , m_appPreviewTips(nullptr)
, m_itemEntryInter(new DockEntryInter("com.deepin.dde.daemon.Dock", entry.path(), QDBusConnection::sessionBus(), this)) , m_itemEntryInter(new DockEntryInter("com.deepin.dde.daemon.Dock", entry.path(), QDBusConnection::sessionBus(), this))
@ -120,9 +161,9 @@ AppItem::AppItem(const QDBusObjectPath &entry, QWidget *parent)
updateWindowInfos(m_itemEntryInter->windowInfos()); updateWindowInfos(m_itemEntryInter->windowInfos());
refreshIcon(); refreshIcon();
connect(GSettingsByApp(), &QGSettings::changed, this, &AppItem::onGSettingsChanged); connect(m_qgAppInterface->gsettings(), &QGSettings::changed, this, &AppItem::onGSettingsChanged);
connect(GSettingsByDockApp(), &QGSettings::changed, this, &AppItem::onGSettingsChanged); connect(m_qgDockedAppInterface->gsettings(), &QGSettings::changed, this, &AppItem::onGSettingsChanged);
connect(GSettingsByActiveApp(), &QGSettings::changed, this, &AppItem::onGSettingsChanged); connect(m_qgActiveAppInterface->gsettings(), &QGSettings::changed, this, &AppItem::onGSettingsChanged);
connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, &AppItem::onThemeTypeChanged); connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, &AppItem::onThemeTypeChanged);
@ -140,6 +181,13 @@ AppItem::~AppItem()
stopSwingEffect(); stopSwingEffect();
m_appNameTips->deleteLater(); m_appNameTips->deleteLater();
delete m_qgAppInterface;
m_qgAppInterface = nullptr;
delete m_qgActiveAppInterface;
m_qgActiveAppInterface = nullptr;
delete m_qgDockedAppInterface;
m_qgDockedAppInterface = nullptr;
} }
void AppItem::checkEntry() void AppItem::checkEntry()
@ -665,7 +713,7 @@ void AppItem::playSwingEffect()
stopSwingEffect(); stopSwingEffect();
QPair<QGraphicsView *, QGraphicsItemAnimation *> pair = SwingEffect( QPair<QGraphicsView *, QGraphicsItemAnimation *> pair = SwingEffect(
this, m_appIcon, rect(), devicePixelRatioF()); this, m_appIcon, rect(), devicePixelRatioF());
m_swingEffectView = pair.first; m_swingEffectView = pair.first;
m_itemAnimation = pair.second; m_itemAnimation = pair.second;
@ -711,24 +759,24 @@ void AppItem::onGSettingsChanged(const QString &key)
return; return;
} }
QGSettings *setting = m_itemEntryInter->isDocked() QGSettingsInterface *setting = m_itemEntryInter->isDocked()
? GSettingsByDockApp() ? m_qgDockedAppInterface
: GSettingsByActiveApp(); : m_qgActiveAppInterface;
if (setting->keys().contains("enable")) { if (setting->keys().contains("enable")) {
const bool isEnable = GSettingsByApp()->keys().contains("enable") && GSettingsByApp()->get("enable").toBool(); const bool isEnable = m_qgAppInterface->keys().contains("enable") && m_qgAppInterface->get("enable").toBool();
setVisible(isEnable && setting->get("enable").toBool()); setVisible(isEnable && setting->get("enable").toBool());
} }
} }
bool AppItem::checkGSettingsControl() const bool AppItem::checkGSettingsControl() const
{ {
QGSettings *setting = m_itemEntryInter->isDocked() QGSettingsInterface *setting = m_itemEntryInter->isDocked()
? GSettingsByDockApp() ? m_qgDockedAppInterface
: GSettingsByActiveApp(); : m_qgActiveAppInterface;
return (setting->keys().contains("control") && setting->get("control").toBool()) || return (setting->keys().contains("control") && setting->get("control").toBool()) ||
(GSettingsByApp()->keys().contains("control") && GSettingsByApp()->get("control").toBool()); (m_qgAppInterface->keys().contains("control") && m_qgAppInterface->get("control").toBool());
} }
void AppItem::onThemeTypeChanged(DGuiApplicationHelper::ColorType themeType) void AppItem::onThemeTypeChanged(DGuiApplicationHelper::ColorType themeType)

View File

@ -28,6 +28,7 @@
#include "appdrag.h" #include "appdrag.h"
#include "dbusclientmanager.h" #include "dbusclientmanager.h"
#include "../widgets/tipswidget.h" #include "../widgets/tipswidget.h"
#include "qgsettingsinterface.h"
#include <QGraphicsView> #include <QGraphicsView>
#include <QGraphicsItem> #include <QGraphicsItem>
@ -43,7 +44,7 @@ class AppItem : public DockItem
Q_OBJECT Q_OBJECT
public: public:
explicit AppItem(const QDBusObjectPath &entry, QWidget *parent = nullptr); explicit AppItem(const QDBusObjectPath &entry, QGSettingsInterface::Type type, QWidget *parent = nullptr);
~AppItem() override; ~AppItem() override;
void checkEntry() override; void checkEntry() override;
@ -102,6 +103,9 @@ private slots:
void onThemeTypeChanged(DGuiApplicationHelper::ColorType themeType); void onThemeTypeChanged(DGuiApplicationHelper::ColorType themeType);
private: private:
QGSettingsInterface *m_qgAppInterface;
QGSettingsInterface *m_qgActiveAppInterface;
QGSettingsInterface *m_qgDockedAppInterface;
TipsWidget *m_appNameTips; TipsWidget *m_appNameTips;
PreviewContainer *m_appPreviewTips; PreviewContainer *m_appPreviewTips;
DockEntryInter *m_itemEntryInter; DockEntryInter *m_itemEntryInter;

View File

@ -45,7 +45,7 @@ LauncherItem::LauncherItem(QGSettingsInterface *interface, QWidget *parent)
m_tips->setVisible(false); m_tips->setVisible(false);
m_tips->setObjectName("launcher"); m_tips->setObjectName("launcher");
if (m_gsettings->type() == QGSettingsInterface::REAL) { if (m_gsettings->type() == QGSettingsInterface::ImplType) {
QGSettingsInterfaceImpl *impl = dynamic_cast<QGSettingsInterfaceImpl *>(m_gsettings); QGSettingsInterfaceImpl *impl = dynamic_cast<QGSettingsInterfaceImpl *>(m_gsettings);
if (!impl) if (!impl)
qWarning("Error!"); qWarning("Error!");

View File

@ -30,8 +30,8 @@ class QGSettingsInterface
{ {
public: public:
enum Type { enum Type {
REAL, // 持有真正的QGSettings指针 ImplType, // 持有真正的QGSettings指针
FAKE // Mock类 MockType // Mock类
}; };
virtual ~QGSettingsInterface() {} virtual ~QGSettingsInterface() {}

View File

@ -36,7 +36,7 @@ QGSettingsInterfaceImpl::~QGSettingsInterfaceImpl()
QGSettingsInterface::Type QGSettingsInterfaceImpl::type() QGSettingsInterface::Type QGSettingsInterfaceImpl::type()
{ {
return Type::REAL; return Type::ImplType;
} }
QGSettings *QGSettingsInterfaceImpl::gsettings() QGSettings *QGSettingsInterfaceImpl::gsettings()

View File

@ -35,7 +35,7 @@ QGSettingsInterfaceMock::~QGSettingsInterfaceMock()
QGSettingsInterface::Type QGSettingsInterfaceMock::type() QGSettingsInterface::Type QGSettingsInterfaceMock::type()
{ {
return Type::FAKE; return Type::MockType;
} }
QGSettings *QGSettingsInterfaceMock::gsettings() QGSettings *QGSettingsInterfaceMock::gsettings()