public void Sync_ShouldSet_AutoStartup_Enabled(bool value)
        {
            _appSettings.StartOnStartup.Returns(value);
            _autoStartup.Enabled.Returns(value);
            var startup = new SyncableAutoStartup(_appSettings, _scheduler, _autoStartup);

            startup.Sync();

            _autoStartup.Received(1).Enabled = value;
        }
        public void Sync_ShouldSchedule_SyncBack_WhenSyncFails()
        {
            _appSettings.StartOnStartup.Returns(true);
            _autoStartup.Enabled.Returns(false);
            _autoStartup.When(x => x.Enabled = Arg.Any <bool>()).Do(x => { _autoStartup.Enabled.Returns(false); });
            var startup = new SyncableAutoStartup(_appSettings, _scheduler, _autoStartup);

            startup.Sync();

            _appSettings.DidNotReceive().StartOnStartup = Arg.Any <bool>();
            _scheduler.Received(1).Schedule(Arg.Any <Action>());
        }
        public void Sync_ShouldSet_AllSettings_StartOnStartup_WhenSyncFailed()
        {
            Action syncBack = null;

            _appSettings.StartOnStartup.Returns(true);
            _autoStartup.Enabled.Returns(false);
            _autoStartup.When(x => x.Enabled = Arg.Any <bool>()).Do(x => { _autoStartup.Enabled.Returns(false); });
            _scheduler.When(x => x.Schedule(Arg.Any <Action>())).Do(x => syncBack = x.Arg <Action>());
            var startup = new SyncableAutoStartup(_appSettings, _scheduler, _autoStartup);

            startup.Sync();
            syncBack();

            _appSettings.Received(1).StartOnStartup = false;
        }