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); }
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); }
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); }
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); }
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); }
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); }
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)); }
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); }
public void Setup() { _transactionRepo = new Mock <ITransactionRepository>(); _customerRepo = new Mock <ICustomerRepository>(); _testObject = new RewardsService(_transactionRepo.Object, new RewardPointsCalculator(), _customerRepo.Object); }