Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Telemetry
KUserFeedback
Commits
7e9e893b
Commit
7e9e893b
authored
Oct 01, 2016
by
Volker Krause
Browse files
Extract product model, and add unit test for it
parent
1a10d1b8
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
3rdparty/qt/modeltest.cpp
0 → 100644
View file @
7e9e893b
This diff is collapsed.
Click to expand it.
3rdparty/qt/modeltest.h
0 → 100644
View file @
7e9e893b
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:GPL-EXCEPT$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef MODELTEST_H
#define MODELTEST_H
#include <QtCore/QObject>
#include <QtCore/QAbstractItemModel>
#include <QtCore/QStack>
class
ModelTest
:
public
QObject
{
Q_OBJECT
public:
ModelTest
(
QAbstractItemModel
*
model
,
QObject
*
parent
=
0
);
private
Q_SLOTS
:
void
nonDestructiveBasicTest
();
void
rowCount
();
void
columnCount
();
void
hasIndex
();
void
index
();
void
parent
();
void
data
();
protected
Q_SLOTS
:
void
runAllTests
();
void
layoutAboutToBeChanged
();
void
layoutChanged
();
void
rowsAboutToBeInserted
(
const
QModelIndex
&
parent
,
int
start
,
int
end
);
void
rowsInserted
(
const
QModelIndex
&
parent
,
int
start
,
int
end
);
void
rowsAboutToBeRemoved
(
const
QModelIndex
&
parent
,
int
start
,
int
end
);
void
rowsRemoved
(
const
QModelIndex
&
parent
,
int
start
,
int
end
);
void
dataChanged
(
const
QModelIndex
&
topLeft
,
const
QModelIndex
&
bottomRight
);
void
headerDataChanged
(
Qt
::
Orientation
orientation
,
int
start
,
int
end
);
private:
void
checkChildren
(
const
QModelIndex
&
parent
,
int
currentDepth
=
0
);
QAbstractItemModel
*
model
;
struct
Changing
{
QModelIndex
parent
;
int
oldSize
;
QVariant
last
;
QVariant
next
;
};
QStack
<
Changing
>
insert
;
QStack
<
Changing
>
remove
;
bool
fetchingMore
;
QList
<
QPersistentModelIndex
>
changing
;
};
#endif
analyzer/CMakeLists.txt
View file @
7e9e893b
...
...
@@ -5,6 +5,8 @@ set(analyzer_lib_srcs
rest/restapi.cpp
rest/restclient.cpp
rest/serverinfo.cpp
model/productmodel.cpp
)
add_library
(
UserFeedbackAnalyzer STATIC
${
analyzer_lib_srcs
}
)
...
...
@@ -20,7 +22,6 @@ set(analyzer_srcs
main.cpp
mainwindow.cpp
numericaggregationmodel.cpp
productmodel.cpp
ratioset.cpp
ratiosetaggregationmodel.cpp
sample.cpp
...
...
analyzer/mainwindow.cpp
View file @
7e9e893b
...
...
@@ -25,12 +25,13 @@
#include "connectdialog.h"
#include "datamodel.h"
#include "numericaggregationmodel.h"
#include "productmodel.h"
#include "ratiosetaggregationmodel.h"
#include "surveydialog.h"
#include "surveymodel.h"
#include "timeaggregationmodel.h"
#include <model/productmodel.h>
#include <rest/restapi.h>
#include <rest/restclient.h>
#include <rest/serverinfo.h>
...
...
analyzer/productmodel.cpp
→
analyzer/
model/
productmodel.cpp
View file @
7e9e893b
...
...
@@ -33,8 +33,11 @@ ProductModel::~ProductModel() = default;
void
ProductModel
::
setRESTClient
(
RESTClient
*
client
)
{
Q_ASSERT
(
client
);
m_restClient
=
client
;
connect
(
m_restClient
,
&
RESTClient
::
clientConnected
,
this
,
&
ProductModel
::
reload
);
if
(
m_restClient
->
isConnected
())
reload
();
}
void
ProductModel
::
reload
()
...
...
analyzer/productmodel.h
→
analyzer/
model/
productmodel.h
View file @
7e9e893b
File moved
tests/auto/CMakeLists.txt
View file @
7e9e893b
add_executable
(
productapitest productapitest.cpp
)
target_link_libraries
(
productapitest Qt5::Test UserFeedbackAnalyzer
)
add_test
(
NAME productapitest COMMAND productapitest
)
add_executable
(
productmodeltest productmodeltest.cpp
${
CMAKE_SOURCE_DIR
}
/3rdparty/qt/modeltest.cpp
)
target_link_libraries
(
productmodeltest Qt5::Test UserFeedbackAnalyzer
)
add_test
(
NAME productmodeltest COMMAND productmodeltest
)
tests/auto/productmodeltest.cpp
0 → 100644
View file @
7e9e893b
/*
Copyright (C) 2016 Volker Krause <vkrause@kde.org>
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <rest/restclient.h>
#include <model/productmodel.h>
#include <3rdparty/qt/modeltest.h>
#include <QDebug>
#include <QtTest/qtest.h>
#include <QObject>
#include <QSignalSpy>
#include <QStandardPaths>
using
namespace
UserFeedback
::
Analyzer
;
class
ProductModelTest
:
public
QObject
{
Q_OBJECT
private:
ServerInfo
testServer
()
const
{
// TODO this needs to be read from an external file, and the test needs to be skipped if not available
ServerInfo
s
;
s
.
setUrl
(
QUrl
(
QStringLiteral
(
"https://feedback.volkerkrause.eu/"
)));
s
.
setUserName
(
QStringLiteral
(
"orwell"
));
s
.
setPassword
(
QStringLiteral
(
"1984"
));
return
s
;
}
private
slots
:
void
initTestCase
()
{
QStandardPaths
::
setTestModeEnabled
(
true
);
}
void
testProductModel
()
{
RESTClient
client
;
client
.
connectToServer
(
testServer
());
QVERIFY
(
client
.
isConnected
());
ProductModel
model
;
ModelTest
modelTest
(
&
model
);
model
.
setRESTClient
(
&
client
);
QSignalSpy
spy
(
&
model
,
&
ProductModel
::
modelReset
);
QVERIFY
(
spy
.
wait
());
}
};
QTEST_MAIN
(
ProductModelTest
)
#include "productmodeltest.moc"
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment