Ejemplo n.º 1
0
        public void TestDetails_ShouldCallFactoryCreateLogEntryViewModel_AsManyTimesAsLogEntriesCount(int id, string userId)
        {
            // Arrange
            var user = new User {
                Id = userId
            };
            var log = new TrainingLog {
                User = user
            };

            var mockedLogService = new Mock <ILogService>();

            mockedLogService.Setup(s => s.GetTrainingLogById(It.IsAny <int>())).Returns(log);

            var mockedAuthenticationProvider = new Mock <IAuthenticationProvider>();

            var mockedFactory = new Mock <IViewModelFactory>();

            var controller = new LogsController(mockedLogService.Object, mockedAuthenticationProvider.Object,
                                                mockedFactory.Object);

            // Act
            var result = controller.Details(id);

            // Assert
            mockedFactory.Verify(f => f.CreateLogEntryViewModel(It.IsAny <LogEntry>(), userId), Times.Exactly(log.Entries.Count));
        }
Ejemplo n.º 2
0
        public void TestDetails_ShouldCallAuthenticationProviderCurrentUserId(int id, string userId)
        {
            // Arrange
            var user = new User {
                Id = userId
            };
            var log = new TrainingLog {
                User = user
            };

            var mockedLogService = new Mock <ILogService>();

            mockedLogService.Setup(s => s.GetTrainingLogById(It.IsAny <int>())).Returns(log);

            var mockedAuthenticationProvider = new Mock <IAuthenticationProvider>();
            var mockedFactory = new Mock <IViewModelFactory>();

            var controller = new LogsController(mockedLogService.Object, mockedAuthenticationProvider.Object,
                                                mockedFactory.Object);

            // Act
            controller.Details(id);

            // Assert
            mockedAuthenticationProvider.Verify(p => p.CurrentUserId, Times.Once);
        }
Ejemplo n.º 3
0
        public void TestDetails_ShouldReturnView(int id, string userId)
        {
            // Arrange
            var user = new User {
                Id = userId
            };
            var log = new TrainingLog {
                User = user
            };

            var mockedLogService = new Mock <ILogService>();

            mockedLogService.Setup(s => s.GetTrainingLogById(It.IsAny <int>())).Returns(log);

            var mockedAuthenticationProvider = new Mock <IAuthenticationProvider>();

            var mockedFactory = new Mock <IViewModelFactory>();

            var controller = new LogsController(mockedLogService.Object, mockedAuthenticationProvider.Object,
                                                mockedFactory.Object);

            // Act
            var result = controller.Details(id);

            // Assert
            Assert.IsInstanceOf <ViewResult>(result);
        }
Ejemplo n.º 4
0
        public void TestDetails_PageIsNegative_ShouldSetPageToLastPage(int id, string userId, int page)
        {
            // Arrange
            var vote = new Vote {
                UserId = userId
            };

            var user = new User {
                Id = userId
            };
            var log = new TrainingLog {
                User = user
            };

            log.Votes.Add(vote);

            var mockedLogService = new Mock <ILogService>();

            mockedLogService.Setup(s => s.GetTrainingLogById(It.IsAny <int>())).Returns(log);

            var mockedAuthenticationProvider = new Mock <IAuthenticationProvider>();

            var model = new LogDetailsViewModel();

            var currentPage = page;

            var mockedFactory = new Mock <IViewModelFactory>();

            mockedFactory.Setup(f => f.CreateLogDetailsViewModel(It.IsAny <TrainingLog>(),
                                                                 It.IsAny <bool>(),
                                                                 It.IsAny <bool>(),
                                                                 It.IsAny <bool>(),
                                                                 It.IsAny <IPagedList <LogEntryViewModel> >()))
            .Returns((TrainingLog trainingLog,
                      bool isAuthenticated,
                      bool isOwner,
                      bool canVote,
                      IPagedList <LogEntryViewModel> entries) =>
            {
                currentPage = entries.PageNumber;
                return(model);
            });

            var controller = new LogsController(mockedLogService.Object, mockedAuthenticationProvider.Object,
                                                mockedFactory.Object);

            // Act
            controller.Details(id, page);

            // Assert
            Assert.AreNotEqual(page, currentPage);
        }
Ejemplo n.º 5
0
        public void TestDetails_ShouldSetCorrectEntriesToModel(int id, string userId, int page, int count)
        {
            // Arrange
            var entry = new LogEntry {
                Log = new TrainingLog()
            };
            var entries = new List <LogEntry> {
                entry
            };

            var user = new User {
                Id = userId
            };
            var log = new TrainingLog {
                User = user, Entries = entries
            };

            var mockedLogService = new Mock <ILogService>();

            mockedLogService.Setup(s => s.GetTrainingLogById(It.IsAny <int>())).Returns(log);

            var mockedAuthenticationProvider = new Mock <IAuthenticationProvider>();

            var entryViewModel   = new LogEntryViewModel();
            var viewModelEntries = new List <LogEntryViewModel> {
                entryViewModel
            };

            var mockedFactory = new Mock <IViewModelFactory>();

            mockedFactory.Setup(f => f.CreateLogDetailsViewModel(It.IsAny <TrainingLog>(),
                                                                 It.IsAny <bool>(),
                                                                 It.IsAny <bool>(),
                                                                 It.IsAny <bool>(),
                                                                 It.IsAny <IPagedList <LogEntryViewModel> >()))
            .Returns((TrainingLog trainingLog,
                      bool isAuthenticated,
                      bool isOwner,
                      bool canVote,
                      IPagedList <LogEntryViewModel> entriesPagedList) => new LogDetailsViewModel {
                Entries = viewModelEntries.ToPagedList(page, count)
            });

            var controller = new LogsController(mockedLogService.Object, mockedAuthenticationProvider.Object,
                                                mockedFactory.Object);

            // Act
            var result = controller.Details(id, page, count) as ViewResult;

            // Assert
            CollectionAssert.AreEqual(viewModelEntries, ((LogDetailsViewModel)result.Model).Entries);
        }
Ejemplo n.º 6
0
        public void TestDetails_UserIsAdmin_ShouldSetCanEditToTrue(int id, string userId, bool isAuthenticated)
        {
            // Arrange
            var user = new User {
                Id = userId
            };
            var log = new TrainingLog {
                User = user
            };

            var mockedLogService = new Mock <ILogService>();

            mockedLogService.Setup(s => s.GetTrainingLogById(It.IsAny <int>())).Returns(log);

            var mockedAuthenticationProvider = new Mock <IAuthenticationProvider>();

            mockedAuthenticationProvider.Setup(p => p.CurrentUserId).Returns(userId);
            mockedAuthenticationProvider.Setup(p => p.IsAuthenticated).Returns(isAuthenticated);
            mockedAuthenticationProvider.Setup(p => p.IsInRole(It.IsAny <string>(), It.IsAny <string>())).Returns(true);

            var mockedFactory = new Mock <IViewModelFactory>();

            var controller = new LogsController(mockedLogService.Object, mockedAuthenticationProvider.Object,
                                                mockedFactory.Object);

            var canEdit = false;

            mockedFactory.Setup(
                f =>
                f.CreateLogDetailsViewModel(It.IsAny <TrainingLog>(),
                                            It.IsAny <bool>(),
                                            It.IsAny <bool>(),
                                            It.IsAny <bool>(),
                                            It.IsAny <IPagedList <LogEntryViewModel> >()))
            .Returns((TrainingLog l,
                      bool isAuth,
                      bool edit,
                      bool canVote,
                      IPagedList <LogEntryViewModel> e) =>
            {
                canEdit = true;
                return(new LogDetailsViewModel());
            });

            // Act
            controller.Details(id);

            // Assert
            Assert.IsTrue(canEdit);
        }
Ejemplo n.º 7
0
        public void TestDetails_ServiceDoesNotReturnLog_ShouldReturnHttpNotFound(int id, string userId)
        {
            // Arrange
            var mockedLogService = new Mock <ILogService>();

            var mockedAuthenticationProvider = new Mock <IAuthenticationProvider>();
            var mockedFactory = new Mock <IViewModelFactory>();

            var controller = new LogsController(mockedLogService.Object, mockedAuthenticationProvider.Object,
                                                mockedFactory.Object);

            // Act
            var result = controller.Details(id);

            // Assert
            Assert.IsInstanceOf <HttpNotFoundResult>(result);
        }
Ejemplo n.º 8
0
        public void TestDetails_LogContainsViewWithCurrentUser_ShouldNotBeAbleToVote(int id, string userId, bool isAuthenticated)
        {
            // Arrange
            var vote = new Vote {
                UserId = userId
            };

            var user = new User {
                Id = userId
            };
            var log = new TrainingLog {
                User = user
            };

            log.Votes.Add(vote);

            var mockedLogService = new Mock <ILogService>();

            mockedLogService.Setup(s => s.GetTrainingLogById(It.IsAny <int>())).Returns(log);

            var mockedAuthenticationProvider = new Mock <IAuthenticationProvider>();

            var model = new LogDetailsViewModel();

            var mockedFactory = new Mock <IViewModelFactory>();

            mockedFactory.Setup(f => f.CreateLogDetailsViewModel(It.IsAny <TrainingLog>(),
                                                                 It.IsAny <bool>(),
                                                                 It.IsAny <bool>(),
                                                                 It.IsAny <bool>(),
                                                                 It.IsAny <IPagedList <LogEntryViewModel> >()))
            .Returns(model);

            var controller = new LogsController(mockedLogService.Object, mockedAuthenticationProvider.Object,
                                                mockedFactory.Object);

            var expectedIsOwner = log.User.Id.Equals(userId);
            var expectedCanVote = (log.Votes
                                   .FirstOrDefault(v => v.UserId.Equals(userId))) == null && !expectedIsOwner && isAuthenticated;

            // Act
            var result = controller.Details(id) as ViewResult;

            // Assert
            Assert.AreEqual(expectedCanVote, ((LogDetailsViewModel)result.Model).CanVote);
        }
Ejemplo n.º 9
0
        public void TestDetails_ShouldCallFactoryCreateLogDetailsViewModel(int id, string userId, bool isAuthenticated)
        {
            // Arrange
            var user = new User {
                Id = userId
            };
            var log = new TrainingLog {
                User = user
            };

            var mockedLogService = new Mock <ILogService>();

            mockedLogService.Setup(s => s.GetTrainingLogById(It.IsAny <int>())).Returns(log);

            var mockedAuthenticationProvider = new Mock <IAuthenticationProvider>();

            mockedAuthenticationProvider.Setup(p => p.CurrentUserId).Returns(userId);
            mockedAuthenticationProvider.Setup(p => p.IsAuthenticated).Returns(isAuthenticated);

            var mockedFactory = new Mock <IViewModelFactory>();

            var controller = new LogsController(mockedLogService.Object, mockedAuthenticationProvider.Object,
                                                mockedFactory.Object);

            var expectedIsOwner = userId.Equals(user.Id);
            var expectedCanVote = (log.Votes
                                   .FirstOrDefault(v => v.UserId.Equals(userId))) == null && !expectedIsOwner && isAuthenticated;

            // Act
            controller.Details(id);

            // Assert
            mockedFactory.Verify(f => f.CreateLogDetailsViewModel(log,
                                                                  isAuthenticated,
                                                                  expectedIsOwner,
                                                                  expectedCanVote,
                                                                  It.IsAny <IPagedList <LogEntryViewModel> >()));
        }
Ejemplo n.º 10
0
        public void LogsController_Details_ReturnsViewResult()
        {
            var result = _logsController.Details(new AmazonLog());

            result.Should().BeOfType <ViewResult>();
        }