public async Task TestDelayedLimitHandle() { var observer = CreateObserver(); var app = CreateAppDailyLimit(100); var appInfo = AppInfo.Create(app.Name); var logInfoObservable = Observable.Return(new AppChangedArgs(LogInfo.Create(appInfo, ""))); windowChangedNotifier.Setup(n => n.AppChangedObservable).Returns(logInfoObservable); repository.Setup(d => d.GetFiltered <Aplication>(It.IsAny <Expression <Func <Aplication, bool> > >(), It.IsAny <Expression <Func <Aplication, object> > >())) .Returns(new List <Aplication> { app }); repository.Setup(d => d.GetFilteredAsync <Aplication>(It.IsAny <Expression <Func <Aplication, bool> > >())).ReturnsAsync(new List <Aplication>() { app }); appDurationCalc.Setup(t => t.GetDuration(app.Name, LimitSpan.Day)).ReturnsAsync(0); observer.Initialize(new Setting() { TrackingEnabled = true }); limitHandler.Verify(h => h.Handle(app.Limits.First()), Times.Never); await Task.Delay(200); limitHandler.Verify(h => h.Handle(app.Limits.First()), Times.Once); }
public async Task TestLimitsCancel() { var observer = CreateObserver(); var app = CreateAppDailyLimit(100); var appInfo = AppInfo.Create(app.Name); var secondAppInfo = AppInfo.Create("some app"); var logInfoObservable = Observable.ToObservable(new List <AppChangedArgs>() { new AppChangedArgs(LogInfo.Create(appInfo, "")), new AppChangedArgs(LogInfo.Create(secondAppInfo, "")) }); logInfoObservable = Observable.ToObservable(await logInfoObservable.Buffer(TimeSpan.FromMilliseconds(100))); windowChangedNotifier.Setup(n => n.AppChangedObservable).Returns(logInfoObservable); repository.Setup(d => d.GetFiltered <Aplication>(It.IsAny <Expression <Func <Aplication, bool> > >(), It.IsAny <Expression <Func <Aplication, object> > >())) .Returns(new List <Aplication> { app }); repository.Setup(d => d.GetFilteredAsync <Aplication>(It.IsAny <Expression <Func <Aplication, bool> > >())).ReturnsAsync(new List <Aplication>() { app }); appDurationCalc.Setup(t => t.GetDuration(app.Name, LimitSpan.Day)).ReturnsAsync(0); observer.Initialize(new Setting() { TrackingEnabled = true }); await Task.Delay(50); limitHandler.Verify(h => h.Handle(It.IsAny <AppLimit>()), Times.Never); }
private void NotifyAppChanged() { var appInfo = AppInfo.Create(activeWindowHandle); var logInfo = LogInfo.Create(appInfo, activeWindowTitle); var args = new AppChangedArgs(logInfo); subject.OnNext(args); }