public void Credit_WhenErrorDuringUpdate_ShouldRollback() { var pot = ModelTestHelper.CreatePot(-1, 1, amount: 200); var potRepo = new PotRepository(); potRepo.SavePot(pot); Assert.IsFalse(potRepo.HasErrors); var potUser = ModelTestHelper.CreatePotUser(1, pot.Id, amount: 0, targetAmount: 200); var potUserRepo = new PotUserRepository(); potUserRepo.SavePotUser(potUser); Assert.IsFalse(potUserRepo.HasErrors); var mockPotRepo = new Mock <IPotRepository>(); mockPotRepo.SetupGet(s => s.HasErrors).Returns(true); mockPotRepo.SetupGet(s => s.Errors).Returns(new List <string> { "an error" }); var services = new PotServices(mockPotRepo.Object, new PotUserRepository()); services.Credit(pot, 1, 200); Assert.IsTrue(services.HasErrors); services = new PotServices(); var dbPot = services.GetPot(pot.Id); Assert.IsNotNull(dbPot); Assert.AreEqual(200, dbPot.CurrentAmount); Assert.AreEqual(1, dbPot.Participants.Count()); var member = dbPot.Participants.First(); Assert.IsNotNull(member); Assert.AreEqual(0, member.Amount); }
public void Credit_WhenValid_ShouldCommit() { var pot = ModelTestHelper.CreatePot(-1, 1, amount: 200); var potRepo = new PotRepository(); potRepo.SavePot(pot); Assert.IsFalse(potRepo.HasErrors); var potUser = ModelTestHelper.CreatePotUser(1, pot.Id, amount: 0, targetAmount: 200); var potUserRepo = new PotUserRepository(); potUserRepo.SavePotUser(potUser); Assert.IsFalse(potUserRepo.HasErrors); var services = new PotServices(); services.Credit(pot, 1, 200); Assert.IsFalse(services.HasErrors); var dbPot = services.GetPot(pot.Id); Assert.IsNotNull(dbPot); Assert.AreEqual(400, dbPot.CurrentAmount); Assert.AreEqual(1, dbPot.Participants.Count()); var member = dbPot.Participants.FirstOrDefault(); Assert.IsNotNull(member); Assert.AreEqual(200, member.Amount); Assert.IsTrue(member.HasPayed); }
public void UpdatePrice_WhenValid_ShouldCommit() { var trip = ModelTestHelper.CreateTrip(-1, "UpdatePriceValid", 1000, maxNbPeople: 30); var services = new TripServices(); services.CreateTrip(trip, 1); Assert.IsFalse(services.HasErrors); var reloadedTrip = services.GetTrip(trip.Id); Assert.IsNotNull(reloadedTrip); Assert.AreEqual(1, reloadedTrip.Participants.Count()); services.UpdatePrice(reloadedTrip, 2000.26); reloadedTrip = services.GetTrip(trip.Id); Assert.IsNotNull(reloadedTrip); Assert.AreEqual(2000.26, reloadedTrip.Price); Assert.IsNotNull(reloadedTrip.TripPot); Assert.AreEqual(2000.26, reloadedTrip.TripPot.TargetAmount); var potUser = new PotUserRepository().GetPotUser(reloadedTrip.TripPot.Id, 1); Assert.IsNotNull(potUser); Assert.AreEqual(2000.26 / reloadedTrip.NumberMaxOfPeople, potUser.TargetAmount); var userTrip = new UserTripRepository().GetUserTrip(1, trip.TripName); Assert.IsNotNull(userTrip); Assert.AreEqual(2000.26, userTrip.TripAmount); }
public void Credit_WhenException_ShouldRollback() { var pot = ModelTestHelper.CreatePot(-1, 1, amount: 200); var potRepo = new PotRepository(); potRepo.SavePot(pot); Assert.IsFalse(potRepo.HasErrors); var potUser = ModelTestHelper.CreatePotUser(1, pot.Id, amount: 0, targetAmount: 200); var potUserRepo = new PotUserRepository(); potUserRepo.SavePotUser(potUser); Assert.IsFalse(potUserRepo.HasErrors); var mockPotRepo = new Mock <IPotRepository>(); mockPotRepo.Setup(s => s.UpdatePot(It.IsAny <Pot>())).Throws(new Exception("Exception")); var services = new PotServices(mockPotRepo.Object, new PotUserRepository()); services.Credit(pot, 1, 200); Assert.IsTrue(services.HasErrors); services = new PotServices(); var dbPot = services.GetPot(pot.Id); Assert.IsNotNull(dbPot); Assert.AreEqual(200, dbPot.CurrentAmount); Assert.AreEqual(1, dbPot.Participants.Count()); var member = dbPot.Participants.First(); Assert.IsNotNull(member); Assert.AreEqual(0, member.Amount); }
public void UpdatePrice_WhenError_ShouldRollback() { var trip = ModelTestHelper.CreateTrip(-1, "UpdatePriceError", 1000, maxNbPeople: 30); var services = new TripServices(); services.CreateTrip(trip, 1); Assert.IsFalse(services.HasErrors); var reloadedTrip = services.GetTrip(trip.Id); Assert.IsNotNull(reloadedTrip); Assert.AreEqual(1, reloadedTrip.Participants.Count()); var mockTripRepo = new Mock <ITripRepository>(); mockTripRepo.Setup(s => s.UpdateTrip(reloadedTrip)).Callback(() => new TripRepository().UpdateTrip(reloadedTrip)); mockTripRepo.SetupGet(s => s.HasErrors).Returns(true); mockTripRepo.SetupGet(s => s.Errors).Returns(new List <string>()); var secondServices = new TripServices(mockTripRepo.Object, new PotRepository(), new TripParticipantRepository(), new UserTripRepository(), new PotUserRepository()); secondServices.UpdatePrice(trip, 2000.26); Assert.IsTrue(secondServices.HasErrors); reloadedTrip = services.GetTrip(trip.Id); Assert.IsNotNull(reloadedTrip); Assert.AreEqual(1000, reloadedTrip.Price); Assert.IsNotNull(reloadedTrip.TripPot); Assert.AreEqual(1000, reloadedTrip.TripPot.TargetAmount); var potUser = new PotUserRepository().GetPotUser(reloadedTrip.TripPot.Id, 1); Assert.IsNotNull(potUser); Assert.AreEqual(1000 / (double)reloadedTrip.NumberMaxOfPeople, potUser.TargetAmount); var userTrip = new UserTripRepository().GetUserTrip(1, trip.TripName); Assert.IsNotNull(userTrip); Assert.AreEqual(1000, userTrip.TripAmount); }
public void UpdateAllowedNumberOfPeople_WhenException_ShouldRollback() { var trip = ModelTestHelper.CreateTrip(-1, "UpdateNbPeopleException", 1000, maxNbPeople: 30); var services = new TripServices(); services.CreateTrip(trip, 1); Assert.IsFalse(services.HasErrors); var reloadedTrip = services.GetTrip(trip.Id); Assert.IsNotNull(reloadedTrip); Assert.AreEqual(1, reloadedTrip.Participants.Count()); var mockTripRepo = new Mock <ITripRepository>(); mockTripRepo.Setup(s => s.UpdateTrip(reloadedTrip)).Throws(new Exception("ExceptionForTest")); var secondServices = new TripServices(mockTripRepo.Object, new PotRepository(), new TripParticipantRepository(), new UserTripRepository(), new PotUserRepository()); secondServices.UpdateAllowedNumberOfPeople(trip, 50); Assert.IsTrue(secondServices.HasErrors); reloadedTrip = services.GetTrip(trip.Id); Assert.IsNotNull(reloadedTrip); Assert.AreEqual(30, reloadedTrip.NumberMaxOfPeople); var potUser = new PotUserRepository().GetPotUser(reloadedTrip.TripPot.Id, 1); Assert.IsNotNull(potUser); Assert.AreEqual(reloadedTrip.Price / 30, potUser.TargetAmount); }
public void DeleteTrip_WhenValid_ShouldCommit() { var trip = ModelTestHelper.CreateTrip(-1, "deleteTripCommit"); var services = new TripServices(); services.CreateTrip(trip, 1); Assert.IsFalse(services.HasErrors); var reloadedTrip = services.GetTrip(trip.Id); Assert.IsNotNull(reloadedTrip); var pot = reloadedTrip.TripPot; Assert.IsNotNull(pot); var participants = reloadedTrip.Participants; Assert.AreEqual(1, participants.Count()); var potUsers = pot.Participants; Assert.AreEqual(1, potUsers.Count()); var tripRepo = new TripRepository(); var potRepo = new PotRepository(); var userTripRepo = new UserTripRepository(); var potUserRepo = new PotUserRepository(); var tripParticipantRepo = new TripParticipantRepository(); services.DeleteTrip(reloadedTrip); Assert.IsFalse(services.HasErrors); Assert.IsNull(tripRepo.GetTrip(reloadedTrip.Id)); Assert.IsNull(potRepo.GetPot(pot.Id)); Assert.AreEqual(0, userTripRepo.GetUserTripsByTrip(reloadedTrip.TripName).Count()); Assert.AreEqual(0, potUserRepo.GetPotUsers(pot.Id).Count()); Assert.AreEqual(0, tripParticipantRepo.GetTripParticipants(reloadedTrip.Id).Count()); }
public void UpdateAllowedNumberOfPeople_WhenValid_ShouldCommit() { var trip = ModelTestHelper.CreateTrip(-1, "UpdateNbPeopleValid", 1000, maxNbPeople: 30); var services = new TripServices(); services.CreateTrip(trip, 1); Assert.IsFalse(services.HasErrors); var reloadedTrip = services.GetTrip(trip.Id); Assert.IsNotNull(reloadedTrip); Assert.AreEqual(1, reloadedTrip.Participants.Count()); services.UpdateAllowedNumberOfPeople(reloadedTrip, 50); reloadedTrip = services.GetTrip(trip.Id); Assert.IsNotNull(reloadedTrip); Assert.AreEqual(50, reloadedTrip.NumberMaxOfPeople); var potUser = new PotUserRepository().GetPotUser(reloadedTrip.TripPot.Id, 1); Assert.IsNotNull(potUser); Assert.AreEqual(reloadedTrip.Price / 50, potUser.TargetAmount); }
public void Quit_WhenValid_ShouldCommit() { var trip = ModelTestHelper.CreateTrip(-1, "QuitCommit", 1000); var services = new TripServices(); services.CreateTrip(trip, 1); Assert.IsFalse(services.HasErrors); var reloadedTrip = services.GetTrip(trip.Id); Assert.IsNotNull(reloadedTrip); Assert.AreEqual(1, reloadedTrip.Participants.Count()); services.Participate(reloadedTrip, 2, "aSecondUser"); Assert.IsFalse(services.HasErrors, string.Join(",", services.Errors)); Assert.IsNotNull(reloadedTrip.TripPot); var pot = reloadedTrip.TripPot; pot.CurrentAmount = 200; var potRepo = new PotRepository(); potRepo.UpdatePot(pot); Assert.IsFalse(potRepo.HasErrors); var potUserRepo = new PotUserRepository(); var potUser = potUserRepo.GetPotUser(pot.Id, 2); Assert.IsFalse(potUserRepo.HasErrors); Assert.IsNotNull(potUser); potUser.Amount = 200; potUserRepo.UpdatePotUser(potUser); Assert.IsFalse(potUserRepo.HasErrors); services.Quit(reloadedTrip, 2, "aSecondUser"); Assert.IsFalse(services.HasErrors, string.Join(",", services.Errors)); reloadedTrip = services.GetTrip(reloadedTrip.Id); Assert.IsFalse(services.HasErrors, string.Join(",", services.Errors)); Assert.IsNotNull(reloadedTrip); Assert.AreEqual(1, reloadedTrip.Participants.Count()); pot = reloadedTrip.TripPot; Assert.IsNotNull(pot); Assert.AreEqual(0, pot.CurrentAmount); Assert.AreEqual(1, pot.Participants.Count()); Assert.AreEqual(1, new UserTripRepository().GetUserTripsByTrip(reloadedTrip.TripName).Count()); }