示例#1
0
        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);
        }
示例#2
0
        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());
        }