예제 #1
0
        public async Task Post_ShouldReturnOk()
        {
            // Arrange
            var model = new DealCreateViewModel {
                BuyerAccountUuid = Guid.NewGuid(), PublisherUuid = Guid.NewGuid(), DealKey = "JingWu", DealType = "Fixed"
            };
            var deal = new Deal();

            Mock.Mock <IAccountService>().Setup(x => x.GetAccount(model.BuyerAccountUuid.Value))
            .Returns(Task.FromResult(new BuyerAccount()));
            Mock.Mock <IPublisherService>().Setup(x => x.GetPublisher(model.PublisherUuid.Value))
            .Returns(Task.FromResult(new Publisher()));
            Mock.Mock <ICurrencyService>().Setup(x => x.GetCurrency(It.IsAny <string>()))
            .Returns(Task.FromResult(new Currency()));
            Mock.Mock <IDealService>().Setup(x => x.CreateDeal(It.IsAny <Deal>()))
            .Returns(Task.FromResult(deal));
            Mock.Mock <IDealService>().Setup(x => x.GetDeal(It.IsAny <Guid>()))
            .Returns(Task.FromResult(deal));

            // Act
            var retVal = await Controller.Post(model);

            // Assert
            Assert.That(retVal, Is.Not.Null);
            Assert.That(retVal, Is.TypeOf <CreatedAtRouteNegotiatedContentResult <DealViewModel> >());
            Mock.Mock <IDealService>().Verify(x => x.CreateDeal(It.IsAny <Deal>()), Times.Once);
        }
예제 #2
0
        public async Task <IHttpActionResult> Post(DealCreateViewModel model)
        {
            if (model == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var buyerAccount = await _accountService.GetAccount(model.BuyerAccountUuid.GetValueOrDefault(Guid.Empty)).ConfigureAwait(false);

            if (buyerAccount == null)
            {
                return(BadRequest("The specified buyer account was not found."));
            }

            var publisher = await _publisherService.GetPublisher(model.PublisherUuid.GetValueOrDefault(Guid.Empty)).ConfigureAwait(false);

            if (publisher == null)
            {
                return(BadRequest("The specified publisher was not found."));
            }

            // map
            var deal = _mapping.Map <Deal>(model);

            deal.BuyerAccountId = buyerAccount.BuyerAccountId;
            deal.PublisherId    = publisher.PartnerId;
            deal.PublishersName = publisher.PublisherName;

            try
            {
                deal = await _dealService.CreateDeal(deal).ConfigureAwait(false);       // create

                deal = await _dealService.GetDeal(deal.DealUuid).ConfigureAwait(false); // reload

                var dealViewModel = _mapping.Map <DealViewModel>(deal);
                return(CreatedAtRoute("Deals.GetById", new { Id = dealViewModel.DealUuid }, dealViewModel));
            }
            catch (BrandscreenException ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(BadRequest(ModelState));
            }
        }
예제 #3
0
        public async Task <IActionResult> Create(DealCreateViewModel input)
        {
            var user = await this.userManager.GetUserAsync(this.User);

            var userId = await this.userManager.GetUserIdAsync(user);

            input.UserId = userId;

            if (!this.ModelState.IsValid || input.UserId == null)
            {
                return(this.View(input));
            }

            Stage stage = (Stage)Enum.ToObject(typeof(AccountType), input.Stage);

            var dealId = await this.dealsService.CreateAsync(input.Name, input.UserId, input.Description, stage, input.AccountId);

            this.TempData["InfoMessage"] = "Deal created!";
            return(this.Redirect("/Deals/GetAll"));
        }