private void AddMediaManagerComponents(IServiceCollection services) { IPostOperationValidator validator = new PostOperationValidator(); services.AddSingleton(validator); IProvidersOperator @operator = new ProvidersOperator(); services.AddSingleton(@operator); IPostsChecker postsChecker = new PostsChecker(validator, @operator); services.AddSingleton(postsChecker); var intervalSeconds = Convert.ToDouble( Configuration["MediaManager:WatchIntervalSeconds"]); IPostsWatcher postsWatcher = new PostsWatcher( TimeSpan.FromSeconds(intervalSeconds), postsChecker); services.AddSingleton(postsWatcher); }
private async Task Test(IEnumerable <ISocialMediaProvider> providers) { var watchedUsers = new List <MockUser>() { new MockUser() }; var validator = new MockPostOperationValidator(); validator.OnHasUserOperated.Subscribe(OnHasUserOperated); validator.OnUserOperatedOnPost.Subscribe(OnUserOperated); var @operator = new MockProvidersOperator(); foreach (ISocialMediaProvider provider in providers) { @operator.Providers.Add(provider); } @operator.OnOperate.Subscribe(OnOperate); IPostsChecker checker = new PostsChecker( validator, @operator); checker.WatchedUsers.AddRange(watchedUsers); await checker.CheckAllUsersAsync(DateTime.Now); await Task.Delay(TimeSpan.FromMilliseconds(15)); int usersCount = watchedUsers.Count; int callCount = usersCount * @operator.Providers.Count; Assert.Equal(callCount, _onHasUserOperated.Get()); Assert.Equal(callCount, _onUserOperated.Get()); Assert.Equal(usersCount, _onOperate.Get()); }