public void CreateGet_ShouldReturnCorrectViewModel() { // Arrange Mock <IDiscoveryService> discoveryService = new Mock <IDiscoveryService>(); Mock <IJournalService> journalService = new Mock <IJournalService>(); PublicationFormViewModel formModel = this.GetPublicationFormViewModel(); const int journalId = 1; discoveryService .Setup(d => d.DiscoveryDropdown(It.IsAny <int>())) .Returns(this.GetDiscoveriesDropdown()); journalService .Setup(j => j.GetName(It.IsAny <int>())) .Returns(formModel.JournalName); PublicationsController publicationsController = new PublicationsController(null, discoveryService.Object, journalService.Object, null); // Act IActionResult result = publicationsController.Create(journalId); // Assert Assert.IsType <ViewResult>(result); object model = (result as ViewResult).Model; Assert.IsType <PublicationFormViewModel>(model); PublicationFormViewModel returnModel = model as PublicationFormViewModel; Assert.Equal(formModel.JournalName, returnModel.JournalName); this.AssertDiscoveriesSelectList(returnModel.Discoveries); }
public void CreatePost_WithNotValidModelState_ShouldReturnCorrectViewModel() { // Arrange Mock <IDiscoveryService> discoveryService = new Mock <IDiscoveryService>(); Mock <IJournalService> journalService = new Mock <IJournalService>(); PublicationFormViewModel formModel = this.GetPublicationFormViewModel(); const int journalId = 1; discoveryService .Setup(d => d.DiscoveryDropdown(It.IsAny <int>())) .Returns(this.GetDiscoveriesDropdown()); journalService .Setup(j => j.GetName(It.IsAny <int>())) .Returns(formModel.JournalName); PublicationsController publicationsController = new PublicationsController(null, discoveryService.Object, journalService.Object, null); publicationsController.ModelState.AddModelError(string.Empty, "Error"); // Act IActionResult result = publicationsController.Create(journalId, formModel); // Assert Assert.IsType <ViewResult>(result); object model = (result as ViewResult).Model; Assert.IsType <PublicationFormViewModel>(model); PublicationFormViewModel returnModel = model as PublicationFormViewModel; this.AssertPublicationFormViewModel(formModel, returnModel); }
private void AssertPublicationFormViewModel(PublicationFormViewModel expected, PublicationFormViewModel actual) { Assert.Equal(expected.JournalName, actual.JournalName); Assert.Equal(expected.DiscoveryId, actual.DiscoveryId); this.AssertPublications(expected.Publication, actual.Publication); this.AssertDiscoveriesSelectList(actual.Discoveries); }
public IActionResult Create(int id) { PublicationFormViewModel model = new PublicationFormViewModel(); this.PopulateCreateViewModel(id, model); return(View(model)); }
public void CreatePost_WithExistingPublicationFromJournalForDiscovery_ShouldReturnCorrectViewModel() { // Arrange Mock <IDiscoveryService> discoveryService = new Mock <IDiscoveryService>(); Mock <IJournalService> journalService = new Mock <IJournalService>(); Mock <IPublicationService> publicationService = new Mock <IPublicationService>(); Mock <ITempDataDictionary> tempData = new Mock <ITempDataDictionary>(); PublicationFormViewModel formModel = this.GetPublicationFormViewModel(); const int journalId = 1; const string discoveryName = "Fake Discovery Name"; discoveryService .Setup(d => d.DiscoveryDropdown(It.IsAny <int>())) .Returns(this.GetDiscoveriesDropdown()); discoveryService .Setup(d => d.GetName(It.IsAny <int>())) .Returns(discoveryName); journalService .Setup(j => j.GetName(It.IsAny <int>())) .Returns(formModel.JournalName); publicationService .Setup(p => p.TitleExists(It.IsAny <string>())) .Returns(false); publicationService .Setup(p => p.Exists(It.IsAny <int>(), It.IsAny <int>())) .Returns(true); string errorMessage = null; tempData .SetupSet(t => t[WebConstants.TempDataErrorMessage] = It.IsAny <string>()) .Callback((string key, object message) => errorMessage = message as string); PublicationsController publicationsController = new PublicationsController(publicationService.Object, discoveryService.Object, journalService.Object, null); publicationsController.TempData = tempData.Object; // Act IActionResult result = publicationsController.Create(journalId, formModel); // Assert Assert.IsType <ViewResult>(result); object model = (result as ViewResult).Model; Assert.IsType <PublicationFormViewModel>(model); PublicationFormViewModel returnModel = model as PublicationFormViewModel; this.AssertPublicationFormViewModel(formModel, returnModel); Assert.Equal(string.Format(WebConstants.PublicationFromJournalExists, formModel.JournalName, discoveryName), errorMessage); }
public void CreatePost_WithSuccessfullyCreatedPublication_ShouldReturnRedirectResult() { // Arrange Mock <IPublicationService> publicationService = new Mock <IPublicationService>(); Mock <ITempDataDictionary> tempData = new Mock <ITempDataDictionary>(); Mock <UserManager <User> > userManager = UserManagerMock.New; const int journalId = 1; publicationService .Setup(p => p.TitleExists(It.IsAny <string>())) .Returns(false); publicationService .Setup(p => p.Exists(It.IsAny <int>(), It.IsAny <int>())) .Returns(false); publicationService .Setup(p => p.Create( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>())) .Returns(journalId); userManager .Setup(u => u.GetUserId(It.IsAny <ClaimsPrincipal>())) .Returns("1"); string successmessage = null; tempData .SetupSet(t => t[WebConstants.TempDataSuccessMessage] = It.IsAny <string>()) .Callback((string key, object message) => successmessage = message as string); PublicationFormViewModel formModel = this.GetPublicationFormViewModel(); PublicationsController publicationsController = new PublicationsController(publicationService.Object, null, null, userManager.Object); publicationsController.TempData = tempData.Object; // Act IActionResult result = publicationsController.Create(journalId, formModel); // Assert Assert.IsType <RedirectToActionResult>(result); RedirectToActionResult redirectResult = result as RedirectToActionResult; this.AssertRedirect(journalId, redirectResult); Assert.Equal(string.Format(WebConstants.SuccessfullEntityOperation, Publication, WebConstants.Added), successmessage); }
public IActionResult Create(int id, PublicationFormViewModel model) { if (!ModelState.IsValid) { this.PopulateCreateViewModel(id, model); return(View(model)); } if (this.publicationService.TitleExists(model.Publication.Title)) { this.PopulateCreateViewModel(id, model); TempData.AddErrorMessage(string.Format(WebConstants.EntryExists, Publication)); return(View(model)); } if (this.publicationService.Exists(id, model.DiscoveryId)) { this.PopulateCreateViewModel(id, model); string journalName = this.journalService.GetName(id); string discoveryName = this.discoveryService.GetName(model.DiscoveryId); TempData.AddErrorMessage(string.Format(WebConstants.PublicationFromJournalExists, journalName, discoveryName)); return(View(model)); } int authorId = int.Parse(this.userManager.GetUserId(User)); int publicationId = this.publicationService.Create( model.Publication.Title, model.Publication.Content, model.DiscoveryId, id, authorId); if (publicationId <= 0) { return(BadRequest()); } TempData.AddSuccessMessage(string.Format(WebConstants.SuccessfullEntityOperation, Publication, WebConstants.Added)); return(RedirectToAction(Details, Publications, new { id = publicationId, area = string.Empty })); }
public void CreatePost_WithNotSuccessfullyCreatedPublication_ShouldReturnBadRequest() { // Arrange Mock <IJournalService> journalService = new Mock <IJournalService>(); Mock <IPublicationService> publicationService = new Mock <IPublicationService>(); Mock <UserManager <User> > userManager = UserManagerMock.New; const int journalId = 1; publicationService .Setup(p => p.TitleExists(It.IsAny <string>())) .Returns(false); publicationService .Setup(p => p.Exists(It.IsAny <int>(), It.IsAny <int>())) .Returns(false); publicationService .Setup(p => p.Create( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>())) .Returns(-1); userManager .Setup(u => u.GetUserId(It.IsAny <ClaimsPrincipal>())) .Returns("1"); PublicationFormViewModel formModel = this.GetPublicationFormViewModel(); PublicationsController publicationsController = new PublicationsController(publicationService.Object, null, null, userManager.Object); // Act IActionResult result = publicationsController.Create(journalId, formModel); // Assert Assert.IsType <BadRequestResult>(result); }
private void PopulateCreateViewModel(int journalId, PublicationFormViewModel model) { model.JournalName = this.journalService.GetName(journalId); model.Discoveries = this.GetDiscoveryDropdown(journalId); }