Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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());
        }
Exemple #5
0
        public void CreateTrip_WhenErrorDuringProcess_ShouldRollback()
        {
            var trip        = ModelTestHelper.CreateTrip(-1, "createTripError");
            var tripRepo    = new TripRepository();
            var potRepo     = new PotRepository();
            var mockPotRepo = new Mock <IPotRepository>();

            mockPotRepo.Setup(s => s.SavePot(It.IsAny <Pot>())).Callback(() => potRepo.SavePot(It.IsAny <Pot>()));
            mockPotRepo.SetupGet(s => s.HasErrors).Returns(true);
            mockPotRepo.SetupGet(s => s.Errors).Returns(new List <string>());
            var services = new TripServices(tripRepo, mockPotRepo.Object, new TripParticipantRepository(),
                                            new UserTripRepository(), new PotUserRepository());

            services.CreateTrip(trip, 1);
            var secondServices = new TripServices();

            Assert.IsNull(secondServices.GetTrip(trip.Id));
        }
Exemple #6
0
        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());
        }