def test_upgrade_setting_value(self, mocked_remove, mocked_setValue, mocked_value, mocked_contains): """Test that the upgrade mechanism for settings correctly uses the new value when it's not a function""" # GIVEN: A settings object with an upgrade step to take (99, so that we don't interfere with real ones) local_settings = Settings() local_settings.__setting_upgrade_99__ = [ ('values/old value', 'values/new value', [(True, 1)]) ] settings.__version__ = 99 mocked_value.side_effect = [98, 1] mocked_contains.return_value = True # WHEN: upgrade_settings() is called local_settings.upgrade_settings() # THEN: The correct calls should have been made with the correct values assert mocked_value.call_count == 2, 'Settings().value() should have been called twice' assert mocked_value.call_args_list == [ call('settings/version', 0), call('values/old value') ] assert mocked_setValue.call_count == 2, 'Settings().setValue() should have been called twice' assert mocked_setValue.call_args_list == [ call('values/new value', True), call('settings/version', 99) ] mocked_contains.assert_called_once_with('values/old value') mocked_remove.assert_called_once_with('values/old value')
def test_upgrade_multiple_one_invalid(self, mocked_remove, mocked_setValue, mocked_value, mocked_contains): """Test that the upgrade mechanism for settings works correctly for multiple values where one is invalid""" # GIVEN: A settings object with an upgrade step to take local_settings = Settings() local_settings.__setting_upgrade_99__ = [ (['multiple/value 1', 'multiple/value 2'], 'single/new value', []) ] settings.__version__ = 99 mocked_value.side_effect = [98, 10] mocked_contains.side_effect = [True, False] # WHEN: upgrade_settings() is called local_settings.upgrade_settings() # THEN: The correct calls should have been made with the correct values mocked_value.assert_called_once_with('settings/version', 0) mocked_setValue.assert_called_once_with('settings/version', 99) assert mocked_contains.call_args_list == [call('multiple/value 1'), call('multiple/value 2')]