Skip to content

Commit 44a08ab

Browse files
committed
Refactoring tests/fixtures
1 parent 9163ee0 commit 44a08ab

6 files changed

Lines changed: 46 additions & 47 deletions

File tree

activity_browser/bwutils/metadata.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ def on_node_changed(self, new, old):
105105

106106
@property
107107
def databases(self):
108-
return set(self.dataframe.get("database").unique())
108+
return set(self.dataframe.get("database", []))
109109

110110
def sync_node(self, key: tuple) -> None:
111111
"""Update metadata when an activity has changed.

activity_browser/layouts/pages/parameters/parameter_models.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,7 @@ class ScenarioModel(PandasModel):
435435

436436
def __init__(self, parent=None):
437437
super().__init__(parent=parent)
438-
signals.project.changed.connect(lambda: self.sync())
438+
signals.project.changed.connect(self.sync)
439439
signals.parameter.changed.connect(self.rebuild_table)
440440

441441
@Slot(name="doCleanSync")
@@ -444,7 +444,7 @@ def sync(self, df: pd.DataFrame = None, include_default: bool = True) -> None:
444444
is given, perform a merge to possibly include additional columns.
445445
"""
446446
data = [p[:3] for p in bwutils.utils.Parameters.from_bw_parameters()]
447-
if df is None:
447+
if not isinstance(df, pd.DataFrame):
448448
self._dataframe = pd.DataFrame(data, columns=self.HEADERS).set_index("Name")
449449
else:
450450
required = set(self.MATCH_COLS)
@@ -455,7 +455,7 @@ def sync(self, df: pd.DataFrame = None, include_default: bool = True) -> None:
455455
)
456456
)
457457
assert df.columns.get_loc("Group") == 1
458-
if include_default:
458+
if isinstance(include_default, bool) and include_default:
459459
new_df = pd.DataFrame(data, columns=self.HEADERS)
460460
if "default" in df.columns:
461461
df.drop(columns="default", inplace=True)

activity_browser/ui/widgets/central.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def __init__(self, *args):
2525
"""
2626
super().__init__(*args)
2727
# Connect to the project changed signal to reset the current index to 0
28-
signals.project.changed.connect(lambda: self.setCurrentIndex(0))
28+
signals.project.changed.connect(self.reset)
2929

3030
@property
3131
def groups(self):
@@ -66,6 +66,7 @@ def addToGroup(self, group: str, page: QtWidgets.QWidget):
6666
# Add the page to the group if it does not exist
6767
name = page.windowTitle() or page.objectName() # Use windowTitle if available
6868
page.setWindowTitle(name) # make sure the page has a title
69+
page.setParent(group)
6970
group.addTab(page, name)
7071

7172
page.windowTitleChanged.connect(lambda title: group.setTabText(group.indexOf(page), title))
@@ -78,6 +79,9 @@ def addToGroup(self, group: str, page: QtWidgets.QWidget):
7879
self.setCurrentWidget(group)
7980
group.setCurrentWidget(page)
8081

82+
def reset(self):
83+
self.setCurrentIndex(0)
84+
8185

8286
class GroupTabWidget(QtWidgets.QTabWidget):
8387
"""

tests/actions/test_activity_actions.py

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,7 @@
33
from bw2data.errors import BW2Exception
44
from qtpy import QtWidgets
55

6-
from activity_browser import actions
7-
8-
9-
10-
def test_launch_application(application_instance):
11-
"""Test that the application launches correctly."""
12-
assert application_instance.main_window.isVisible()
6+
from activity_browser import actions, application
137

148

159
def test_activity_delete(monkeypatch, basic_database):
@@ -75,22 +69,23 @@ def test_activity_new(monkeypatch, basic_database):
7569
assert len([p for p in basic_database if p["name"] == "new_product"]) == 1
7670

7771

78-
def test_process_open(application_instance, basic_database):
72+
def test_process_open(basic_database):
7973
process = basic_database.get("process")
8074

8175
actions.ActivityOpen.run([process.key])
8276

83-
group = application_instance.main_window.centralWidget().groups["Activity Details"]
77+
group = application.main_window.centralWidget().groups["Activity Details"]
8478
assert "activity_details_basic_process" in [group.widget(i).objectName() for i in range(group.count())]
8579

8680

87-
def test_product_open(application_instance, basic_database):
88-
product = basic_database.get("product_1")
89-
90-
actions.ActivityOpen.run([product.key])
91-
92-
group = application_instance.main_window.centralWidget().groups["Activity Details"]
93-
assert "activity_details_basic_process" in [group.widget(i).objectName() for i in range(group.count())]
81+
# def test_product_open(application_instance, basic_database):
82+
# product = basic_database.get("product_1")
83+
#
84+
# actions.ActivityOpen.run([product.key])
85+
#
86+
# group = application_instance.main_window.centralWidget().groups["Activity Details"]
87+
# assert "activity_details_basic_process" in [group.widget(i).objectName() for i in range(group.count())]
88+
# assert True
9489

9590

9691
# def test_activity_relink(ab_app, monkeypatch, qtbot):

tests/actions/test_database_actions.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
import pytest
21
import bw2data as bd
3-
from bw2data.errors import BW2Exception
42
from qtpy import QtWidgets
53

6-
from activity_browser import actions
4+
from activity_browser import actions, application
75

86

97
def test_database_delete(monkeypatch, basic_database):
@@ -18,7 +16,7 @@ def test_database_delete(monkeypatch, basic_database):
1816
assert basic_database.name not in bd.databases
1917

2018

21-
def test_database_duplicate(monkeypatch, qtbot, basic_database, application_instance):
19+
def test_database_duplicate(monkeypatch, qtbot, basic_database):
2220
from activity_browser.actions.database.database_duplicate import DuplicateDatabaseDialog
2321

2422
dup_db = "db_that_is_duplicated"
@@ -33,26 +31,26 @@ def test_database_duplicate(monkeypatch, qtbot, basic_database, application_inst
3331

3432
actions.DatabaseDuplicate.run(basic_database.name)
3533

36-
dialog = application_instance.main_window.findChild(DuplicateDatabaseDialog)
34+
dialog = application.main_window.findChild(DuplicateDatabaseDialog)
3735
with qtbot.waitSignal(dialog.dup_thread.finished, timeout=60 * 1000):
3836
pass
3937

4038
assert basic_database.name in bd.databases
4139
assert dup_db in bd.databases
4240

4341

44-
def test_database_export(application_instance):
42+
def test_database_export(main_window):
4543
# TODO: implement when we've redone the export wizard and actions
4644
from activity_browser.ui.wizards.db_export_wizard import DatabaseExportWizard
4745

4846
actions.DatabaseExport.run()
4947

50-
wizard = application_instance.main_window.findChild(DatabaseExportWizard)
48+
wizard = main_window.findChild(DatabaseExportWizard)
5149
assert wizard.isVisible()
5250
wizard.destroy()
5351

5452

55-
def test_database_new(monkeypatch, application_instance, clean_project):
53+
def test_database_new(monkeypatch, basic_database):
5654
from activity_browser.actions.database.database_new import NewDatabaseDialog
5755

5856
new_db = "db_that_is_new"

tests/conftest.py

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,42 +2,44 @@
22

33
import pytest
44

5+
import PySide6
6+
from qtpy import QtCore, QtGui, QtWidgets, QT_API
7+
58
import bw2data as bd
69
import bw_functional as bf
710
from bw2data.tests import bw2test
811

9-
from activity_browser import application, signals
12+
import activity_browser
13+
from activity_browser import application
14+
from activity_browser.signals import ABSignals
1015
from activity_browser.ui.widgets import MainWindow, CentralTabWidget
1116
from activity_browser.layouts import pages
1217

1318

19+
@pytest.fixture()
20+
def main_window(qtbot):
21+
"""Return the main window of the application instance."""
22+
main_window = MainWindow()
23+
central_widget = CentralTabWidget(main_window)
1424

15-
@pytest.fixture(scope="session")
16-
def application_instance():
17-
"""Initialize the application and yield it. Cleanup the 'test' project
18-
after session is complete.
19-
"""
20-
application.main_window = MainWindow()
25+
qtbot.addWidget(main_window)
26+
setattr(application, "main_window", main_window)
2127

22-
central_widget = CentralTabWidget(application.main_window)
2328
central_widget.addTab(pages.WelcomePage(), "Welcome")
2429
central_widget.addTab(pages.ParametersPage(), "Parameters")
2530

26-
application.main_window.setCentralWidget(central_widget)
27-
application.show()
31+
main_window.setCentralWidget(central_widget)
32+
main_window.show()
2833

29-
yield application
34+
yield main_window
3035

31-
application.close()
36+
# main_window.close()
37+
main_window.deleteLater()
38+
qtbot.wait(10)
3239

3340
@pytest.fixture
3441
@bw2test
35-
def clean_project(application_instance):
36-
return
37-
# signals.project.changed.emit(bd.projects.dataset, bd.projects.dataset)
38-
39-
@pytest.fixture
40-
def basic_database(clean_project):
42+
def basic_database(main_window):
4143
from fixtures.basic import DATABASE, METHOD, CALCULATION_SETUP
4244

4345
db = bf.FunctionalSQLiteDatabase("basic")

0 commit comments

Comments
 (0)