Beispiel #1
0
        public async Task BuildAsync_WhenCalled_AssertToCookieWasCalledOnCookieHelperWithDashboardSettingsViewModel()
        {
            int  numberOfNews       = _random.Next(25, 50);
            bool useReddit          = _random.Next(100) > 50;
            bool includeNsfwContent = _random.Next(100) > 50;
            bool onlyNsfwContent    = _random.Next(100) > 50;
            IRedditAccessToken redditAccessToken = CreateRedditAccessToken();
            IDashboardSettings dashboardSettings = CreateDashboardSettings(numberOfNews, useReddit, includeNsfwContent, onlyNsfwContent, redditAccessToken);

            IViewModelBuilder <DashboardSettingsViewModel, IDashboardSettings> sut = CreateSut();

            DashboardSettingsViewModel result = await sut.BuildAsync(dashboardSettings);

            _cookieHelperMock.Verify(m => m.ToCookie(It.Is <DashboardSettingsViewModel>(value => value == result)), Times.Once);
        }
        public async Task BuildAsync_WhenCalled_ReturnsDashboard()
        {
            IDashboardSettings dashboardSettings = CreateDashboardSettings();

            List <ISystemError> systemErrors = BuildSystemErrors(_random.Next(1, 10));
            IDashboardFactory   sut          = CreateSut(systemErrors: systemErrors);

            IDashboard dashboard = await sut.BuildAsync(dashboardSettings);

            Assert.IsNotNull(dashboard);
            Assert.IsNotNull(dashboard.SystemErrors);
            Assert.AreEqual(systemErrors.Count, dashboard.SystemErrors.Count());
            Assert.IsNotNull(dashboard.Settings);
            Assert.AreEqual(dashboardSettings, dashboard.Settings);

            systemErrors.ForEach(systemError => Assert.IsTrue(dashboard.SystemErrors.Contains(systemError)));
        }
Beispiel #3
0
        public async Task BuildAsync_WhenCalled_AssertToCookieWasCalledOnCookieHelperWithDashboardViewModel()
        {
            List <INews>             newsCollection            = CreateNewsCollection(_random.Next(50, 75)).ToList();
            List <ISystemError>      systemErrorCollection     = CreateSystemErrorCollection(_random.Next(10, 15)).ToList();
            IDashboardSettings       dashboardSettings         = CreateDashboardSettings();
            IRedditAuthenticatedUser redditAuthenticatedUser   = CreateRedditAuthenticatedUser();
            List <IRedditSubreddit>  redditSubredditCollection = CreateRedditSubredditCollection(_random.Next(10, 25)).ToList();
            List <IRedditLink>       redditLinkCollection      = CreateRedditLinkCollection(_random.Next(50, 75)).ToList();
            IDashboard dashboard = CreateDashboard(newsCollection: newsCollection, systemErrorCollection: systemErrorCollection, dashboardSettings: dashboardSettings, redditAuthenticatedUser: redditAuthenticatedUser, redditSubredditCollection: redditSubredditCollection, redditLinkCollection: redditLinkCollection);

            DashboardSettingsViewModel dashboardSettingsViewModel = CreateDashboardSettingsViewModel();
            ObjectViewModel <IRedditAuthenticatedUser>         objectViewModelForRedditAuthenticatedUser = CreateObjectViewModel <IRedditAuthenticatedUser>(redditAuthenticatedUser, DateTime.Now.AddDays(_random.Next(1, 365) * -1).AddMinutes(_random.Next(-120, 120)));
            IViewModelBuilder <DashboardViewModel, IDashboard> sut = CreateSut(dashboardSettingsViewModel: dashboardSettingsViewModel, objectViewModelForRedditAuthenticatedUser: objectViewModelForRedditAuthenticatedUser);

            DashboardViewModel result = await sut.BuildAsync(dashboard);

            _cookieHelperMock.Verify(m => m.ToCookie(It.Is <DashboardViewModel>(value => value == result)), Times.Once);
        }
Beispiel #4
0
        public void ToDashboardSettings_WhenCalled_ReturnsInitializedDashboardSettings()
        {
            int    numberOfNews       = _random.Next(25, 50);
            bool   useReddit          = _random.Next(100) > 50;
            bool   includeNsfwContent = _random.Next(100) > 50;
            bool   onlyNsfwContent    = _random.Next(100) > 50;
            string redditAccessToken  = CreateReddditAccessToken().ToBase64();

            OSDevGrp.MyDashboard.Web.Models.DashboardSettingsViewModel sut = CreateSut(numberOfNews, useReddit, includeNsfwContent, onlyNsfwContent, redditAccessToken);

            IDashboardSettings result = sut.ToDashboardSettings();

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(DashboardSettings));
            Assert.AreEqual(numberOfNews, result.NumberOfNews);
            Assert.AreEqual(useReddit, result.UseReddit);
            Assert.AreEqual(includeNsfwContent, result.IncludeNsfwContent);
            Assert.AreEqual(onlyNsfwContent, result.OnlyNsfwContent);
            Assert.IsNotNull(result.RedditAccessToken);
        }
        public async Task BuildAsync_WhenCalled_AssertBuildAsyncWasCalledOnEachDashboardContentBuilderWhichShouldBuild()
        {
            IDashboardSettings dashboardSettings = CreateDashboardSettings();

            IDashboardFactory sut = CreateSut();

            await sut.BuildAsync(dashboardSettings);

            _dashboardContentBuilder1Mock.Verify(m => m.BuildAsync(
                                                     It.Is <IDashboardSettings>(value => value == dashboardSettings),
                                                     It.IsNotNull <IDashboard>()),
                                                 Times.Once);
            _dashboardContentBuilder2Mock.Verify(m => m.BuildAsync(
                                                     It.Is <IDashboardSettings>(value => value == dashboardSettings),
                                                     It.IsNotNull <IDashboard>()),
                                                 Times.Once);
            _dashboardContentBuilder3Mock.Verify(m => m.BuildAsync(
                                                     It.Is <IDashboardSettings>(value => value == dashboardSettings),
                                                     It.IsNotNull <IDashboard>()),
                                                 Times.Once);
        }
Beispiel #6
0
        public async Task BuildAsync_WhenCalled_ReturnsInitializedDashboardSettingsViewModel()
        {
            int  numberOfNews       = _random.Next(25, 50);
            bool useReddit          = _random.Next(100) > 50;
            bool includeNsfwContent = _random.Next(100) > 50;
            bool onlyNsfwContent    = _random.Next(100) > 50;
            IRedditAccessToken redditAccessToken = CreateRedditAccessToken();
            IDashboardSettings dashboardSettings = CreateDashboardSettings(numberOfNews, useReddit, includeNsfwContent, onlyNsfwContent, redditAccessToken);

            IViewModelBuilder <DashboardSettingsViewModel, IDashboardSettings> sut = CreateSut();

            DashboardSettingsViewModel result = await sut.BuildAsync(dashboardSettings);

            Assert.IsNotNull(result);
            Assert.AreEqual(numberOfNews, result.NumberOfNews);
            Assert.AreEqual(useReddit, result.UseReddit);
            Assert.IsFalse(result.AllowNsfwContent);
            if (includeNsfwContent)
            {
                Assert.IsTrue(result.IncludeNsfwContent.HasValue);
                Assert.IsTrue(result.IncludeNsfwContent.Value);
            }
            else
            {
                Assert.IsFalse(result.IncludeNsfwContent.HasValue);
                Assert.IsNull(result.IncludeNsfwContent);
            }
            if (onlyNsfwContent)
            {
                Assert.IsTrue(result.OnlyNsfwContent.HasValue);
                Assert.IsTrue(result.OnlyNsfwContent.Value);
            }
            else
            {
                Assert.IsFalse(result.OnlyNsfwContent.HasValue);
                Assert.IsNull(result.OnlyNsfwContent);
            }
            Assert.IsNotNull(result.RedditAccessToken);
            Assert.IsFalse(result.ExportData);
        }
Beispiel #7
0
        public async Task BuildAsync(IDashboardSettings dashboardSettings, IDashboard dashboard)
        {
            if (dashboardSettings == null)
            {
                throw new ArgumentNullException(nameof(dashboardSettings));
            }
            if (dashboard == null)
            {
                throw new ArgumentNullException(nameof(dashboard));
            }

            try
            {
                IEnumerable <INews> news = await _newLogic.GetNewsAsync(dashboardSettings.NumberOfNews);

                dashboard.Replace(news);
            }
            catch (Exception ex)
            {
                await _exceptionHandler.HandleAsync(ex);
            }
        }
Beispiel #8
0
        public void ToDashboardSettings_WhenCalledWhereRedditAccessTokenIsBase64_ReturnsInitializedDashboardSettings()
        {
            string   accessToken       = Guid.NewGuid().ToString("D");
            string   tokenType         = Guid.NewGuid().ToString("D");
            int      expiresIn         = _random.Next(60, 300);
            string   scope             = Guid.NewGuid().ToString("D");
            string   refreshToken      = Guid.NewGuid().ToString("D");
            DateTime received          = DateTime.UtcNow;
            string   redditAccessToken = CreateReddditAccessToken(accessToken, tokenType, expiresIn, scope, refreshToken, received).ToBase64();

            OSDevGrp.MyDashboard.Web.Models.DashboardSettingsViewModel sut = CreateSut(redditAccessToken: redditAccessToken);

            IDashboardSettings result = sut.ToDashboardSettings();

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(DashboardSettings));
            Assert.IsNotNull(result.RedditAccessToken);
            Assert.IsInstanceOfType(result.RedditAccessToken, typeof(RedditAccessToken));
            Assert.AreEqual(accessToken, result.RedditAccessToken.AccessToken);
            Assert.AreEqual(tokenType, result.RedditAccessToken.TokenType);
            Assert.AreEqual(received.ToLocalTime().AddSeconds(expiresIn).ToString(), result.RedditAccessToken.Expires.ToString());
            Assert.AreEqual(scope, result.RedditAccessToken.Scope);
            Assert.AreEqual(refreshToken, result.RedditAccessToken.RefreshToken);
        }
        public void Constructor_WhenCalled_ExpectNumberOfNewsEqualTo50()
        {
            IDashboardSettings sut = CreateSut();

            Assert.AreEqual(50, sut.NumberOfNews);
        }
Beispiel #10
0
 public Config(IMonitorSettings monitor, IDashboardSettings dashboard, IThrottlingSettings throttlingSettings)
 {
     Monitor = monitor;
     Dashboard = dashboard;
     Throttling = throttlingSettings.Throttling;
 }
Beispiel #11
0
        private Mock <IDashboard> CreateDashboardMock(IEnumerable <INews> newsCollection = null, IEnumerable <ISystemError> systemErrorCollection = null, IDashboardSettings dashboardSettings = null, IRedditAuthenticatedUser redditAuthenticatedUser = null, IEnumerable <IRedditSubreddit> redditSubredditCollection = null, IEnumerable <IRedditLink> redditLinkCollection = null, IDashboardRules dashboardRules = null)
        {
            Mock <IDashboard> dashboardMock = new Mock <IDashboard>();

            dashboardMock.Setup(m => m.News)
            .Returns(newsCollection ?? CreateNewsCollection(_random.Next(50, 100)));
            dashboardMock.Setup(m => m.SystemErrors)
            .Returns(systemErrorCollection ?? CreateSystemErrorCollection(_random.Next(5, 10)));
            dashboardMock.Setup(m => m.Settings)
            .Returns(dashboardSettings);
            dashboardMock.Setup(m => m.RedditAuthenticatedUser)
            .Returns(redditAuthenticatedUser);
            dashboardMock.Setup(m => m.RedditSubreddits)
            .Returns(redditSubredditCollection ?? CreateRedditSubredditCollection(_random.Next(10, 25)));
            dashboardMock.Setup(m => m.RedditLinks)
            .Returns(redditLinkCollection ?? CreateRedditLinkCollection(_random.Next(50, 100)));
            dashboardMock.Setup(m => m.Rules)
            .Returns(dashboardRules ?? CreateDashboardRules());
            return(dashboardMock);
        }
 public ConfigController(IMonitorSettings monitorSettings, IDashboardSettings dashboardSettings, IThrottlingSettings throttlingSettings)
 {
     _config = new Config(monitorSettings, dashboardSettings, throttlingSettings);
 }
Beispiel #13
0
 private IDashboard CreateDashboard(IEnumerable <INews> newsCollection = null, IEnumerable <ISystemError> systemErrorCollection = null, IDashboardSettings dashboardSettings = null, IRedditAuthenticatedUser redditAuthenticatedUser = null, IEnumerable <IRedditSubreddit> redditSubredditCollection = null, IEnumerable <IRedditLink> redditLinkCollection = null, IDashboardRules dashboardRules = null)
 {
     return(CreateDashboardMock(newsCollection, systemErrorCollection, dashboardSettings, redditAuthenticatedUser, redditSubredditCollection, redditLinkCollection, dashboardRules).Object);
 }
 public ConfigController(IMonitorSettings monitorSettings, IDashboardSettings dashboardSettings, IThrottlingSettings throttlingSettings)
 {
     _config = new Config(monitorSettings, dashboardSettings, throttlingSettings);
 }
Beispiel #15
0
 public Config(IMonitorSettings monitor, IDashboardSettings dashboard, IThrottlingSettings throttlingSettings)
 {
     Monitor    = monitor;
     Dashboard  = dashboard;
     Throttling = throttlingSettings.Throttling;
 }
        public void Constructor_WhenCalled_ExpectOnlyNsfwContentToFalse()
        {
            IDashboardSettings sut = CreateSut();

            Assert.IsFalse(sut.OnlyNsfwContent);
        }
        public void Constructor_WhenCalled_ExpectRedditAccessTokenEqualToNull()
        {
            IDashboardSettings sut = CreateSut();

            Assert.IsNull(sut.RedditAccessToken);
        }
        public void Constructor_WhenCalled_ExpectUseRedditEqualToFalse()
        {
            IDashboardSettings sut = CreateSut();

            Assert.IsFalse(sut.UseReddit);
        }