Esempio n. 1
0
        public async Task UpdateItemBidAsyncThowsBadRequestException()
        {
            var mockLogger       = new Mock <ILogger <ItemController> >();
            var item             = GetMockItemBid();
            var user             = GetMockUser();
            var createBidRequest = new CreateBidRequest();

            createBidRequest.BidAmount = 450;
            var itemBidStatus = new ItemBidStatus();

            itemBidStatus.CanCreateBid = false;
            itemBidStatus.ErrorMessage = "Auction End Date expired";
            var itemRepository = new Mock <IItemRepository>();

            itemRepository.Setup(t => t.GetItemAsync(It.IsAny <int>())).Returns(Task.FromResult(item));
            itemRepository.Setup(u => u.GetItemBidStatus(It.IsAny <int>())).Returns(Task.FromResult(itemBidStatus));

            var userRepository = new Mock <IUserRepository>();

            userRepository.Setup(u => u.GetUserAsync(It.IsAny <int>())).Returns(Task.FromResult(user));
            var itemController = new ItemController(mockLogger.Object, itemRepository.Object, userRepository.Object);
            var controller     = await itemController.UpdateItemBidAsync(createBidRequest, "1", 2);

            var result = Assert.IsType <BadRequestObjectResult>(controller.Result);

            Assert.Equal(400, result.StatusCode);
            Assert.Equal("Auction End Date expired", result.Value);
        }
Esempio n. 2
0
        public async Task UpdateItemBidAsyncReturnsItemResponse()
        {
            var mockLogger       = new Mock <ILogger <ItemController> >();
            var item             = GetMockItemBid();
            var user             = GetMockUser();
            var createBidRequest = new CreateBidRequest();

            createBidRequest.BidAmount = 450;
            var itemBidStatus = new ItemBidStatus();

            itemBidStatus.CanCreateBid = true;
            itemBidStatus.ErrorMessage = string.Empty;
            var itemRepository = new Mock <IItemRepository>();

            itemRepository.Setup(t => t.GetItemAsync(It.IsAny <int>())).Returns(Task.FromResult(item));
            itemRepository.Setup(u => u.GetItemBidStatus(It.IsAny <int>())).Returns(Task.FromResult(itemBidStatus));
            itemRepository.Setup(s => s.CreateBid(It.IsAny <CreateBidRequest>())).Returns(Task.FromResult(item));

            var userRepository = new Mock <IUserRepository>();

            userRepository.Setup(u => u.GetUserAsync(It.IsAny <int>())).Returns(Task.FromResult(user));
            var itemController = new ItemController(mockLogger.Object, itemRepository.Object, userRepository.Object);
            var controller     = await itemController.UpdateItemBidAsync(createBidRequest, "1", 2);

            var actionResult = Assert.IsType <OkObjectResult>(controller.Result);
            var result       = actionResult.Value as ItemResponse;

            Assert.NotNull(result);
            Assert.Equal(2, result.Id);
            Assert.Equal(2346, result.ItemNumber);
            Assert.Equal("Iphone X 512 GB White", result.Description);
            Assert.Single(result.Bids);
            Assert.Equal(450, result.Bids[0].BidAmount);
        }
Esempio n. 3
0
        public async Task <ItemBidStatus> GetItemBidStatus(int id)
        {
            var itemEntity = await _edappContext.Item.FindAsync(id);

            var itemBidStatus = new ItemBidStatus();

            if (itemEntity != null)
            {
                if (itemEntity.AuctionEndDate > DateTime.Now)
                {
                    itemBidStatus.CanCreateBid = true;
                    itemBidStatus.ErrorMessage = string.Empty;
                }
                else
                {
                    itemBidStatus.CanCreateBid = false;
                    itemBidStatus.ErrorMessage = AUCTION_END_DATE_EXPIRED;
                }
            }
            else
            {
                itemBidStatus.CanCreateBid = false;
                itemBidStatus.ErrorMessage = ITEM_NOT_FOUND;
            }

            return(itemBidStatus);
        }