Example #1
0
    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')
Example #2
0
    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')]