Beispiel #1
0
        public async Task Should_Add_All_Transactions()
        {
            var newTransactions = new List <Transaction>()
            {
                new Transaction()
                {
                    Payer     = "NEW PAYER",
                    Points    = 1000,
                    Timestamp = new DateTime(2020, 11, 12, 14, 0, 0, DateTimeKind.Utc)
                },
                new Transaction()
                {
                    Payer     = "NEW PAYER",
                    Points    = 200,
                    Timestamp = new DateTime(2020, 9, 30, 11, 0, 0, DateTimeKind.Utc)
                }
            };

            var service = new RewardsService(_rewardsDbContext, _mapper);
            await service.AddTransactions(newTransactions);

            var newPayerTransactions = await _rewardsDbContext.Transactions.Where(t => t.Payer == "NEW PAYER").ToListAsync();

            Assert.Equal(2, newPayerTransactions.Count);
            Assert.Contains(newPayerTransactions, t => string.Equals(t.Payer, newTransactions[0].Payer) && t.Points == newTransactions[0].Points && t.Timestamp.Equals(newTransactions[0].Timestamp) && t.RemainingPoints == newTransactions[0].Points);
            Assert.Contains(newPayerTransactions, t => string.Equals(t.Payer, newTransactions[1].Payer) && t.Points == newTransactions[1].Points && t.Timestamp.Equals(newTransactions[1].Timestamp) && t.RemainingPoints == newTransactions[1].Points);
        }
Beispiel #2
0
        public async Task Should_Throw_Exception()
        {
            var service   = new RewardsService(_rewardsDbContext, _mapper);
            var exception = await Assert.ThrowsAnyAsync <Exception>(() => service.Spend(1000000));

            Assert.Equal("Invalid transaction! Could not spend all points", exception.Message);
        }
Beispiel #3
0
        public async Task Should_Return_All_Payer_Balances()
        {
            var service       = new RewardsService(_rewardsDbContext, _mapper);
            var payerBalances = await service.GetPayerBalances();

            Assert.Equal(3, payerBalances.Count);
            Assert.Contains(payerBalances, pb => string.Equals(pb.Payer, "DANNON") && pb.Points == 1100);
            Assert.Contains(payerBalances, pb => string.Equals(pb.Payer, "UNILEVER") && pb.Points == 200);
            Assert.Contains(payerBalances, pb => string.Equals(pb.Payer, "MILLER COORS") && pb.Points == 10000);
        }
Beispiel #4
0
        static async Task Main(string[] args)
        {
            var context = new CrowdFunDbContext();

            context.Database.EnsureCreated();

            var BackerService  = new BackerServices(context);
            var ProjectService = new ProjectServices(context);
            var RewardService  = new RewardsService(context);
        }
Beispiel #5
0
        public async Task Should_Spend_Points()
        {
            var service = new RewardsService(_rewardsDbContext, _mapper);
            var spendingTransactions = await service.Spend(5000);

            Assert.Equal(3, spendingTransactions.Count);
            Assert.True(string.Equals(spendingTransactions[0].Payer, mockTransactions[4].Payer) && spendingTransactions[0].Points == -100);
            Assert.True(string.Equals(spendingTransactions[1].Payer, mockTransactions[1].Payer) && spendingTransactions[1].Points == -200);
            Assert.True(string.Equals(spendingTransactions[2].Payer, mockTransactions[3].Payer) && spendingTransactions[2].Points == -4700);
        }
        public void TestInitialize()
        {
            _discountRepositoryMock        = new Mock <IDiscountRepository>();
            _pointsPromotionRepositoryMock = new Mock <IPointsPromotionRepository>();

            _discountRepositoryMock.Setup(m => m.GetDiscountedProducts(It.IsAny <RewardsRequest>())).Returns(getdiscountedProducts());
            _discountRepositoryMock.Setup(m => m.GetProductsInBasket(It.IsAny <RewardsRequest>())).Returns(getProductsInBasket());
            _pointsPromotionRepositoryMock.Setup(m => m.GetProductPoints(It.IsAny <RewardsRequest>())).Returns(getProductPoints());

            _rewardsService = new RewardsService(_discountRepositoryMock.Object, _pointsPromotionRepositoryMock.Object);
        }
Beispiel #7
0
        public async Task Should_Throw_Exception_Adding()
        {
            var newTransactions = new List <Transaction>()
            {
                new Transaction()
                {
                    Payer     = "DANNON",
                    Points    = -100,
                    Timestamp = new DateTime(2020, 9, 12, 14, 0, 0, DateTimeKind.Utc)
                }
            };

            var service   = new RewardsService(_rewardsDbContext, _mapper);
            var exception = await Assert.ThrowsAnyAsync <Exception>(() => service.AddTransactions(newTransactions));

            Assert.Equal("Invalid transaction! Could not spend all points", exception.Message);
        }
Beispiel #8
0
        public ActionResult PlaceOrderForGiftCards()
        {
            JsonResponse jsonResponse = new JsonResponse();

            jsonResponse.errors  = new List <string>();
            jsonResponse.RetCode = "1";  //default to error


            try {
                var requestObject = GetAllCartItems();

                RewardResponse objResponse = new RewardResponse();
                RewardsService objReward   = new RewardsService();
                objResponse = objReward.SendDataToProcess(requestObject);

                if (objResponse.Errors.Count > 0)
                {
                    jsonResponse.errors.Add(objResponse.Errors[0].ShortText);
                }
                else if (objResponse.Account.Memberships.BluegreenRewardsMembership.Returns.Count > 0)
                {
                    if (objResponse.Account.Memberships.BluegreenRewardsMembership.Returns[0].RetCode == "1")
                    {
                        jsonResponse.RetCode = "0";
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(objResponse.Account.Memberships.BluegreenRewardsMembership.Returns[0].CodeDesc))
                        {
                            jsonResponse.errors.Add(objResponse.Account.Memberships.BluegreenRewardsMembership.Returns[0].CodeDesc);
                        }
                        else
                        {
                            jsonResponse.errors.Add("Error While Redeeming Rewards. Please Try Again.");
                        }
                    }
                }
            }
            catch (Exception ex) {
                jsonResponse.errors.Add("Error: " + ex.Message);
            }

            return(Json(jsonResponse));
        }
Beispiel #9
0
        public async Task Should_Deduct_Points_Correctly_Adding()
        {
            var newTransactions = new List <Transaction>()
            {
                new Transaction()
                {
                    Payer     = "DANNON",
                    Points    = -200,
                    Timestamp = new DateTime(2020, 11, 2, 15, 0, 0, DateTimeKind.Utc)
                }
            };

            var service = new RewardsService(_rewardsDbContext, _mapper);
            await service.AddTransactions(newTransactions);

            var dannonTransactions = await _rewardsDbContext.Transactions.Where(t => t.Payer == "DANNON").ToListAsync();

            Assert.Contains(dannonTransactions, t => string.Equals(t.Payer, newTransactions[0].Payer) && t.Points == newTransactions[0].Points && t.Timestamp.Equals(newTransactions[0].Timestamp) && t.RemainingPoints == 0);
            Assert.Contains(dannonTransactions, t => string.Equals(t.Payer, mockTransactions[0].Payer) && t.Points == mockTransactions[0].Points && t.Timestamp.Equals(mockTransactions[0].Timestamp) && t.RemainingPoints == mockTransactions[0].Points - 100);
            Assert.Contains(dannonTransactions, t => string.Equals(t.Payer, mockTransactions[4].Payer) && t.Points == mockTransactions[4].Points && t.Timestamp.Equals(mockTransactions[4].Timestamp) && t.RemainingPoints == mockTransactions[4].Points - 300);
        }
Beispiel #10
0
 public void Setup()
 {
     _transactionRepo = new Mock <ITransactionRepository>();
     _customerRepo    = new Mock <ICustomerRepository>();
     _testObject      = new RewardsService(_transactionRepo.Object, new RewardPointsCalculator(), _customerRepo.Object);
 }