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));
        }
Пример #4
0
        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);
        }