public async Task CreateAsync_ReturnsCorrectResponse_WhenModelStateIsNotValid() { //arrange var mystring = new string('*', 600); //add case with invalid author id var invalidQuoteVM = new QuoteCreateViewModel() { AuthorId = 1, Content = mystring }; var invalidQuote = new Quote() { AuthorId = invalidQuoteVM.AuthorId, Content = invalidQuoteVM.Content }; var fakeQuoteRepo = new Mock <IQuoteRepository>(); var fakeAuthorRepo = new Mock <IAuthorRepository>(); var controller = new QuoteController(fakeQuoteRepo.Object, fakeAuthorRepo.Object); controller.ModelState.AddModelError("error", "invalid name"); //act //var result = await controller.CreateAsync(model: null); var result = await controller.CreateAsync(invalidQuoteVM); //assert Assert.IsInstanceOf <BadRequestObjectResult>(result); }
public async Task <IActionResult> CreateAsync([FromBody] QuoteCreateViewModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } //Check if the author exists var author = this.authorRepository.GetById(model.AuthorId); if (author == null) { return(BadRequest(ErrorMessages.InvalidAuthorWhenCreatingQuote)); } var newQuote = new Quote { Content = model.Content, AuthorId = model.AuthorId }; //TODO: Add check if such quote already exists. await this.quoteRepository.AddAsync(newQuote); return(CreatedAtAction(nameof(GetQuoteByIdAsync), new { id = newQuote.Id }, newQuote)); }
// GET: Quotes/Create public IActionResult Create() { ViewData["ApplicationUserId"] = new SelectList(_context.ApplicationUser, "Id", "Id"); QuoteCreateViewModel quoteCreateViewModel = new QuoteCreateViewModel(_context); return(View(quoteCreateViewModel)); }
public async Task CreateAsync_ReturnsCorrectResponse_WhenModelStateIsValid() { //ARRANGE var quoteVM = new QuoteCreateViewModel(); quoteVM.Content = "some content"; quoteVM.AuthorId = 3; var quote = new Quote { Content = quoteVM.Content, AuthorId = quoteVM.AuthorId }; var author = new Author() { FullName = "some author", Id = 3 }; var fakeRepo = new Mock <IQuoteRepository>(); fakeRepo.Setup(x => x.AddAsync(quote)).Returns(Task.CompletedTask); var fakeAuthorRepo = new Mock <IAuthorRepository>(); fakeAuthorRepo.Setup(x => x.GetById(quoteVM.AuthorId)).Returns(author); var controller = new QuoteController(fakeRepo.Object, fakeAuthorRepo.Object); //ACT var taskResult = await controller.CreateAsync(quoteVM); //ASSERT var taskResultContent = taskResult as CreatedAtActionResult; var expectedStatusCode = (int)HttpStatusCode.Created; var routeValue = taskResultContent.RouteValues; var value = taskResultContent.Value; //check if the task result of the controller method is CreatedAtActionResult Assert.IsInstanceOf <CreatedAtActionResult>(taskResult); //Assert that the response in not null Assert.IsNotNull(taskResult); //check if the response code for successfull complete is equal to HttpStatusCode.Created (201) Assert.AreEqual(expectedStatusCode, taskResultContent.StatusCode); //check if returns status Assert.IsNotNull(taskResultContent.StatusCode); //check if the return routeValue is generated Assert.IsNotNull(taskResultContent.RouteValues["id"]); //check if there is a return object value in the CreateAtAction response Assert.IsNotNull(taskResultContent.Value); //check if the return object of the CreateAtAction is Quote class Assert.IsInstanceOf <Quote>(taskResultContent.Value); }
public async Task <IActionResult> Create([Bind("QuoteId,InspirationalQuote,Author,ApplicationUserId")] Quote quote) { if (ModelState.IsValid) { ApplicationUser user = await GetCurrentUserAsync(); quote.ApplicationUserId = user.Id; _context.Add(quote); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } //ViewData["ApplicationUserId"] = new SelectList(_context.ApplicationUser, "Id", "Id", quote.ApplicationUserId); QuoteCreateViewModel quoteCreateViewModel = new QuoteCreateViewModel(_context); quoteCreateViewModel.Quote = quote; return(View(quoteCreateViewModel)); }
public ActionResult Create(Guid jobItemId, Guid jobId) { var job = _jobService.GetJob(jobId); var company = _companyDetailsService.GetCompany(); var jobItem = _jobItemService.GetById(jobItemId); var workTypeListItemId = _listItemService.GetByType(ListItemType.WorkTypeInvestigation).Id; var investigationWorkItem = jobItem.HistoryItems.Where(i => i.WorkType.Id == workTypeListItemId).FirstOrDefault(); var viewmodel = new QuoteCreateViewModel() { JobItemId = jobItemId, JobId = jobId, OrderNo = job.OrderNo, AdviceNo = job.AdviceNo, Currencies = _currencyService.GetCurrencies().ToSelectList(), CurrencyId = company.DefaultCurrency.Id, Report = investigationWorkItem != null ? investigationWorkItem.Report : String.Empty }; return(View("Create", viewmodel)); }
public ActionResult Create(QuoteCreateViewModel viewmodel) { if (ModelState.IsValid) { var transaction = NHibernateSession.Current.BeginTransaction(); try { var job = _jobService.GetJob(viewmodel.JobId); if (viewmodel.IsIndividual) { var quote = _quoteService.Create(Guid.NewGuid(), job.Customer.Id, viewmodel.OrderNo, viewmodel.AdviceNo, viewmodel.CurrencyId); _quoteItemService.Create( Guid.NewGuid(), quote.Id, viewmodel.JobItemId, viewmodel.Repair, viewmodel.Calibration, viewmodel.Parts, viewmodel.Carriage, viewmodel.Investigation, viewmodel.Report, viewmodel.Days, viewmodel.ItemBER); } else { _quoteItemService.CreatePending( Guid.NewGuid(), job.Customer.Id, viewmodel.JobItemId, viewmodel.Repair, viewmodel.Calibration, viewmodel.Parts, viewmodel.Carriage, viewmodel.Investigation, viewmodel.Report, viewmodel.Days, viewmodel.ItemBER, viewmodel.OrderNo, viewmodel.AdviceNo); } transaction.Commit(); return(RedirectToAction("Details", "Job", new { id = viewmodel.JobId, TabNo = "#tab_3" })); } catch (DomainValidationException dex) { transaction.Rollback(); ModelState.UpdateFromDomain(dex.Result); } finally { transaction.Dispose(); } } return(View("Create", viewmodel)); }
public async Task CreateAsync_ReturnsCorrectResponse_WhenModelStateIsValid_WithInvalidAuthorId() { //arrange var quoteVM = new QuoteCreateViewModel(); quoteVM.Content = "some content"; quoteVM.AuthorId = 3; var quote = new Quote { Content = quoteVM.Content, AuthorId = quoteVM.AuthorId }; Author nonexistentAuthor = null; var fakeRepo = new Mock <IQuoteRepository>(); var fakeAuthorRepo = new Mock <IAuthorRepository>(); fakeAuthorRepo.Setup(x => x.GetById(quoteVM.AuthorId)).Returns(nonexistentAuthor); var controller = new QuoteController(fakeRepo.Object, fakeAuthorRepo.Object); //act var result = await controller.CreateAsync(quoteVM); var badRequestResult = result as BadRequestObjectResult; var neededStatusCode = (int)HttpStatusCode.BadRequest; var neededMessage = "Invalid author."; //assert that retunrs bad request result Assert.IsInstanceOf <BadRequestObjectResult>(result); //assert that returns the correct bad result code 400 Assert.AreEqual(neededStatusCode, badRequestResult.StatusCode); //assert that returns the correct failure message Assert.AreEqual(neededMessage, badRequestResult.Value); }