public void AddDonationProgram_ShouldAddNewDonationProgramER() { var mockDonationProgramList = new List <DonationProgram>() { new DonationProgram { DonationProgramId = 1, DonationProgramName = "One", Description = "Maxim one", ImageRef = "An image ref", StartDate = DateTime.Now, EndDate = DateTime.Now, Total = 111 }, new DonationProgram { DonationProgramId = 2, DonationProgramName = "Two", Description = "Maxim two", ImageRef = "An image refs", StartDate = DateTime.Now, EndDate = DateTime.Now, Total = 100 } }; var context = new Mock <RotaractServrerContext>(); #region MockDbSetup DonationProgram var mockDbSet = new Mock <DbSet <DonationProgram> >(); mockDbSet.Setup(s => s.FindAsync(It.IsAny <int>())).Returns(Task.FromResult(new DonationProgram())); mockDbSet.As <IQueryable <DonationProgram> >() .Setup(m => m.Provider) .Returns(mockDonationProgramList.AsQueryable().Provider); mockDbSet.As <IQueryable <DonationProgram> >() .Setup(m => m.Expression) .Returns(mockDonationProgramList.AsQueryable().Expression); mockDbSet.As <IQueryable <DonationProgram> >() .Setup(m => m.ElementType) .Returns(mockDonationProgramList.AsQueryable().ElementType); mockDbSet.As <IQueryable <DonationProgram> >() .Setup(m => m.GetEnumerator()) .Returns(mockDonationProgramList.GetEnumerator()); mockDbSet.Setup(m => m.Add(It.IsAny <DonationProgram>())) .Callback <DonationProgram>((entity) => mockDonationProgramList.Add(entity)); context.Setup(c => c.DonationPrograms) .Returns(mockDbSet.Object); #endregion var repoDonationDataAccess = new RotaractRepository(context.Object); var donationProgram = new DonationProgram { DonationProgramId = 3, DonationProgramName = "Three", Description = "Maxim three", ImageRef = "An image refsss", StartDate = DateTime.Now, EndDate = DateTime.Now, Total = 333 }; repoDonationDataAccess.AddDonationProgram(donationProgram); //Asserts Assert.IsTrue(mockDonationProgramList.Any(x => x.DonationProgramId == 3)); Assert.IsTrue(mockDonationProgramList.Any(x => x.DonationProgramName.Equals("Three"))); Assert.IsTrue(mockDonationProgramList.Any(x => x.Total == 0)); }
public void DeleteDonationProgram_ShouldDeleteTheDonationProgramER() { var mockDonationPrograms = new List <DonationProgram>() { new DonationProgram { DonationProgramId = 1, DonationProgramName = "One", Description = "Maxim one", ImageRef = "An image ref", StartDate = DateTime.Now, EndDate = DateTime.Now, Total = 111 }, new DonationProgram { DonationProgramId = 2, DonationProgramName = "Two", Description = "Maxim two", ImageRef = "An image refs", StartDate = DateTime.Now, EndDate = DateTime.Now, Total = 112 }, new DonationProgram { DonationProgramId = 3, DonationProgramName = "Three", Description = "Maxim three", ImageRef = "An image refss", StartDate = DateTime.Now, EndDate = DateTime.Now, Total = 113 } }; var mockDbSet = new Mock <DbSet <DonationProgram> >(); var context = new Mock <RotaractServrerContext>(); mockDbSet.Setup(s => s.FindAsync(It.IsAny <Guid>())).Returns(Task.FromResult(new DonationProgram())); mockDbSet.As <IQueryable <DonationProgram> >() .Setup(m => m.Provider) .Returns(mockDonationPrograms.AsQueryable().Provider); mockDbSet.As <IQueryable <DonationProgram> >() .Setup(m => m.Expression) .Returns(mockDonationPrograms.AsQueryable().Expression); mockDbSet.As <IQueryable <DonationProgram> >() .Setup(m => m.ElementType) .Returns(mockDonationPrograms.AsQueryable().ElementType); mockDbSet.As <IQueryable <DonationProgram> >() .Setup(m => m.GetEnumerator()) .Returns(mockDonationPrograms.GetEnumerator()); mockDbSet.Setup(m => m.Remove(It.IsAny <DonationProgram>())) .Callback <DonationProgram>((entity) => mockDonationPrograms.Remove(entity)); context.Setup(c => c.DonationPrograms) .Returns(mockDbSet.Object); var repoDonationProgramDataAccess = new RotaractRepository(context.Object); int idToDelete = 1; repoDonationProgramDataAccess.DeleteDonationProgram(idToDelete); //context.VerifyGet(x => x.DonationPrograms, Times.Exactly(2)); //context.Verify(x => x.SaveChanges(), Times.Once()); //Asserts Assert.AreEqual(mockDonationPrograms.Count, 2); Assert.IsFalse(mockDonationPrograms.Any(x => x.DonationProgramId == idToDelete)); }
public void MakeDonation_ShouldAllowAnUserToDonateER() { //Arrange var mockExpected = new List <DonationProgram>() { new DonationProgram { DonationProgramId = 1, DonationProgramName = "One", Description = "Maxim one", ImageRef = "An image ref", StartDate = DateTime.Now, EndDate = DateTime.Now, Total = 111 }, }; var mockDonationsExpected = new List <Donation>() { new Donation { DonationId = 1, UserId = 1234, DonaitonProgram_auditId = 1, Amount = 20 }, }; var mockAuditExpected = new List <DonationProgram_Audit>() { new DonationProgram_Audit { DonationProgram_AuditId = 1, DonationProgramId = 1, DonationProgramName = "One", Description = "Maxim one", ImageRef = "An image ref", StartDate = DateTime.Now, EndDate = DateTime.Now, Total = 131, Updated_at = DateTime.Now, Operation = "UPDATED" }, }; //refer to a mock of the DbContext var context = new Mock <RotaractServrerContext>(); //mock the DB tables respecting the flow of data #region DonationProgram var mockDbSet = new Mock <DbSet <DonationProgram> >(); mockDbSet.Setup(s => s.FindAsync(It.IsAny <int>())).Returns(Task.FromResult(new DonationProgram())); mockDbSet.As <IQueryable <DonationProgram> >() .Setup(m => m.Provider) .Returns(mockExpected.AsQueryable().Provider); mockDbSet.As <IQueryable <DonationProgram> >() .Setup(m => m.Expression) .Returns(mockExpected.AsQueryable().Expression); mockDbSet.As <IQueryable <DonationProgram> >() .Setup(m => m.ElementType) .Returns(mockExpected.AsQueryable().ElementType); mockDbSet.As <IQueryable <DonationProgram> >() .Setup(m => m.GetEnumerator()) .Returns(mockExpected.GetEnumerator()); mockDbSet.Setup(m => m.Add(It.IsAny <DonationProgram>())) .Callback <DonationProgram>((entity) => mockExpected.Add(entity)); context.Setup(c => c.DonationPrograms) .Returns(mockDbSet.Object); #endregion #region DonationProgram_Audit var mockDbSet2 = new Mock <DbSet <DonationProgram_Audit> >(); mockDbSet2.Setup(s => s.FindAsync(It.IsAny <int>())).Returns(Task.FromResult(new DonationProgram_Audit())); mockDbSet2.As <IQueryable <DonationProgram_Audit> >() .Setup(m => m.Provider) .Returns(mockExpected.AsQueryable().Provider); mockDbSet2.As <IQueryable <DonationProgram_Audit> >() .Setup(m => m.Expression) .Returns(mockExpected.AsQueryable().Expression); mockDbSet2.As <IQueryable <DonationProgram_Audit> >() .Setup(m => m.ElementType) .Returns(mockExpected.AsQueryable().ElementType); mockDbSet2.As <IQueryable <DonationProgram_Audit> >() .Setup(m => m.GetEnumerator()) .Returns(mockAuditExpected.GetEnumerator()); mockDbSet2.Setup(m => m.Add(It.IsAny <DonationProgram_Audit>())) .Callback <DonationProgram_Audit>((entity) => mockAuditExpected.Add(entity)); context.Setup(c => c.DonationProgramAudits) .Returns(mockDbSet2.Object); #endregion #region Donation var mockDbSet3 = new Mock <DbSet <Donation> >(); mockDbSet3.Setup(s => s.FindAsync(It.IsAny <int>())).Returns(Task.FromResult(new Donation())); mockDbSet3.As <IQueryable <Donation> >() .Setup(m => m.Provider) .Returns(mockExpected.AsQueryable().Provider); mockDbSet3.As <IQueryable <Donation> >() .Setup(m => m.Expression) .Returns(mockExpected.AsQueryable().Expression); mockDbSet3.As <IQueryable <Donation> >() .Setup(m => m.ElementType) .Returns(mockExpected.AsQueryable().ElementType); mockDbSet3.As <IQueryable <Donation> >() .Setup(m => m.GetEnumerator()) .Returns(mockDonationsExpected.GetEnumerator()); mockDbSet3.Setup(m => m.Add(It.IsAny <Donation>())) .Callback <Donation>((entity) => mockDonationsExpected.Add(entity)); context.Setup(c => c.Donations) .Returns(mockDbSet3.Object); #endregion //refer to the the repo which takes a reference to the mock of the Db Context var repoDonationDataAccess = new RotaractRepository(context.Object); //final setup of data for calling the repo method and analyse the results const int AmountToDonate = 20; const int UserID = 1234; var DonationDto = new DonationDto { donationProgram = mockExpected[0], amount = AmountToDonate }; //Act repoDonationDataAccess.Donate(DonationDto, UserID); //Asserts Assert.IsTrue(mockExpected.Any(x => x.Total == 131)); }
public void Register_ShouldRegisterNewUserER() { var mockUser = new List <User> { new User { UserId = 112, Username = "******", FirstName = "Frank", LastName = "Sinatra", DistrictNumber = 1, Email = "*****@*****.**", Password = "******", Role = "Customer" } }; var districtNo = new List <DistrictNo> { new DistrictNo { DistrictNumber = 0 }, new DistrictNo { DistrictNumber = 1 } }; var context = new Mock <RotaractServrerContext>(); var mockDbSet = new Mock <DbSet <User> >(); mockDbSet.Setup(s => s.FindAsync(It.IsAny <int>())).Returns(Task.FromResult(new User())); mockDbSet.As <IQueryable <User> >() .Setup(m => m.Provider) .Returns(mockUser.AsQueryable().Provider); mockDbSet.As <IQueryable <User> >() .Setup(m => m.Expression) .Returns(mockUser.AsQueryable().Expression); mockDbSet.As <IQueryable <User> >() .Setup(m => m.ElementType) .Returns(mockUser.AsQueryable().ElementType); mockDbSet.As <IQueryable <User> >() .Setup(m => m.GetEnumerator()) .Returns(mockUser.GetEnumerator()); mockDbSet.Setup(m => m.Add(It.IsAny <User>())) .Callback <User>((entity) => mockUser.Add(entity)); context.Setup(c => c.Users) .Returns(mockDbSet.Object); var mockDbSet2 = new Mock <DbSet <DistrictNo> >(); mockDbSet2.Setup(s => s.FindAsync(It.IsAny <int>())).Returns(Task.FromResult(new DistrictNo())); mockDbSet2.As <IQueryable <DistrictNo> >() .Setup(m => m.Provider) .Returns(mockUser.AsQueryable().Provider); mockDbSet2.As <IQueryable <DistrictNo> >() .Setup(m => m.Expression) .Returns(mockUser.AsQueryable().Expression); mockDbSet2.As <IQueryable <DistrictNo> >() .Setup(m => m.ElementType) .Returns(mockUser.AsQueryable().ElementType); mockDbSet2.As <IQueryable <DistrictNo> >() .Setup(m => m.GetEnumerator()) .Returns(districtNo.GetEnumerator()); mockDbSet2.Setup(m => m.Add(It.IsAny <DistrictNo>())) .Callback <DistrictNo>((entity) => districtNo.Add(entity)); context.Setup(c => c.DistrictNos) .Returns(mockDbSet2.Object); //Arrange var repoDataAccess = new RotaractRepository(context.Object); var userExpected = new User { UserId = 112, Username = "******", FirstName = "Frank", LastName = "Sinatra", DistrictNumber = 1, Email = "*****@*****.**", Password = "******", Role = "Customer" }; //Act repoDataAccess.AddUser(userExpected); //Assert Assert.IsTrue(mockUser.Any(u => u.DistrictNumber == 1)); Assert.AreEqual(mockUser[0].UserId, userExpected.UserId); }