diff --git a/src/vorta/views/networks_page.py b/src/vorta/views/networks_page.py index 61e91e4bc..6b119ee8d 100644 --- a/src/vorta/views/networks_page.py +++ b/src/vorta/views/networks_page.py @@ -29,16 +29,16 @@ def __init__(self, parent=None, profile_provider=None): self.track_profile_change(self.populate_wifi, call_now=True) def on_metered_networks_state_changed(self, state): - profile = self.profile() - attr = 'dont_run_on_metered_networks' - new_value = state != Qt.CheckState.Checked - self.save_profile_attr(attr, new_value) - self.meteredNetworksCheckBox.setChecked(False if profile.dont_run_on_metered_networks else True) + new_value = Qt.CheckState(state) != Qt.CheckState.Checked + self.save_profile_attr('dont_run_on_metered_networks', new_value) def populate_wifi(self): self.wifiListWidget.clear() profile = self.profile() if profile: + self.meteredNetworksCheckBox.blockSignals(True) + self.meteredNetworksCheckBox.setChecked(not profile.dont_run_on_metered_networks) + self.meteredNetworksCheckBox.blockSignals(False) for wifi in get_sorted_wifis(profile): item = QListWidgetItem() item.setText(wifi.ssid) diff --git a/tests/unit/test_networks_page.py b/tests/unit/test_networks_page.py new file mode 100644 index 000000000..3df39d230 --- /dev/null +++ b/tests/unit/test_networks_page.py @@ -0,0 +1,31 @@ +from vorta.store.models import BackupProfileModel + +PROFILE_NAME = 'Default' + + +def test_metered_checkbox_reflects_profile_on_load(qapp, window_load): + window_load() + checkbox = qapp.main_window.scheduleTab.networksPage.meteredNetworksCheckBox + + # init_db stores dont_run_on_metered_networks = False, so running on metered networks is allowed + assert checkbox.isChecked() + + +def test_metered_checkbox_click_persists(qapp): + page = qapp.main_window.scheduleTab.networksPage + checkbox = page.meteredNetworksCheckBox + + profile = BackupProfileModel.get(name=PROFILE_NAME) + profile.dont_run_on_metered_networks = True + profile.save() + checkbox.blockSignals(True) + checkbox.setChecked(False) + checkbox.blockSignals(False) + + checkbox.click() + assert checkbox.isChecked() + assert BackupProfileModel.get(name=PROFILE_NAME).dont_run_on_metered_networks is False + + checkbox.click() + assert not checkbox.isChecked() + assert BackupProfileModel.get(name=PROFILE_NAME).dont_run_on_metered_networks is True