예제 #1
0
        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);
        }
예제 #2
0
        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));
        }
예제 #4
0
        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));
        }
예제 #6
0
        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));
        }
예제 #7
0
 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));
 }
예제 #8
0
        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);
        }