Exemplo n.º 1
0
        public void Details_WithValidId_ShouldReturnView()
        {
            // Arrange
            Mock <ICommentService>     commentService     = new Mock <ICommentService>();
            Mock <IPublicationService> publicationService = new Mock <IPublicationService>();

            PublicationDetailsServiceModel detailsModel = this.GetPublicationDetailsServiceModel();

            const int publicationId = 1;

            commentService
            .Setup(c => c.Total(publicationId))
            .Returns(20);

            commentService
            .Setup(c => c.All(
                       It.IsAny <int>(),
                       It.IsAny <int>(),
                       It.IsAny <int>(),
                       It.IsAny <int?>()))
            .Returns(this.GetComments());

            publicationService
            .Setup(p => p.Details(It.IsAny <int>()))
            .Returns(detailsModel);

            Mock <ClaimsPrincipal> claimsMock = new Mock <ClaimsPrincipal>();

            claimsMock.Setup(t => t.Identity.IsAuthenticated)
            .Returns(false);

            Mock <HttpContext> mockHttpContext = new Mock <HttpContext>();

            mockHttpContext.Setup(m => m.User).Returns(claimsMock.Object);

            PublicationsController publicationsController =
                new PublicationsController(commentService.Object, null, null, publicationService.Object, null)
            {
                ControllerContext = new ControllerContext
                {
                    HttpContext = mockHttpContext.Object
                }
            };

            // Act
            IActionResult result = publicationsController.Details(publicationId, 2);

            // Assert
            Assert.IsType <ViewResult>(result);
            object model = (result as ViewResult).Model;

            Assert.IsType <PublicationDetailsViewModel>(model);
            PublicationDetailsViewModel returnModel = model as PublicationDetailsViewModel;

            this.AssertPublicationDetailsViewModel(this.GetPublicationDetailsViewModel(), returnModel);
        }
Exemplo n.º 2
0
 private void ComparePublications(Publication expected, PublicationDetailsServiceModel actual)
 {
     Assert.Equal(expected.Id, actual.Id);
     Assert.Equal(expected.Title, actual.Title);
     Assert.Equal(expected.Content, actual.Content);
     Assert.Equal(expected.JournalId, actual.JournalId);
     Assert.Equal(expected.Discovery.Telescope.Name, actual.TelescopeName);
     Assert.Equal(expected.Discovery.StarSystem, actual.StarSystemName);
     Assert.Equal(expected.Discovery.TelescopeId, actual.TelescopeId);
     this.CompareDates(expected.ReleaseDate, actual.ReleaseDate);
 }
Exemplo n.º 3
0
        public void Details_WithExistingId_ShouldReturnValidPublicationDetails()
        {
            // Arrange
            StarStuffDbContext db = this.Database;
            PublicationService publicationService = new PublicationService(db);

            const int publicationId = 1;
            const int journalId     = 1;
            const int discoveryId   = 1;
            const int telescopeId   = 1;
            const int authorId      = 1;

            this.SeedJournal(db);
            this.SeedUser(db);

            Discovery discovery = new Discovery
            {
                Id         = discoveryId,
                StarSystem = "Star System Name"
            };

            Telescope telescope = new Telescope
            {
                Id          = telescopeId,
                Name        = "Telescope Name",
                Discoveries = new List <Discovery>
                {
                    discovery
                }
            };

            List <Publication> publications = this.GetFakePublications();

            foreach (var publication in publications)
            {
                publication.DiscoveryId = discoveryId;
                publication.JournalId   = journalId;
                publication.AuthorId    = authorId;
            }

            db.Telescopes.Add(telescope);
            db.Publications.AddRange(publications);
            db.SaveChanges();

            Publication expected = publications.First();

            // Act
            PublicationDetailsServiceModel actual = publicationService.Details(publicationId);

            // Assert
            this.ComparePublications(expected, actual);
        }
Exemplo n.º 4
0
 private void AssertPublicationDetailsServiceModel(PublicationDetailsServiceModel expected, PublicationDetailsServiceModel actual)
 {
     Assert.Equal(expected.Id, expected.Id);
     Assert.Equal(expected.Content, expected.Content);
     Assert.Equal(expected.JournalId, expected.JournalId);
     Assert.Equal(expected.JournalName, expected.JournalName);
     Assert.Equal(expected.TelescopeId, expected.TelescopeId);
     Assert.Equal(expected.TelescopeName, expected.TelescopeName);
     Assert.Equal(expected.StarSystemName, expected.StarSystemName);
     Assert.Equal(expected.Distance, expected.Distance);
     Assert.Equal(expected.AuthorName, expected.AuthorName);
     this.CompareDates(expected.ReleaseDate, actual.ReleaseDate);
 }
Exemplo n.º 5
0
        public void Details_WithNotValidId_ShouldReturnBadRequest()
        {
            // Arrange
            Mock <ICommentService>     commentService     = new Mock <ICommentService>();
            Mock <IPublicationService> publicationService = new Mock <IPublicationService>();

            PublicationDetailsServiceModel detailsModel = null;

            const int publicationId = 1;

            commentService
            .Setup(c => c.Total(publicationId))
            .Returns(1);

            publicationService
            .Setup(p => p.Details(It.IsAny <int>()))
            .Returns(detailsModel);

            Mock <ClaimsPrincipal> claimsMock = new Mock <ClaimsPrincipal>();

            claimsMock.Setup(t => t.Identity.IsAuthenticated)
            .Returns(false);

            Mock <HttpContext> mockHttpContext = new Mock <HttpContext>();

            mockHttpContext
            .Setup(m => m.User)
            .Returns(claimsMock.Object);

            PublicationsController publicationsController =
                new PublicationsController(commentService.Object, null, null, publicationService.Object, null)
            {
                ControllerContext = new ControllerContext
                {
                    HttpContext = mockHttpContext.Object
                }
            };

            // Act
            IActionResult result = publicationsController.Details(publicationId, 1);

            // Assert
            Assert.IsType <BadRequestResult>(result);
        }
Exemplo n.º 6
0
        public void Details_WithNotExistingId_ShouldReturnNull()
        {
            // Arrange
            StarStuffDbContext db = this.Database;
            PublicationService publicationService = new PublicationService(db);

            const int journalId   = 1;
            const int discoveryId = 1;
            const int telescopeId = 1;

            this.SeedJournal(db);
            Discovery discovery = new Discovery {
                Id = discoveryId
            };

            Telescope telescope = new Telescope
            {
                Id          = telescopeId,
                Discoveries = new List <Discovery>
                {
                    discovery
                }
            };

            List <Publication> publications = this.GetFakePublications();

            foreach (var publication in publications)
            {
                publication.DiscoveryId = discoveryId;
                publication.JournalId   = journalId;
            }

            db.Telescopes.Add(telescope);
            db.Publications.AddRange(publications);
            db.SaveChanges();

            // Act
            PublicationDetailsServiceModel result = publicationService.Details(11);

            // Assert
            Assert.Null(result);
        }