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); }
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); }
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); }
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); }
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); }
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); }