def test_should_use_new_spreads_even_if_config_not_changed(self, tmpdir):
        # given
        reloadable_config = ReloadableConfig(self.write_spread_importing_config(tmpdir))
        reloadable_config.logger = MagicMock()

        # when
        spread_feed = {
            "buySpread": "0.1",
            "sellSpread": "1.0"
        }
        config = reloadable_config.get_config(spread_feed)

        # then
        assert config["usedBuySpread"] == 0.2
        assert config["usedSellSpread"] == 3.0

        # and
        # [a log message that the config was loaded gets generated]
        assert reloadable_config.logger.info.call_count == 1

        # when
        spread_feed = {
            "buySpread": "0.2",
            "sellSpread": "0.5"
        }
        config = reloadable_config.get_config(spread_feed)

        # then
        assert config["usedBuySpread"] == 0.4
        assert config["usedSellSpread"] == 1.5

        # and
        # [no log message that the config was reloaded gets generated]
        # [as it was only parsed again]
        assert reloadable_config.logger.info.call_count == 1
    def test_should_read_file_again_if_changed(self, tmpdir):
        # given
        reloadable_config = ReloadableConfig(self.write_advanced_config(tmpdir, "b"))
        reloadable_config.logger = MagicMock()

        # when
        config = reloadable_config.get_config({})

        # then
        assert config["a"] == "b"

        # and
        # [a log message that the config was loaded gets generated]
        assert reloadable_config.logger.info.call_count == 1

        # when
        self.write_advanced_config(tmpdir, "z")
        config = reloadable_config.get_config({})

        # then
        assert config["a"] == "z"

        # and
        # [a log message that the config was reloaded gets generated]
        assert reloadable_config.logger.info.call_count == 2
    def test_should_use_new_spreads_even_if_config_not_changed(self, tmpdir):
        # given
        reloadable_config = ReloadableConfig(self.write_spread_importing_config(tmpdir))
        reloadable_config.logger = MagicMock()

        # when
        spread_feed = {
            "buySpread": "0.1",
            "sellSpread": "1.0"
        }
        config = reloadable_config.get_config(spread_feed)

        # then
        assert config["usedBuySpread"] == 0.2
        assert config["usedSellSpread"] == 3.0

        # and
        # [a log message that the config was loaded gets generated]
        assert reloadable_config.logger.info.call_count == 1

        # when
        spread_feed = {
            "buySpread": "0.2",
            "sellSpread": "0.5"
        }
        config = reloadable_config.get_config(spread_feed)

        # then
        assert config["usedBuySpread"] == 0.4
        assert config["usedSellSpread"] == 1.5

        # and
        # [a log message that the config was reloaded gets generated]
        assert reloadable_config.logger.info.call_count == 2