1
0
mirror of https://github.com/altlinux/admc.git synced 2025-02-03 05:47:02 +03:00

improve how test arena is selected as search base

remove ctor arg
reuse f-n from select base widget test
This commit is contained in:
Dmitry Degtyarev 2021-06-30 13:29:43 +04:00
parent cbaf93264a
commit 7e9a4ae125
7 changed files with 41 additions and 37 deletions

View File

@ -47,7 +47,7 @@ enum SelectColumn {
void add_select_object_to_model(QStandardItemModel *model, const AdObject &object);
SelectObjectDialog::SelectObjectDialog(const QList<QString> class_list_arg, const SelectObjectDialogMultiSelection multi_selection_arg, const QString &default_base, QWidget *parent)
SelectObjectDialog::SelectObjectDialog(const QList<QString> class_list_arg, const SelectObjectDialogMultiSelection multi_selection_arg, QWidget *parent)
: QDialog(parent) {
setAttribute(Qt::WA_DeleteOnClose);
setWindowTitle("Select dialog");
@ -59,7 +59,7 @@ SelectObjectDialog::SelectObjectDialog(const QList<QString> class_list_arg, cons
select_classes = new SelectClassesWidget(class_list);
select_base_widget = new SelectBaseWidget(default_base);
select_base_widget = new SelectBaseWidget();
select_base_widget->setObjectName("select_base_widget");
edit = new QLineEdit();
@ -120,11 +120,6 @@ SelectObjectDialog::SelectObjectDialog(const QList<QString> class_list_arg, cons
this, &SelectObjectDialog::on_advanced_button);
}
SelectObjectDialog::SelectObjectDialog(const QList<QString> class_list_arg, const SelectObjectDialogMultiSelection multi_selection_arg, QWidget *parent)
: SelectObjectDialog(class_list_arg, multi_selection_arg, QString(), parent) {
}
QList<QString> SelectObjectDialog::get_selected() const {
QList<QString> out;

View File

@ -40,7 +40,6 @@ Q_OBJECT
public:
SelectObjectDialog(const QList<QString> class_list_arg, const SelectObjectDialogMultiSelection multi_selection_arg, QWidget *parent);
SelectObjectDialog(const QList<QString> class_list_arg, const SelectObjectDialogMultiSelection multi_selection_arg, const QString &default_base, QWidget *parent);
QList<QString> get_selected() const;

View File

@ -27,6 +27,8 @@
#include "select_object_dialog.h"
#include "select_object_advanced_dialog.h"
#include "filter_widget/filter_widget_simple_tab.h"
#include "filter_widget/select_base_widget.h"
#include "select_container_dialog.h"
#include <QMessageBox>
#include <QModelIndex>
@ -233,3 +235,26 @@ void ADMCTest::select_in_select_dialog(SelectObjectDialog *select_dialog, const
find_select_dialog->accept();
}
void select_base_widget_add(SelectBaseWidget *widget, const QString &dn) {
auto browse_button = widget->findChild<QPushButton *>();
QVERIFY(browse_button != nullptr);
browse_button->click();
auto select_container_dialog = widget->findChild<SelectContainerDialog *>();
QVERIFY(select_container_dialog != nullptr);
QVERIFY(QTest::qWaitForWindowExposed(select_container_dialog, 1000));
auto select_container_view = select_container_dialog->findChild<QTreeView *>();
QVERIFY(select_container_view != nullptr);
navigate_until_object(select_container_view, dn, ContainerRole_DN);
select_container_dialog->accept();
QVERIFY(QTest::qWaitForWindowExposed(widget, 1000));
// NOTE: have to delete manually, dialog deletes itself
// on close a bit late which causes consecutive calls
// calls to get the dialog that should've been destroyed
delete select_container_dialog;
}

View File

@ -37,6 +37,7 @@ class QString;
class QTreeView;
class QPushButton;
class SelectObjectDialog;
class SelectBaseWidget;
#define TEST_USER "test-user"
#define TEST_USER_LOGON "test-user-logon"
@ -111,4 +112,8 @@ private:
void navigate_until_object(QTreeView *view, const QString &target_dn, const int dn_role);
// Add a base to the base combo. Note that it is also
// automatically selected.
void select_base_widget_add(SelectBaseWidget *widget, const QString &dn);
#endif /* ADMC_TEST_H */

View File

@ -45,9 +45,6 @@ void ADMCTestSelectBaseWidget::init() {
combo = select_base_widget->findChild<QComboBox *>();
QVERIFY(combo != nullptr);
browse_button = select_base_widget->findChild<QPushButton *>();
QVERIFY(browse_button != nullptr);
// Create test OU's
const QList<QString> ou_name_list = {
"test-ou-alpha",
@ -77,7 +74,7 @@ void ADMCTestSelectBaseWidget::default_to_domain_head() {
// the DN of selected search base
void ADMCTestSelectBaseWidget::select_base() {
const QString select_dn = dn_list[0];
add_base(select_dn);
select_base_widget_add(select_base_widget, select_dn);
const QString base = select_base_widget->get_base();
QVERIFY(base == select_dn);
@ -88,7 +85,7 @@ void ADMCTestSelectBaseWidget::select_base() {
// that search base.
void ADMCTestSelectBaseWidget::select_base_multiple() {
for (const QString &dn : dn_list) {
add_base(dn);
select_base_widget_add(select_base_widget, dn);
}
// Alpha is at index 1 in the combo (0 is domain)
@ -97,29 +94,10 @@ void ADMCTestSelectBaseWidget::select_base_multiple() {
QVERIFY(base == dn_list[0]);
}
void ADMCTestSelectBaseWidget::add_base(const QString &dn) {
browse_button->click();
auto select_container_dialog = select_base_widget->findChild<SelectContainerDialog *>();
QVERIFY(select_container_dialog != nullptr);
QVERIFY(QTest::qWaitForWindowExposed(select_container_dialog, 1000));
auto select_container_view = select_container_dialog->findChild<QTreeView *>();
QVERIFY(select_container_view != nullptr);
navigate_until_object(select_container_view, dn, ContainerRole_DN);
QTest::keyClick(QApplication::focusWidget(), Qt::Key_Enter);
QVERIFY(QTest::qWaitForWindowExposed(select_base_widget, 1000));
// NOTE: have to delete manually, dialog deletes itself
// on close a bit late which causes consecutive add_base()
// calls to get the dialog that should've been destroyed
delete select_container_dialog;
}
void ADMCTestSelectBaseWidget::save_state() {
// Setup some state
for (const QString &dn : dn_list) {
add_base(dn);
select_base_widget_add(select_base_widget, dn);
}
combo->setCurrentIndex(1);

View File

@ -41,10 +41,7 @@ private slots:
private:
SelectBaseWidget *select_base_widget;
QComboBox *combo;
QPushButton *browse_button;
QList<QString> dn_list;
void add_base(const QString &dn);
};
#endif /* ADMC_TEST_SELECT_BASE_WIDGET_H */

View File

@ -20,8 +20,10 @@
#include "admc_test_select_object_dialog.h"
#include "admc_test_select_base_widget.h"
#include "select_object_dialog.h"
#include "console_types/console_object.h"
#include "filter_widget/select_base_widget.h"
#include <QLineEdit>
#include <QPushButton>
@ -31,10 +33,13 @@
void ADMCTestSelectObjectDialog::init() {
ADMCTest::init();
dialog = new SelectObjectDialog({CLASS_USER}, SelectObjectDialogMultiSelection_Yes, test_arena_dn(), parent_widget);
dialog = new SelectObjectDialog({CLASS_USER}, SelectObjectDialogMultiSelection_Yes, parent_widget);
dialog->open();
QVERIFY(QTest::qWaitForWindowExposed(dialog, 1000));
auto select_base_widget = dialog->findChild<SelectBaseWidget *>();
select_base_widget_add(select_base_widget, test_arena_dn());
edit = dialog->findChild<QLineEdit *>("edit");
QVERIFY(edit != nullptr);