public void GetOffer_WithValidId_ShouldReturn200OKAndDataCorectly()
        {
            //Arrange
            TestingEngine.CleanDatabase();
            var userSession = TestingEngine.RegisterUser("peter", "pAssW@rd#123456");
            var offerModel = new OfferModel() { Title = "Title", Description = "Description", InitialPrice = 200, ExpirationDateTime = DateTime.Now.AddDays(5) };
            var httpResultOffer = TestingEngine.CreateOfferHttpPost(userSession.Access_Token, offerModel.Title, offerModel.Description, offerModel.InitialPrice, offerModel.ExpirationDateTime);

          

            // Act 
            var db = new BidSystemDbContext();
            var offerFromDb = db.Offers.FirstOrDefault();
            var bids = new BidModel[]
            {
                new BidModel() { BidPrice = 250, Comment = "Invalid: less than the initioal price" },
            };

            var httpResultBid0 = TestingEngine.CreateBidHttpPost(userSession.Access_Token, offerFromDb.Id, bids[0].BidPrice, bids[0].Comment);

            db.SaveChanges();

            var offerDetailsResponse = TestingEngine.HttpClient.GetAsync("/api/offers/details/" + offerFromDb.Id).Result;
            var offerResponseContent = httpResultOffer.Content.ReadAsAsync<OfferDetailsViewModel>().Result;

            // Assert 
            Assert.AreEqual(HttpStatusCode.OK, offerDetailsResponse.StatusCode);
        }
 public static void CleanDatabase()
 {
     using (var dbContext = new BidSystemDbContext())
     {
         dbContext.Bids.Delete();
         dbContext.Offers.Delete();
         dbContext.Users.Delete();
         dbContext.SaveChanges();
     }
 }
 public static void CleanDatabase()
 {
     using (var dbContext = new BidSystemDbContext())
     {
         dbContext.Bids.Delete();
         dbContext.Offers.Delete();
         dbContext.Users.Delete();
         dbContext.SaveChanges();
     }
 }
Exemplo n.º 4
0
        public IHttpActionResult CreateNewOffer(OfferBindingModel offerModel)
        {
            if (offerModel == null)
            {
                return(this.BadRequest("Invalid offer data."));
            }

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

            var currentUserId = User.Identity.GetUserId();
            var currentUser   = db.Users.FirstOrDefault(u => u.Id == currentUserId);

            if (currentUser == null)
            {
                return(this.Unauthorized());
            }

            Offer offer = new Offer()
            {
                Title              = offerModel.Title,
                Description        = offerModel.Description,
                InitialPrice       = offerModel.InitialPrice,
                ExpirationDateTime = DateTime.Parse(offerModel.ExpirationDateTime),
                SellerId           = currentUserId,
                DatePublished      = DateTime.Now
            };

            db.Offers.Add(offer);
            db.SaveChanges();

            return(CreatedAtRoute(
                       "DefaultApi",
                       new
            {
                id = offer.Id
            },
                       new
            {
                id = offer.Id,
                Seller = currentUser.UserName,
                Message = "Offer created."
            }));
        }
Exemplo n.º 5
0
        public IHttpActionResult CreateBidToExistingOffer(int offerId, BidBindingModel bidModel)
        {
            if (bidModel == null)
            {
                return(this.BadRequest("Invalid bid price."));
            }

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

            var currentUserId = User.Identity.GetUserId();

            if (currentUserId == null)
            {
                return(this.Unauthorized());
            }

            var offer = db.Offers.FirstOrDefault(o => o.Id == offerId);

            if (offer == null)
            {
                return(this.NotFound());
            }

            if (offer.ExpirationDateTime < DateTime.Now)
            {
                return(this.BadRequest("Offer has expired."));
            }

            if (offer.Bids.Count > 0)
            {
                var maxBidForOffer = offer.Bids.Max(b => b.OfferedPrice);
                if (bidModel.BidPrice <= maxBidForOffer)
                {
                    return(this.BadRequest("Your bid should be > " + maxBidForOffer));
                }
            }
            else
            {
                if (bidModel.BidPrice <= offer.InitialPrice)
                {
                    return(this.BadRequest("Your bid should be > " + offer.InitialPrice));
                }
            }

            var bid = new Bid()
            {
                BidderId     = currentUserId,
                DateCreated  = DateTime.Now,
                OfferId      = offer.Id,
                OfferedPrice = bidModel.BidPrice,
                Comment      = bidModel.Comment != null ? bidModel.Comment : null
            };

            offer.Bids.Add(bid);
            db.SaveChanges();

            return(this.Ok(new
            {
                Id = bid.Id,
                Bidder = User.Identity.GetUserName(),
                Message = "Bid created."
            }));
        }