Example #1
0
        public void CreateBud_CallsRepositoryMethod()
        {
            // Arrange
            var      mockRepo = new Mock <IAuktionRepository>();
            var      service  = new AuktionService(mockRepo.Object, null);
            BudModel obj      = null;
            var      bud      = new BiddingViewModel {
                AuktionID = 1, Summa = 2
            };
            var user = new NauktionUser {
                Id = "abcdef"
            };

            mockRepo.Setup(t => t.CreateBudAsync(It.IsAny <BudModel>()))
            .Callback((BudModel o) => obj = o)
            .Returns(Task.CompletedTask).Verifiable();

            // Act
            service.CreateBudAsync(bud, user).GetAwaiter().GetResult();

            // Assert
            Assert.IsNotNull(obj);
            Assert.AreEqual(1, obj.AuktionID);
            Assert.AreEqual(2, obj.Summa);
            Assert.AreEqual(user.Id, obj.Budgivare);
            mockRepo.Verify();
        }
        public async Task CreateBudAsync(BudModel model)
        {
            var formdata = new FormUrlEncodedContent(new Dictionary <string, string>
            {
                [nameof(model.AuktionID)] = model.AuktionID.ToString(),
                [nameof(model.Budgivare)] = model.Budgivare,
                [nameof(model.Summa)]     = model.Summa.ToString()
            });

            HttpResponseMessage response = await _client.PostAsync("bud", formdata);

            response.EnsureSuccessStatusCode();
        }
        public async Task <string> ValidateBud(int auktionID, int summa, NauktionUser budgivare)
        {
            AuktionModel auktion = await GetAuktionAsync(auktionID);

            if (auktion is null)
            {
                return("Auktionen finns inte.");
            }

            if (auktion.IsClosed())
            {
                return("Du kan inte buda på en stängd auktion.");
            }

            if (summa <= auktion.Utropspris)
            {
                return("Budet måste vara större än utropspriset.");
            }

            List <BudModel> budModels = await ListBudsAsync(auktionID);

            BudModel highestBid = budModels.FirstOrDefault();

            if (highestBid is null)
            {
                return(null);
            }

            if (summa <= highestBid.Summa)
            {
                return("Budet måste vara större än det högsta budet.");
            }

            NauktionUser highestBidder = await _userManager.FindByIdAsync(highestBid.Budgivare);

            if (highestBidder?.Id == budgivare.Id)
            {
                return("Du kan inte buda när du har högsta budet.");
            }

            return(null);
        }